org.datanucleus.store
Class FederationManager

java.lang.Object
  extended by org.datanucleus.store.FederationManager
All Implemented Interfaces:
StoreManager

public class FederationManager
extends java.lang.Object
implements StoreManager

Federation Manager orchestrates the persistence/retrieval for multiple datastores. It is responsible for creating the individual StoreManager instances for the datastore(s) that are being federated. Currently only manages a single StoreManager NOTE : THIS IS NOT CURRENTLY USED


Field Summary
protected static Localiser LOCALISER
          Localisation of messages.
 
Constructor Summary
FederationManager(ClassLoaderResolver clr, OMFContext omfContext)
           
 
Method Summary
 void addClass(java.lang.String className, ClassLoaderResolver clr)
          Method to add a class to the managed list for this datastore manager.
 void addClasses(java.lang.String[] classNames, ClassLoaderResolver clr)
          Add classes to the persistence model for the datastore.
 void close()
          Release of resources.
 ApiAdapter getApiAdapter()
          Accessor for the API adapter.
 Store getBackingStoreForField(ClassLoaderResolver clr, AbstractMemberMetaData fmd, java.lang.Class type)
          Accessor for the backing store for the specified field.
 java.lang.String getClassNameForObjectID(java.lang.Object id, ClassLoaderResolver clr, ExecutionContext ec)
          Returns the class corresponding to the given object identity.
 ManagedConnection getConnection(ExecutionContext ec)
          Accessor for a connection for the specified ObjectManager.
 ManagedConnection getConnection(ExecutionContext ec, java.util.Map options)
          Accessor for a connection for the specified ObjectManager.
 java.lang.String getConnectionDriverName()
          Convenience accessor for the driver name to use for the connection.
 java.lang.Object getConnectionFactory()
          Convenience accessor for the factory for the connection (transactional).
 java.lang.Object getConnectionFactory2()
          Convenience accessor for the factory for the connection (non-transactional).
 java.lang.String getConnectionFactory2Name()
          Convenience accessor for the factory name for the connection (non-transactional).
 java.lang.String getConnectionFactoryName()
          Convenience accessor for the factory name for the connection (transactional).
 ConnectionManager getConnectionManager()
          Accessor for the connection manager for this store manager.
 java.lang.String getConnectionPassword()
          Convenience accessor for the password to use for the connection.
 java.lang.String getConnectionURL()
          Convenience accessor for the URL for the connection.
 java.lang.String getConnectionUserName()
          Convenience accessor for the user name to use for the connection.
 java.util.Date getDatastoreDate()
          Get the date/time of the datastore.
 Extent getExtent(ExecutionContext ec, java.lang.Class c, boolean subclasses)
          Interface to getting an Extent for a class.
 NucleusConnection getNucleusConnection(ExecutionContext ec)
          Method to return a connection for the ObjectManager.
 NucleusSequence getNucleusSequence(ExecutionContext ec, SequenceMetaData seqmd)
          Method to return a datastore sequence for this datastore matching the passed sequence MetaData.
 OMFContext getOMFContext()
          Gets the context for this ObjectManagerFactory
 StorePersistenceHandler getPersistenceHandler()
          Accessor for the store persistence handler.
 java.lang.String getQueryCacheKey()
          Accessor for the key used for representing this store manager in the query cache.
 StoreManagerRuntime getRuntimeManager()
          Accessor for the runtime management of this component (if specified as required to the PMF/EMF).
 StoreSchemaHandler getSchemaHandler()
          Accessor for the store schema handler (if this datastore supports the concept of a schema).
 StoreManager getStoreManager()
           
 java.lang.String getStoreManagerKey()
          Accessor for the key for this store manager.
 java.lang.Object getStrategyValue(ExecutionContext ec, AbstractClassMetaData cmd, int absoluteFieldNumber)
          Method to retrieve the value for a strategy for a particular field.
 java.util.HashSet getSubClassesForClass(java.lang.String className, boolean includeDescendents, ClassLoaderResolver clr)
          Utility to return the names of the classes that are known subclasses of the provided class.
 java.util.Collection getSupportedOptions()
          Accessor for the supported options in string form
 ValueGenerationManager getValueGenerationManager()
          Accessor for the ValueGenerationManager for obtaining sequences.
protected  void initialiseStoreManager(ClassLoaderResolver clr)
          Method to initialise the StoreManager used by this factory.
 boolean isStrategyDatastoreAttributed(IdentityStrategy identityStrategy, boolean datastoreIdentityField)
          Check if the strategy is attributed by the database when the PersistenceCapable object is inserted into the database
 java.lang.String manageClassForIdentity(java.lang.Object id, ClassLoaderResolver clr)
          Convenience method to ensure that the class defined by the passed OID/SingleFIeldIdentity is managed by the store.
 boolean managesClass(java.lang.String className)
          Accessor for whether the specified class is managed currently
 void notifyObjectIsOutdated(ObjectProvider sm)
          Notifies this store manager that the main memory (RAM, heap) copy of the PC object of the supplied StateManager may not be regarded as valid anymore.
 void performVersionCheck(ObjectProvider sm, java.lang.Object versionDatastore, VersionMetaData versionMetaData)
          Perform an optimistic version check on the passed object, against the passed version in the datastore.
 void printInformation(java.lang.String category, java.io.PrintStream ps)
          Method to output particular information owned by this datastore.
protected  void processTransactionIsolation(StoreManager srm)
          Method to check the supplied transaction isolation level is consistent for this StoreManagers capabilities.
 void removeAllClasses(ClassLoaderResolver clr)
          Remove all classes from the persistence model for the datastore.
 boolean supportsQueryLanguage(java.lang.String language)
          Accessor for whether this query language is supported.
 boolean supportsValueStrategy(java.lang.String language)
          Accessor for whether this value strategy is supported.
 void transactionCommitted(ExecutionContext ec)
          Method to inform the StoreManager that a transaction has committed for the specified execution context.
 void transactionRolledBack(ExecutionContext ec)
          Method to inform the StoreManager that a transaction has rolled back for the specified execution context.
 void transactionStarted(ExecutionContext ec)
          Method to inform the StoreManager that a transaction has started for the specified execution context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOCALISER

protected static final Localiser LOCALISER
Localisation of messages.

Constructor Detail

FederationManager

public FederationManager(ClassLoaderResolver clr,
                         OMFContext omfContext)
Method Detail

getOMFContext

public OMFContext getOMFContext()
Gets the context for this ObjectManagerFactory

Specified by:
getOMFContext in interface StoreManager
Returns:
Returns the context.

initialiseStoreManager

protected void initialiseStoreManager(ClassLoaderResolver clr)
Method to initialise the StoreManager used by this factory.

Parameters:
clr - ClassLoaderResolver to use for class loading issues

processTransactionIsolation

protected void processTransactionIsolation(StoreManager srm)
Method to check the supplied transaction isolation level is consistent for this StoreManagers capabilities.

Parameters:
srm - StoreManager

getStoreManager

public StoreManager getStoreManager()

close

public void close()
Description copied from interface: StoreManager
Release of resources.

Specified by:
close in interface StoreManager

addClass

public void addClass(java.lang.String className,
                     ClassLoaderResolver clr)
Description copied from interface: StoreManager
Method to add a class to the managed list for this datastore manager.

Specified by:
addClass in interface StoreManager
Parameters:
className - Name of the class
clr - The ClassLoaderResolver

addClasses

public void addClasses(java.lang.String[] classNames,
                       ClassLoaderResolver clr)
Description copied from interface: StoreManager
Add classes to the persistence model for the datastore.

This method is primarily useful for applications that wish to perform all of their datastore initialization up front, rather than wait for the runtime to do it on-demand.

Specified by:
addClasses in interface StoreManager
Parameters:
classNames - The class(es) to be added.
clr - The ClassLoaderResolver

getApiAdapter

public ApiAdapter getApiAdapter()
Description copied from interface: StoreManager
Accessor for the API adapter.

Specified by:
getApiAdapter in interface StoreManager
Returns:
API adapter

getBackingStoreForField

public Store getBackingStoreForField(ClassLoaderResolver clr,
                                     AbstractMemberMetaData fmd,
                                     java.lang.Class type)
Description copied from interface: StoreManager
Accessor for the backing store for the specified field. Override it if the store needs this

Specified by:
getBackingStoreForField in interface StoreManager
Parameters:
clr - ClassLoader resolver
fmd - MetaData for the field/property
type - Type
Returns:
Backing store

getClassNameForObjectID

public java.lang.String getClassNameForObjectID(java.lang.Object id,
                                                ClassLoaderResolver clr,
                                                ExecutionContext ec)
