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 in multiple datastores


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.
 AutoStartMechanism getAutoStartMechanism()
          Accessor for the AutoStartMechanism
 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, ObjectManager om)
          Returns the class corresponding to the given object identity.
 ManagedConnection getConnection(ObjectManager om)
          Accessor for a transactional connection for the specified ObjectManager, using its current transaction.
 java.util.Date getDatastoreDate()
          Get the date/time of the datastore.
 Extent getExtent(ObjectManager om, java.lang.Class c, boolean subclasses)
          Interface to getting an Extent for a class.
 NucleusConnection getNucleusConnection(ObjectManager om)
          Method to return a connection for the ObjectManager.
 NucleusSequence getNucleusSequence(ObjectManager om, 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.
 ValueGenerationManager getPoidManager()
          Accessor for the POIDManager for obtaining sequences.
 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(ObjectManager om, 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
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(StateManager 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(StateManager 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.
 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.
 
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

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

getAutoStartMechanism

public AutoStartMechanism getAutoStartMechanism()
Description copied from interface: StoreManager
Accessor for the AutoStartMechanism

Specified by:
getAutoStartMechanism in interface StoreManager
Returns:
may return null if auto start mechanism is not initialized

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,
                                                ObjectManager om)
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
om - Object Manager
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(ObjectManager om,
                        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:
om - The Object Manager
c - The class requiring the Extent
subclasses - Whether to include subclasses of 'c'
Returns:
The Extent.

getNucleusConnection

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

Specified by:
getNucleusConnection in interface StoreManager
Parameters:
om - ObjectManager
Returns:
The JPOX Connection

getNucleusSequence

public NucleusSequence getNucleusSequence(ObjectManager om,
                                          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:
om - The Object Manager
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.

getPoidManager

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

Specified by:
getPoidManager in interface StoreManager
Returns:
The POID manager 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

getStrategyValue

public java.lang.Object getStrategyValue(ObjectManager om,
                                         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:
om - The Object Manager
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(StateManager 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(StateManager 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

getConnection

public ManagedConnection getConnection(ObjectManager om)
Description copied from interface: StoreManager
Accessor for a transactional connection for the specified ObjectManager, using its current transaction.

Specified by:
getConnection in interface StoreManager
Parameters:
om - The ObjectManager
Returns:
The Connection


Copyright © 2009. All Rights Reserved.