|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.datanucleus.metadata.MetaDataManager
org.datanucleus.jdo.metadata.JDOMetaDataManager
public class JDOMetaDataManager
Manager of JDO MetaData information in JPOX.
Acts as a registry of JDO metadata so that metadata files don't need to be parsed multiple times. MetaData is stored as a FileMetaData, which contains PackageMetaData, which contains ClassMetaData, and so on. This maps exactly to the users model of their metadata. The users access point is getMetaDataForClass() which will check the known classes without metadata, then check the existing registered metdata, then check the valid locations for metdata files. This way, the metadata is managed from this single point.
When the MetaData is requested for a class, if it isnt already found, the valid file locations are checked for that class and the file containing it will be read. The MetaData for all classes, queries, sequences etc in that file are loaded at that point. In addition, all classes will be "populated" (meaning that their superclasses are assigned, and unspecified fields are added, and any related objects are linked). The MetaData of these classes are only initialised when they are absolutely needed - to avoid generating circular references in the initialisation process.
Each PMFContext typically will have its own MetaDataManager so allowing Meta-Data to be for different datastores. In addition, each PMF can allow MetaData files to use a particular suffix, hence we allow the JDO/ORM file suffices to be specifiable at construction.
| Field Summary | |
|---|---|
static int |
ALL_JDO_LOCATIONS
MetaData files will be searched in all possible locations defined in JDO 1.0, JDO 1.0.1, JDO 2.0 or later |
protected java.util.Map |
classMetaDataByInterface
Map of ClassMetaData, keyed by the interface class name (for "persistent-interface"s). |
static int |
JDO_1_0_0_LOCATIONS
MetaData files will be searched in all locations defined in JDO 1.0 |
static int |
JDO_1_0_1_LOCATIONS
MetaData files will be searched in all locations defined in JDO 1.0.1 |
protected int |
locationDefinition
Definition of which locations we accept for MetaData files. |
protected java.util.Map |
ormClassMetaDataByClass
Map of ClassMetaData from ORM files, keyed by the class name. |
protected org.datanucleus.jdo.metadata.JDOMetaDataManager.MetaDataRegisterClassListener |
registerListener
Listener for persistent class initialisations (since JDO uses a discovery process). |
| Constructor Summary | |
|---|---|
JDOMetaDataManager(OMFContext ctxt)
Constructor. |
|
| Method Summary | |
|---|---|
void |
addORMDataToClass(java.lang.Class c,
ClassLoaderResolver clr)
Load up and add the O/R mapping info for the specified class to the stored JDO ClassMetaData. |
void |
close()
Clear resources |
ClassMetaData |
getClassMetaDataForImplementationOfPersistentInterface(java.lang.String interfaceName)
Accessor for the metadata for the implementation of the specified "persistent-interface". |
java.lang.String |
getImplementationNameForPersistentInterface(java.lang.String interfaceName)
Accessor for the implementation name for the specified "persistent-interface". |
java.lang.String |
getJDOFileSuffix()
Convenience accessor for the JDO file suffix. |
java.lang.String |
getJDOQueryFileSuffix()
Convenience accessor for the JDOQuery file suffix. |
AbstractClassMetaData |
getMetaDataForClassInternal(java.lang.Class c,
ClassLoaderResolver clr)
Internal method for accessing the MetaData for a class. |
InterfaceMetaData |
getMetaDataForInterface(java.lang.Class c,
ClassLoaderResolver clr)
Main accessor for the MetaData for a "persistent-interface". |
QueryMetaData |
getMetaDataForQuery(java.lang.Class cls,
ClassLoaderResolver clr,
java.lang.String queryName)
Accessor for the MetaData for a named query for a class. |
SequenceMetaData |
getMetaDataForSequence(ClassLoaderResolver clr,
java.lang.String packageSequenceName)
Accessor for the MetaData for a Sequence in a package. |
java.lang.String |
getORMFileSuffix()
Convenience accessor for the ORM file suffix. |
protected java.lang.String |
getORMMappingName()
Convenience accessor for the mapping name. |
java.util.List |
getValidMetaDataLocationsForClass(java.lang.String fileExtension,
java.lang.String fileModifier,
java.lang.String className)
Method to return the valid metadata locations to contain a particular class. |
java.util.List |
getValidMetaDataLocationsForPackage(java.lang.String fileExtension,
java.lang.String fileModifier,
java.lang.String packageName)
Method to return the valid metadata locations to contain a particular package. |
boolean |
hasMetaDataForClass(java.lang.String className)
Convenience method to check if we have metadata present for the specified class. |
boolean |
isPersistentDefinitionImplementation(java.lang.String implName)
Convenience method to return if the passed class name is an implementation of a "persistent definition". |
boolean |
isPersistentInterface(java.lang.String name)
Convenience method to return if the passed class name is a "persistent-interface". |
boolean |
isPersistentInterfaceImplementation(java.lang.String interfaceName,
java.lang.String implName)
Convenience method to return if the passed class name is an implementation of the passed "persistent-interface". |
protected FileMetaData |
loadMetaDataForClass(java.lang.Class pc_class,
ClassLoaderResolver clr,
java.lang.String metadata_file_modifier,
java.lang.String metadata_file_extension,
boolean populate)
Method to find the Meta-Data file for a specified class. |
protected void |
logConfiguration()
Method to log the configuration of this manager. |
protected FileMetaData |
parseFile(java.net.URL fileURL)
Utility to parse a file, using the "jdo" MetaData handler. |
void |
registerFile(java.lang.String fileURLString,
FileMetaData filemd,
ClassLoaderResolver clr)
Method to take the FileMetaData and register the relevant parts of it with the assorted caches provided. |
void |
registerImplementationOfAbstractClass(ClassMetaData cmd,
java.lang.Class implClass,
ClassLoaderResolver clr)
Method to register the metadata for an implementation of a persistent abstract class. |
void |
registerPersistentInterface(InterfaceMetaData imd,
java.lang.Class implClass,
ClassLoaderResolver clr)
Method to register a persistent interface and its implementation with the MetaData system. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int ALL_JDO_LOCATIONS
public static final int JDO_1_0_0_LOCATIONS
public static final int JDO_1_0_1_LOCATIONS
protected int locationDefinition
protected java.util.Map ormClassMetaDataByClass
protected java.util.Map classMetaDataByInterface
protected org.datanucleus.jdo.metadata.JDOMetaDataManager.MetaDataRegisterClassListener registerListener
| Constructor Detail |
|---|
public JDOMetaDataManager(OMFContext ctxt)
ctxt - ObjectManagerFactory Context that this metadata manager operates in| Method Detail |
|---|
protected java.lang.String getORMMappingName()
public java.lang.String getJDOFileSuffix()
public java.lang.String getORMFileSuffix()
public java.lang.String getJDOQueryFileSuffix()
protected void logConfiguration()
logConfiguration in class MetaDataManagerpublic void close()
close in class MetaDataManagerprotected FileMetaData parseFile(java.net.URL fileURL)
parseFile in class MetaDataManagerfileURL - URL of the file
public void registerFile(java.lang.String fileURLString,
FileMetaData filemd,
ClassLoaderResolver clr)
registerFile in class MetaDataManagerfileURLString - URL of the metadata filefilemd - The File MetaDatapublic boolean hasMetaDataForClass(java.lang.String className)
hasMetaDataForClass in class MetaDataManagerclassName - The name of the class to check
public AbstractClassMetaData getMetaDataForClassInternal(java.lang.Class c,
ClassLoaderResolver clr)
getMetaDataForClassInternal in class MetaDataManagerc - The class to find MetaData for
public QueryMetaData getMetaDataForQuery(java.lang.Class cls,
ClassLoaderResolver clr,
java.lang.String queryName)
getMetaDataForQuery in class MetaDataManagercls - The class which has the query defined for itclr - the ClassLoaderResolverqueryName - Name of the query
public SequenceMetaData getMetaDataForSequence(ClassLoaderResolver clr,
java.lang.String packageSequenceName)
getMetaDataForSequence in class MetaDataManagerclr - the ClassLoaderResolverpackageSequenceName - Fully qualified name of the sequence (inc package name)
public void addORMDataToClass(java.lang.Class c,
ClassLoaderResolver clr)
addORMDataToClass in class MetaDataManagerc - The classclr - the ClassLoaderResolver
protected FileMetaData loadMetaDataForClass(java.lang.Class pc_class,
ClassLoaderResolver clr,
java.lang.String metadata_file_modifier,
java.lang.String metadata_file_extension,
boolean populate)
Allows 2 variations on the naming above. The first is a modifier which caters for a JDO 2.0 requirement whereby the user can specify a modifier such as "mysql", which would mean that this should search for filenames "package-mysql.jdo". The second variation is the suffix of the file. This is "jdo" by default, but JDO 2.0 has situations where "orm", or "jdoquery" are required as a suffix.
pc_class - The class/interface to retrieve the Meta-Data file forclr - the ClassLoaderResolvermetadata_file_modifier - Any modifier for the filenamemetadata_file_extension - File extension of MetaData files (e.g "jdo")populate - Whether to populate any loaded MetaData classes
public java.util.List getValidMetaDataLocationsForPackage(java.lang.String fileExtension,
java.lang.String fileModifier,
java.lang.String packageName)
fileExtension - File extension (e.g "jdo")fileModifier - Any modifier (for use when using ORM files package-mysql.orm, this is the "mysql" part)packageName - The package name to look for
public java.util.List getValidMetaDataLocationsForClass(java.lang.String fileExtension,
java.lang.String fileModifier,
java.lang.String className)
fileExtension - File extension (e.g "jdo")fileModifier - Any modifier (for use when using ORM files package-mysql.orm, this is the "mysql" part)className - The class name to look for
public InterfaceMetaData getMetaDataForInterface(java.lang.Class c,
ClassLoaderResolver clr)
getMetaDataForInterface in class MetaDataManagerc - The interface to find MetaData forclr - the ClassLoaderResolver
public boolean isPersistentInterface(java.lang.String name)
isPersistentInterface in class MetaDataManagername - Name if the interface
public boolean isPersistentInterfaceImplementation(java.lang.String interfaceName,
java.lang.String implName)
isPersistentInterfaceImplementation in class MetaDataManagerinterfaceName - Name of the persistent interfaceimplName - The implementation name
public boolean isPersistentDefinitionImplementation(java.lang.String implName)
isPersistentDefinitionImplementation in class MetaDataManagerimplName - The implementation name
public java.lang.String getImplementationNameForPersistentInterface(java.lang.String interfaceName)
getImplementationNameForPersistentInterface in class MetaDataManagerinterfaceName - The name of the persistent interface
public ClassMetaData getClassMetaDataForImplementationOfPersistentInterface(java.lang.String interfaceName)
getClassMetaDataForImplementationOfPersistentInterface in class MetaDataManagerinterfaceName - The name of the persistent interface
public void registerPersistentInterface(InterfaceMetaData imd,
java.lang.Class implClass,
ClassLoaderResolver clr)
registerPersistentInterface in class MetaDataManagerimd - MetaData for the interfaceimplClass - The implementation classclr - ClassLoader Resolver to use
public void registerImplementationOfAbstractClass(ClassMetaData cmd,
java.lang.Class implClass,
ClassLoaderResolver clr)
registerImplementationOfAbstractClass in class MetaDataManagercmd - MetaData for the abstract classimplClass - The implementation classclr - ClassLoader resolver
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||