Description copied from interface: StoreManager
Returns the class corresponding to the given object identity. If the object is an OID (datastore-identity), return the PC class specified in the identity. If the object is SingleFieldIdentity, return the PC class specified in the identity If the object is an AppID PK, return the PC class that uses it. If the object is a SCOID, return the SCO class. If the object is a PersistenceCapable class, return the class.

Specified by:
getClassNameForObjectID in interface StoreManager
Parameters:
id - The identity of some object.
clr - ClassLoader resolver
ec - execution context
Returns:
For datastore identity, return the class of the corresponding object. For application identity, return the class of the corresponding object or null if object does not exist.

getDatastoreDate

public java.util.Date getDatastoreDate()
Description copied from interface: StoreManager
Get the date/time of the datastore.

Specified by:
getDatastoreDate in interface StoreManager
Returns:
Date/time of the datastore

getExtent

public Extent getExtent(ExecutionContext ec,
                        java.lang.Class c,
                        boolean subclasses)
Description copied from interface: StoreManager
Interface to getting an Extent for a class.

Specified by:
getExtent in interface StoreManager
Parameters:
ec - execution context
c - The class requiring the Extent
subclasses - Whether to include subclasses of 'c'
Returns:
The Extent.

getNucleusConnection

public NucleusConnection getNucleusConnection(ExecutionContext ec)
Description copied from interface: StoreManager
Method to return a connection for the ObjectManager.

Specified by:
getNucleusConnection in interface StoreManager
Parameters:
ec - execution context
Returns:
The datastore Connection

getNucleusSequence

public NucleusSequence getNucleusSequence(ExecutionContext ec,
                                          SequenceMetaData seqmd)
Description copied from interface: StoreManager
Method to return a datastore sequence for this datastore matching the passed sequence MetaData.

Specified by:
getNucleusSequence in interface StoreManager
Parameters:
ec - execution context
seqmd - SequenceMetaData
Returns:
The Sequence

getSchemaHandler

public StoreSchemaHandler getSchemaHandler()
Description copied from interface: StoreManager
Accessor for the store schema handler (if this datastore supports the concept of a schema).

Specified by:
getSchemaHandler in interface StoreManager
Returns:
Store schema handler.

getPersistenceHandler

public StorePersistenceHandler getPersistenceHandler()
Description copied from interface: StoreManager
Accessor for the store persistence handler.

Specified by:
getPersistenceHandler in interface StoreManager
Returns:
Store persistence handler.

getValueGenerationManager

public ValueGenerationManager getValueGenerationManager()
Description copied from interface: StoreManager
Accessor for the ValueGenerationManager for obtaining sequences.

Specified by:
getValueGenerationManager in interface StoreManager
Returns:
The ValueGenerationManagerr for this datastore

getRuntimeManager

public StoreManagerRuntime getRuntimeManager()
Description copied from interface: StoreManager
Accessor for the runtime management of this component (if specified as required to the PMF/EMF).

Specified by:
getRuntimeManager in interface StoreManager
Returns:
Runtime manager (JMX) for this store

getStoreManagerKey

public java.lang.String getStoreManagerKey()
Description copied from interface: StoreManager
Accessor for the key for this store manager.

Specified by:
getStoreManagerKey in interface StoreManager
Returns:
StoreManager key

getQueryCacheKey

public java.lang.String getQueryCacheKey()
Description copied from interface: StoreManager
Accessor for the key used for representing this store manager in the query cache.

Specified by:
getQueryCacheKey in interface StoreManager
Returns:
Key for the query cache

getStrategyValue

public java.lang.Object getStrategyValue(ExecutionContext ec,
                                         AbstractClassMetaData cmd,
                                         int absoluteFieldNumber)
Description copied from interface: StoreManager
Method to retrieve the value for a strategy for a particular field.

Specified by:
getStrategyValue in interface StoreManager
Parameters:
ec - execution context
cmd - AbstractClassMetaData for the class
absoluteFieldNumber - The field number
Returns:
The value

getSubClassesForClass

public java.util.HashSet getSubClassesForClass(java.lang.String className,
                                               boolean includeDescendents,
                                               ClassLoaderResolver clr)
Description copied from interface: StoreManager
Utility to return the names of the classes that are known subclasses of the provided class. Actually uses the MetaDataManager for determining what is a subclass since the MetaData is often registered before being needed by the Store.

Specified by:
getSubClassesForClass in interface StoreManager
Parameters:
className - Class for which we search for subclasses.
includeDescendents - Whether to include subclasses of subclasses etc
clr - The ClassLoaderResolver
Returns:
Set of classes that are subclasses of the input class. TODO Use method in MetaDataManager and remove this

isStrategyDatastoreAttributed

public boolean isStrategyDatastoreAttributed(IdentityStrategy identityStrategy,
                                             boolean datastoreIdentityField)
Description copied from interface: StoreManager
Check if the strategy is attributed by the database when the PersistenceCapable object is inserted into the database

Specified by:
isStrategyDatastoreAttributed in interface StoreManager
Parameters:
identityStrategy - the identityStrategy
datastoreIdentityField - Whether this is for the surrogate datastore identity field
Returns:
if the object for the strategy is attributed by the database

manageClassForIdentity

public java.lang.String manageClassForIdentity(java.lang.Object id,
                                               ClassLoaderResolver clr)
Description copied from interface: StoreManager
Convenience method to ensure that the class defined by the passed OID/SingleFIeldIdentity is managed by the store.

Specified by:
manageClassForIdentity in interface StoreManager
Parameters:
id - OID
clr - ClassLoader resolver
Returns:
The class name of the class associated to this identity

managesClass

public boolean managesClass(java.lang.String className)
Description copied from interface: StoreManager
Accessor for whether the specified class is managed currently

Specified by:
managesClass in interface StoreManager
Parameters:
className - The name of the class
Returns:
Whether it is managed

notifyObjectIsOutdated

public void notifyObjectIsOutdated(ObjectProvider sm)
Description copied from interface: StoreManager
Notifies this store manager that the main memory (RAM, heap) copy of the PC object of the supplied StateManager may not be regarded as valid anymore. (The most common case is that the state of the PC becomes HOLLOW). This is especially important for object databases employing implicit storing from the main memory to the database (like DB4O). These databases may stop tracking the main memory copy and linking it with its on-disk copy, thus releasing memory. More importantly, these databases then know that the object should be reloaded when it is (maybe even implicitly) accessed again. To be clear: There may be multiple copies of the data of one PC object (from the user perspective), namely a copy in main memory (on the Java heap) and a copy in the database (usually on disk). As there may be multiple copies, some of these copies may be outdated or invalid. In case such a copy is to be accessed, its contents should not be used. Rather than that, the outdated copy should be overwritten by an authorative copy. This method marks the main memory copy of the object (on the Java heap) to be outdated in that sense.

Specified by:
notifyObjectIsOutdated in interface StoreManager

printInformation

public void printInformation(java.lang.String category,
                             java.io.PrintStream ps)
                      throws java.lang.Exception
Description copied from interface: StoreManager
Method to output particular information owned by this datastore. Each StoreManager can support whichever categories it likes.

Specified by:
printInformation in interface StoreManager
Parameters:
category - Category of information
ps - PrintStream
Throws:
java.lang.Exception - Thrown if an error occurs in the output process

performVersionCheck

public void performVersionCheck(ObjectProvider sm,
                                java.lang.Object versionDatastore,
                                VersionMetaData versionMetaData)
Description copied from interface: StoreManager
Perform an optimistic version check on the passed object, against the passed version in the datastore.

Specified by:
performVersionCheck in interface StoreManager
Parameters:
sm - StateManager of the object to check
versionDatastore - Version of the object in the datastore
versionMetaData - VersionMetaData to use for checking

removeAllClasses

public void removeAllClasses(ClassLoaderResolver clr)
Description copied from interface: StoreManager
Remove all classes from the persistence model for the datastore. This empties the datastore of all datastore objects managed by us. All objects of types not managed are left untouched. In the case of RDBMS this means drop all tables for types managed by us.

Specified by:
removeAllClasses in interface StoreManager
Parameters:
clr - The ClassLoaderResolver

supportsQueryLanguage

public boolean supportsQueryLanguage(java.lang.String language)
Description copied from interface: StoreManager
Accessor for whether this query language is supported.

Specified by:
supportsQueryLanguage in interface StoreManager
Parameters:
language - The language
Returns:
Whether it is supported.

supportsValueStrategy

public boolean supportsValueStrategy(java.lang.String language)
Description copied from interface: StoreManager
Accessor for whether this value strategy is supported.

Specified by:
supportsValueStrategy in interface StoreManager
Parameters:
language - The strategy
Returns:
Whether it is supported.

getSupportedOptions

public java.util.Collection getSupportedOptions()
Description copied from interface: StoreManager
Accessor for the supported options in string form

Specified by:
getSupportedOptions in interface StoreManager

getConnectionManager

public ConnectionManager getConnectionManager()
Description copied from interface: StoreManager
Accessor for the connection manager for this store manager.

Specified by:
getConnectionManager in interface StoreManager
Returns:
connection manager

getConnection

public ManagedConnection getConnection(ExecutionContext ec)
Description copied from interface: StoreManager
Accessor for a connection for the specified ObjectManager.

If there is an active transaction, a connection from the transactional connection factory will be returned. If there is no active transaction, a connection from the nontransactional connection factory will be returned.

Specified by:
getConnection in interface StoreManager
Parameters:
ec - execution context
Returns:
The Connection

getConnection

public ManagedConnection getConnection(ExecutionContext ec,
                                       java.util.Map options)
Description copied from interface: StoreManager
Accessor for a connection for the specified ObjectManager.

If there is an active transaction, a connection from the transactional connection factory will be returned. If there is no active transaction, a connection from the nontransactional connection factory will be returned.

Specified by:
getConnection in interface StoreManager
Parameters:
ec - execution context
options - connetion options
Returns:
The Connection

getConnectionDriverName

public java.lang.String getConnectionDriverName()
Description copied from interface: StoreManager
Convenience accessor for the driver name to use for the connection.

Specified by:
getConnectionDriverName in interface StoreManager
Returns:
driver name

getConnectionURL

public java.lang.String getConnectionURL()
Description copied from interface: StoreManager
Convenience accessor for the URL for the connection.

Specified by:
getConnectionURL in interface StoreManager
Returns:
connection URL

getConnectionUserName

public java.lang.String getConnectionUserName()
Description copied from interface: StoreManager
Convenience accessor for the user name to use for the connection.

Specified by:
getConnectionUserName in interface StoreManager
Returns:
user name

getConnectionPassword

public java.lang.String getConnectionPassword()
Description copied from interface: StoreManager
Convenience accessor for the password to use for the connection.

Specified by:
getConnectionPassword in interface StoreManager
Returns:
Password

getConnectionFactory

public java.lang.Object getConnectionFactory()
Description copied from interface: StoreManager
Convenience accessor for the factory for the connection (transactional).

Specified by:
getConnectionFactory in interface StoreManager
Returns:
Connection Factory (transactional)

getConnectionFactory2

public java.lang.Object getConnectionFactory2()
Description copied from interface: StoreManager
Convenience accessor for the factory for the connection (non-transactional).

Specified by:
getConnectionFactory2 in interface StoreManager
Returns:
Connection Factory (non-transactional)

getConnectionFactory2Name

public java.lang.String getConnectionFactory2Name()
Description copied from interface: StoreManager
Convenience accessor for the factory name for the connection (non-transactional).

Specified by:
getConnectionFactory2Name in interface StoreManager
Returns:
Connection Factory name (non-transactional)

getConnectionFactoryName

public java.lang.String getConnectionFactoryName()
Description copied from interface: StoreManager
Convenience accessor for the factory name for the connection (transactional).

Specified by:
getConnectionFactoryName in interface StoreManager
Returns:
Connection Factory name (transactional)

transactionStarted

public void transactionStarted(ExecutionContext ec)
Description copied from interface: StoreManager
Method to inform the StoreManager that a transaction has started for the specified execution context. This allows the StoreManager to initialise any objects as required.

Specified by:
transactionStarted in interface StoreManager
Parameters:
ec - ExecutionContext

transactionCommitted

public void transactionCommitted(ExecutionContext ec)
Description copied from interface: StoreManager
Method to inform the StoreManager that a transaction has committed for the specified execution context. This allows the StoreManager to close any objects as required.

Specified by:
transactionCommitted in interface StoreManager
Parameters:
ec - ExecutionContext

transactionRolledBack

public void transactionRolledBack(ExecutionContext ec)
Description copied from interface: StoreManager
Method to inform the StoreManager that a transaction has rolled back for the specified execution context. This allows the StoreManager to close any objects as required.

Specified by:
transactionRolledBack in interface StoreManager
Parameters:
ec - ExecutionContext


Copyright © 2011. All Rights Reserved.