|
EclipseLink1.0 - 20080707 API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.persistence.internal.sessions.AbstractSession
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
org.eclipse.persistence.sessions.server.ServerSession
public class ServerSession
Implementation of Server INTERNAL: The public interface should be used.
Purpose: A single session that supports multiple user/clients connection at the same time.
Description: This session supports a shared session that can be used by multiple users or clients in a three-tiered application. It brokers client sessions to allow read and write access through a unified object cache. The server session provides a shared read only database connection that is used by all of its client for reads. All changes to objects and the database must be done through a unit of work acquired from the client session, this allows the changes to occur in a transactional object space and under a exclusive database connection.
Responsibilities:
ClientSession
,
UnitOfWorkImpl
,
Serialized FormField Summary | |
---|---|
protected java.util.Map |
connectionPools
|
protected ConnectionPolicy |
defaultConnectionPolicy
|
static int |
MAX_WRITE_CONNECTIONS
|
protected int |
maxNumberOfNonPooledConnections
|
static int |
MIN_WRITE_CONNECTIONS
|
static int |
NO_MAX
|
protected int |
numberOfNonPooledConnectionsUsed
|
protected ConnectionPool |
readConnectionPool
|
Fields inherited from class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl |
---|
isLoggedIn |
Fields inherited from class org.eclipse.persistence.internal.sessions.AbstractSession |
---|
accessor, activeCommandThreads, broker, commandManager, commitManager, defaultReferenceMode, eventManager, exceptionHandler, externalTransactionController, identityMapAccessor, integrityChecker, isFinalizersEnabled, isInBroker, isInProfile, isSynchronized, jpaQueries, lastDescriptorAccessed, logSessionString, name, numberOfActiveUnitsOfWork, platform, profiler, project, properties, queries, sessionLog, shouldPropagateChanges, transactionMutex, wasJTSTransactionInternallyStarted |
Fields inherited from interface org.eclipse.persistence.sessions.coordination.CommandProcessor |
---|
LOG_DEBUG, LOG_ERROR, LOG_INFO, LOG_WARNING |
Constructor Summary | |
---|---|
ServerSession()
INTERNAL: Create and return a new default server session. |
|
ServerSession(Login login)
PUBLIC: Create and return a new server session. |
|
ServerSession(Login login,
ConnectionPolicy defaultConnectionPolicy)
PUBLIC: Create and return a new server session. |
|
ServerSession(Login login,
int minNumberOfPooledConnection,
int maxNumberOfPooledConnection)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
ConnectionPolicy defaultConnectionPolicy)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
ConnectionPolicy defaultConnectionPolicy,
Login readLogin)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
ConnectionPolicy defaultConnectionPolicy,
Login readLogin,
Login sequenceLogin)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
int minNumberOfPooledConnection,
int maxNumberOfPooledConnection)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
int minNumberOfPooledConnection,
int maxNumberOfPooledConnection,
Login readLogin)
PUBLIC: Create and return a new server session. |
|
ServerSession(Project project,
int minNumberOfPooledConnection,
int maxNumberOfPooledConnection,
Login readLogin,
Login sequenceLogin)
PUBLIC: Create and return a new server session. |
Method Summary | |
---|---|
void |
acquireClientConnection(ClientSession clientSession)
INTERNAL: Allocate the client's connection resource. |
ClientSession |
acquireClientSession()
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(ConnectionPolicy connectionPolicy)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(ConnectionPolicy connectionPolicy,
java.util.Map properties)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(Login login)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(Login login,
java.util.Map properties)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(java.util.Map properties)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(java.lang.String poolName)
PUBLIC: Return a client session for this server session. |
ClientSession |
acquireClientSession(java.lang.String poolName,
java.util.Map properties)
PUBLIC: Return a client session for this server session. |
Session |
acquireHistoricalSession(AsOfClause clause)
INTERNAL: Acquires a special historical session for reading objects as of a past time. |
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl |
acquireUnitOfWork()
PUBLIC: Return a unit of work for this session. |
void |
addConnectionPool(ConnectionPool pool)
PUBLIC: Connection are pooled to share and restrict the number of database connections. |
void |
addConnectionPool(java.lang.String poolName,
Login login,
int minNumberOfConnections,
int maxNumberOfConnections)
PUBLIC: Add the connection pool. |
org.eclipse.persistence.internal.databaseaccess.Accessor |
allocateReadConnection()
INTERNAL: Return a read connection from the read pool. |
void |
connect()
INTERNAL: Startup the server session, also startup all of the connection pools. |
java.lang.Object |
executeCall(Call call,
org.eclipse.persistence.internal.sessions.AbstractRecord translationRow,
DatabaseQuery query)
INTERNAL: Override to acquire the connection from the pool at the last minute |
ConnectionPool |
getConnectionPool(java.lang.String poolName)
PUBLIC: Return the pool by name. |
java.util.Map |
getConnectionPools()
INTERNAL: Connection are pooled to share and restrict the number of database connections. |
ConnectionPolicy |
getDefaultConnectionPolicy()
PUBLIC: The default connection policy is used by default by the acquireClientConnection() protocol. |
ConnectionPool |
getDefaultConnectionPool()
PUBLIC: Return the default connection pool. |
org.eclipse.persistence.internal.sessions.AbstractSession |
getExecutionSession(DatabaseQuery query)
INTERNAL: Gets the session which this query will be executed on. |
int |
getMaxNumberOfNonPooledConnections()
PUBLIC: Return the number of non-pooled database connections allowed. |
int |
getNumberOfNonPooledConnectionsUsed()
INTERNAL: Return the current number of non-pooled connections in use. |
ConnectionPool |
getReadConnectionPool()
PUBLIC: Return the read connection pool. |
protected Login |
getReadLogin()
INTERNAL: Return the login for the read connection. |
org.eclipse.persistence.internal.sequencing.SequencingServer |
getSequencingServer()
INTERNAL: Return SequencingServer object owned by the session. |
boolean |
isConnected()
PUBLIC: Return if this session has been connected to the database. |
boolean |
isServerSession()
INTERNAL: Return if this session is a server session. |
void |
logout()
PUBLIC: Shutdown the server session, also shutdown all of the connection pools. |
void |
postConnectExternalConnection(org.eclipse.persistence.internal.databaseaccess.Accessor accessor)
INTERNAL: This method is called in case externalConnectionPooling is used right after the accessor is connected. |
void |
preDisconnectExternalConnection(org.eclipse.persistence.internal.databaseaccess.Accessor accessor)
INTERNAL: This method is called in case externalConnectionPooling is used right before the accessor is disconnected. |
void |
releaseClientSession(ClientSession clientSession)
INTERNAL: Release the clients connection resource. |
void |
releaseReadConnection(org.eclipse.persistence.internal.databaseaccess.Accessor connection)
INTERNAL: Release the read connection back into the read pool. |
void |
setConnectionPools(java.util.Map connectionPools)
INTERNAL: Connection are pooled to share and restrict the number of database connections. |
void |
setDefaultConnectionPolicy(ConnectionPolicy defaultConnectionPolicy)
PUBLIC: The default connection policy is used by default by the acquireClientConnection() protocol. |
void |
setDefaultConnectionPool()
PUBLIC: Creates and adds "default" connection pool using default parameter values |
void |
setMaxNumberOfNonPooledConnections(int maxNumberOfNonPooledConnections)
PUBLIC: Set the number of non-pooled database connections allowed. |
void |
setNumberOfNonPooledConnectionsUsed(int numberOfNonPooledConnectionsUsed)
Set the current number of connections being used that are not from a connection pool. |
void |
setReadConnectionPool(ConnectionPool readConnectionPool)
PUBLIC: Set the read connection pool. |
void |
setReadConnectionPool(Login readLogin)
PUBLIC: Creates and sets the new read connection pool. |
void |
setSynchronized(boolean synched)
INTERNAL: Set isSynchronized flag to indicate that this session is synchronized. |
protected void |
updateStandardConnectionPools()
INTERNAL: Updates standard connection pools. |
void |
useExclusiveReadConnectionPool(int minNumerOfConnections,
int maxNumerOfConnections)
PUBLIC: Configure the read connection pool. |
void |
useExternalReadConnectionPool()
PUBLIC: Configure the read connection pool. |
void |
useReadConnectionPool(int minNumerOfConnections,
int maxNumerOfConnections)
PUBLIC: Configure the read connection pool. |
void |
validateQuery(DatabaseQuery query)
INTERNAL: This method will be used to update the query with any settings required For this session. |
Methods inherited from class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl |
---|
addDescriptor, addDescriptors, addDescriptors, disconnect, finalize, getConnectedTime, getDatasourcePlatform, getPlatform, getPlatform, getSequencing, getSequencingControl, getSequencingHome, getServerPlatform, initializeConnectedTime, initializeDescriptorIfSessionAlive, initializeDescriptors, initializeDescriptors, initializeDescriptors, initializeSequencing, isDatabaseSession, isSequencingCallbackRequired, login, login, login, loginAndDetectDatasource, postConnectDatasource, preConnectDatasource, releaseJTSConnection, setSequencingHome, setServerPlatform, writeAllObjects, writeAllObjects |
Methods inherited from class org.eclipse.persistence.internal.sessions.AbstractSession |
---|
acquireNonSynchronizedUnitOfWork, acquireNonSynchronizedUnitOfWork, acquireUnitOfWork, addAlias, addJPAQuery, addQuery, addQuery, basicBeginTransaction, basicBeginTransaction, basicCommitTransaction, basicRollbackTransaction, beginExternalTransaction, beginTransaction, checkHierarchyForDescriptor, clearIntegrityChecker, clearLastDescriptorAccessed, clearProfile, clone, commitExternalTransaction, commitTransaction, compareObjects, compareObjectsDontMatch, config, containsQuery, copyDescriptorNamedQueries, copyObject, copyObject, copyReadOnlyClasses, deleteAllObjects, deleteAllObjects, deleteObject, doesObjectExist, dontLogMessages, endOperationProfile, endOperationProfile, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, fine, finer, finest, getAccessor, getAccessor, getAccessor, getActiveCommandThreads, getActiveSession, getActiveUnitOfWork, getAliasDescriptors, getAllQueries, getAsOfClause, getBroker, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getCommandManager, getCommitManager, getDatasourceLogin, getDefaultReadOnlyClasses, getDefaultReferenceMode, getDescriptor, getDescriptor, getDescriptorForAlias, getDescriptors, getEventManager, getExceptionHandler, getExceptionHandlerClass, getExternalTransactionController, getIdentityMapAccessor, getIdentityMapAccessorInstance, getIntegrityChecker, getJPAQueries, getLog, getLogin, getLogLevel, getLogLevel, getLogSessionString, getName, getNextQueryId, getNextSequenceNumberValue, getNumberOfActiveUnitsOfWork, getParent, getParentIdentityMapSession, getParentIdentityMapSession, getProfiler, getProject, getProperties, getProperty, getQueries, getQuery, getQuery, getQuery, getRootSession, getSessionForClass, getSessionLog, getSessionTypeString, getTransactionMutex, handleException, handleSevere, hasBroker, hasCommitManager, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, hasProperties, incrementProfile, info, initializeIdentityMapAccessor, insertObject, internalExecuteQuery, isBroker, isClassReadOnly, isClassReadOnly, isClientSession, isDistributedSession, isExclusiveConnectionRequired, isExclusiveIsolatedClientSession, isFinalizersEnabled, isHistoricalSession, isInBroker, isInProfile, isInTransaction, isIsolatedClientSession, isRemoteSession, isRemoteUnitOfWork, isSessionBroker, isSynchronized, isUnitOfWork, keyFromObject, keyFromObject, log, log, log, log, log, log, log, log, log, log, logMessage, logMessage, logThrowable, prepareDatabaseQuery, processCommand, readAllObjects, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, readObject, refreshAndLockObject, refreshAndLockObject, refreshObject, registerFinalizer, release, releaseUnitOfWork, removeProperty, removeQuery, removeQuery, rollbackExternalTransaction, rollbackTransaction, setAccessor, setBroker, setCommandManager, setCommitManager, setDatasourceLogin, setDefaultReferenceMode, setEventManager, setExceptionHandler, setExternalTransactionController, setIntegrityChecker, setIsFinalizersEnabled, setIsInBroker, setIsInProfile, setLog, setLogin, setLogin, setLogLevel, setName, setNumberOfActiveUnitsOfWork, setProfiler, setProject, setProperties, setProperty, setQueries, setSessionLog, setShouldPropagateChanges, setTransactionMutex, setWasJTSTransactionInternallyStarted, severe, shouldLog, shouldLogMessages, shouldLogMessages, shouldPropagateChanges, startOperationProfile, startOperationProfile, toString, unwrapObject, updateObject, updateProfile, validateCache, verifyDelete, warning, wasJTSTransactionInternallyStarted, wrapObject, writeAllObjects, writeAllObjectsWithChangeSet, writeObject, writesCompleted |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.eclipse.persistence.sessions.server.Server |
---|
setDatasourceLogin |
Methods inherited from interface org.eclipse.persistence.sessions.DatabaseSession |
---|
addDescriptor, addDescriptors, addDescriptors, beginTransaction, commitTransaction, deleteAllObjects, deleteObject, getCommandManager, getSequencingControl, getServerPlatform, insertObject, isInTransaction, login, login, login, refreshAndLockObject, refreshAndLockObject, rollbackTransaction, setCommandManager, setExternalTransactionController, setLogin, setServerPlatform, setShouldPropagateChanges, shouldPropagateChanges, updateObject, writeAllObjects, writeObject |
Field Detail |
---|
protected ConnectionPool readConnectionPool
protected java.util.Map connectionPools
protected ConnectionPolicy defaultConnectionPolicy
protected int maxNumberOfNonPooledConnections
public static final int NO_MAX
protected int numberOfNonPooledConnectionsUsed
public static final int MAX_WRITE_CONNECTIONS
public static final int MIN_WRITE_CONNECTIONS
Constructor Detail |
---|
public ServerSession()
public ServerSession(Login login)
public ServerSession(Login login, int minNumberOfPooledConnection, int maxNumberOfPooledConnection)
public ServerSession(Login login, ConnectionPolicy defaultConnectionPolicy)
public ServerSession(Project project)
public ServerSession(Project project, int minNumberOfPooledConnection, int maxNumberOfPooledConnection)
public ServerSession(Project project, int minNumberOfPooledConnection, int maxNumberOfPooledConnection, Login readLogin)
project
- the project associated with this sessionminNumberOfPooledConnection
- the minimum number of connections in the poolmaxNumberOfPooledConnection
- the maximum number of connections in the poolreadLogin
- the login used to create the read connection poolpublic ServerSession(Project project, int minNumberOfPooledConnection, int maxNumberOfPooledConnection, Login readLogin, Login sequenceLogin)
project
- the project associated with this sessionminNumberOfPooledConnection
- the minimum number of connections in the poolmaxNumberOfPooledConnection
- the maximum number of connections in the poolreadLogin
- the login used to create the read connection poolsequenceLogin
- the login used to create a connection pool for sequencingpublic ServerSession(Project project, ConnectionPolicy defaultConnectionPolicy)
public ServerSession(Project project, ConnectionPolicy defaultConnectionPolicy, Login readLogin)
public ServerSession(Project project, ConnectionPolicy defaultConnectionPolicy, Login readLogin, Login sequenceLogin)
Method Detail |
---|
public void acquireClientConnection(ClientSession clientSession) throws DatabaseException, ConcurrencyException
DatabaseException
ConcurrencyException
public ClientSession acquireClientSession() throws DatabaseException
acquireClientSession
in interface Server
DatabaseException
public ClientSession acquireClientSession(java.util.Map properties) throws DatabaseException
DatabaseException
public ClientSession acquireClientSession(java.lang.String poolName) throws DatabaseException
acquireClientSession
in interface Server
DatabaseException
public ClientSession acquireClientSession(java.lang.String poolName, java.util.Map properties) throws DatabaseException
DatabaseException
public ClientSession acquireClientSession(Login login) throws DatabaseException
acquireClientSession
in interface Server
DatabaseException
public ClientSession acquireClientSession(Login login, java.util.Map properties) throws DatabaseException
DatabaseException
public ClientSession acquireClientSession(ConnectionPolicy connectionPolicy) throws DatabaseException, ValidationException
acquireClientSession
in interface Server
DatabaseException
ValidationException
public ClientSession acquireClientSession(ConnectionPolicy connectionPolicy, java.util.Map properties) throws DatabaseException, ValidationException
DatabaseException
ValidationException
public Session acquireHistoricalSession(AsOfClause clause) throws ValidationException
acquireHistoricalSession
in interface Session
acquireHistoricalSession
in class org.eclipse.persistence.internal.sessions.AbstractSession
clause
- Represents a valid snap shot time.
ValidationException
- if this
not a ClientSession, plain Session, or SessionBroker.AsOfClause
,
Expression.asOf(org.eclipse.persistence.history.AsOfClause)
,
ObjectLevelReadQuery.setAsOfClause(org.eclipse.persistence.history.AsOfClause)
,
HistoryPolicy
public org.eclipse.persistence.internal.sessions.UnitOfWorkImpl acquireUnitOfWork()
acquireUnitOfWork
in interface Session
acquireUnitOfWork
in class org.eclipse.persistence.internal.sessions.AbstractSession
UnitOfWorkImpl
public void addConnectionPool(java.lang.String poolName, Login login, int minNumberOfConnections, int maxNumberOfConnections) throws ValidationException
addConnectionPool
in interface Server
ValidationException
public void addConnectionPool(ConnectionPool pool)
addConnectionPool
in interface Server
public org.eclipse.persistence.internal.databaseaccess.Accessor allocateReadConnection()
public void connect()
connect
in class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
public java.lang.Object executeCall(Call call, org.eclipse.persistence.internal.sessions.AbstractRecord translationRow, DatabaseQuery query) throws DatabaseException
executeCall
in class org.eclipse.persistence.internal.sessions.AbstractSession
DatabaseException
public ConnectionPool getConnectionPool(java.lang.String poolName)
getConnectionPool
in interface Server
public java.util.Map getConnectionPools()
public ConnectionPolicy getDefaultConnectionPolicy()
getDefaultConnectionPolicy
in interface Server
public ConnectionPool getDefaultConnectionPool()
getDefaultConnectionPool
in interface Server
public org.eclipse.persistence.internal.sessions.AbstractSession getExecutionSession(DatabaseQuery query)
Since the execution session also knows the correct datasource platform to execute on, it is often used in the mappings where the platform is needed for type conversion, or where calls are translated.
Is also the session with the accessor. Will return a ClientSession if it is in transaction and has a write connection.
getExecutionSession
in class org.eclipse.persistence.internal.sessions.AbstractSession
query
- may store session name or reference class for brokers case
public int getMaxNumberOfNonPooledConnections()
getMaxNumberOfNonPooledConnections
in interface Server
public int getNumberOfNonPooledConnectionsUsed()
protected Login getReadLogin()
getReadLogin
in class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
public ConnectionPool getReadConnectionPool()
getReadConnectionPool
in interface Server
Server.setReadConnectionPool(ConnectionPool)
,
Server.useExclusiveReadConnectionPool(int, int)
,
Server.useExternalReadConnectionPool()
,
Server.useReadConnectionPool(int, int)
public boolean isConnected()
isConnected
in interface Session
isConnected
in class org.eclipse.persistence.internal.sessions.AbstractSession
public boolean isServerSession()
isServerSession
in interface Session
isServerSession
in class org.eclipse.persistence.internal.sessions.AbstractSession
public void logout()
logout
in interface DatabaseSession
logout
in class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
public void postConnectExternalConnection(org.eclipse.persistence.internal.databaseaccess.Accessor accessor)
postConnectExternalConnection
in class org.eclipse.persistence.internal.sessions.AbstractSession
public void preDisconnectExternalConnection(org.eclipse.persistence.internal.databaseaccess.Accessor accessor)
preDisconnectExternalConnection
in class org.eclipse.persistence.internal.sessions.AbstractSession
public void releaseClientSession(ClientSession clientSession) throws DatabaseException
DatabaseException
public void releaseReadConnection(org.eclipse.persistence.internal.databaseaccess.Accessor connection)
releaseReadConnection
in class org.eclipse.persistence.internal.sessions.AbstractSession
public void setConnectionPools(java.util.Map connectionPools)
public void setDefaultConnectionPolicy(ConnectionPolicy defaultConnectionPolicy)
setDefaultConnectionPolicy
in interface Server
public void setDefaultConnectionPool()
public void setMaxNumberOfNonPooledConnections(int maxNumberOfNonPooledConnections)
setMaxNumberOfNonPooledConnections
in interface Server
public void setNumberOfNonPooledConnectionsUsed(int numberOfNonPooledConnectionsUsed)
int
- public void setReadConnectionPool(ConnectionPool readConnectionPool)
setReadConnectionPool
in interface Server
public void setReadConnectionPool(Login readLogin) throws ValidationException
ValidationException
public void setSynchronized(boolean synched)
setSynchronized
in class org.eclipse.persistence.internal.sessions.AbstractSession
protected void updateStandardConnectionPools()
public void useExclusiveReadConnectionPool(int minNumerOfConnections, int maxNumerOfConnections)
useExclusiveReadConnectionPool
in interface Server
Server.getReadConnectionPool()
,
Server.setReadConnectionPool(ConnectionPool)
,
Server.useReadConnectionPool(int, int)
,
Server.useExternalReadConnectionPool()
public void useExternalReadConnectionPool()
useExternalReadConnectionPool
in interface Server
Session.hasExternalTransactionController()
,
Server.getReadConnectionPool()
,
Server.setReadConnectionPool(ConnectionPool)
,
Server.useReadConnectionPool(int, int)
,
Server.useExclusiveReadConnectionPool(int, int)
public void useReadConnectionPool(int minNumerOfConnections, int maxNumerOfConnections)
useReadConnectionPool
in interface Server
maxNumerOfConnections
- As multiple readers can use the same connection
concurrently fewer connections are needed.Server.getReadConnectionPool()
,
Server.setReadConnectionPool(ConnectionPool)
,
Server.useExternalReadConnectionPool()
,
Server.useExclusiveReadConnectionPool(int, int)
public void validateQuery(DatabaseQuery query)
validateQuery
in class org.eclipse.persistence.internal.sessions.AbstractSession
public org.eclipse.persistence.internal.sequencing.SequencingServer getSequencingServer()
|
EclipseLink1.0 - 20080707 API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |