|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jpox.metadata.MetaDataManager
public abstract class MetaDataManager
Manager of MetaData information in JPOX.
Acts as a registry of 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.
Maintains a list of all classes that have been checked for MetaData and don't have any available. This avoids the needs to look up MetaData multiple times finding the same result. Currently this list is for all ClassMetaData objects keyed by the class name.
| Field Summary | |
|---|---|
protected AnnotationManager |
annotationManager
Manager for annotations. |
protected java.util.Map |
classMetaDataByClass
Map of ClassMetaData, keyed by the class name. |
protected boolean |
enhancing
Indicator for whether this manager is managing the enhancement process, else it's runtime. |
protected java.util.Map |
fileMetaDataByURLString
Map of FileMetaData for the parsed files, keyed by the URL string. |
protected static Localiser |
LOCALISER
Localiser for messages. |
protected MetaDataParser |
metaDataParser
Parser for MetaData. |
protected PMFContext |
pmfContext
The PMF Context that this metadata manager is operating in. |
protected java.util.Map |
queryMetaDataByName
Map of QueryMetaData, keyed by the (class name + query name). |
protected java.util.Map |
sequenceMetaDataByPackageSequence
Map of SequenceMetaData, keyed by the package name and sequence name. |
protected java.util.Map |
tableGeneratorMetaDataByPackageSequence
Map of TableGeneratorMetaData, keyed by the package name and generator name. |
protected boolean |
validateMetaData
Flag whether we should validate the metadata files when parsing. |
| Constructor Summary | |
|---|---|
MetaDataManager(PMFContext pmfContext)
Constructor, specifying the PMFContext used. |
|
| Method Summary | |
|---|---|
void |
addORMDataToClass(java.lang.Class c,
ClassLoaderResolver clr)
Load up and add any O/R mapping info for the specified class to the stored ClassMetaData (if supported). |
void |
close()
Clear resources |
java.lang.String[] |
getClassesImplementingInterface(java.lang.String interfaceName,
ClassLoaderResolver clr)
Accessor for the list of names of classes that are declared to implement the specified interface (using <implements> in the MetaData). |
java.util.Collection |
getClassesWithMetaData()
Accessor for the names of the classes with MetaData currently registered with this manager. |
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". |
AbstractClassMetaData |
getMetaDataForClass(java.lang.Class c,
ClassLoaderResolver clr)
Main accessor for the MetaData for a class. |
AbstractClassMetaData |
getMetaDataForClass(java.lang.String className,
ClassLoaderResolver clr)
Accessor for the MetaData for a class given the name and a loader. |
abstract AbstractClassMetaData |
getMetaDataForClassInternal(java.lang.Class c,
ClassLoaderResolver clr)
Internal convenience method for accessing the MetaData for a class. |
AbstractClassMetaData |
getMetaDataForEntityName(java.lang.String entityName)
Accessor for the MetaData for a class. |
AbstractPropertyMetaData |
getMetaDataForField(java.lang.Class c,
ClassLoaderResolver clr,
java.lang.String field_name)
Accessor for the MetaData for a field of a class. |
AbstractPropertyMetaData |
getMetaDataForField(java.lang.String className,
java.lang.String fieldName,
ClassLoaderResolver clr)
Accessor for the MetaData for a field of a class. |
ClassMetaData |
getMetaDataForImplementationOfReference(java.lang.Class referenceClass,
java.lang.Object implValue,
ClassLoaderResolver clr)
Accessor for the MetaData for an implementation of a reference type. |
InterfaceMetaData |
getMetaDataForInterface(java.lang.Class c,
ClassLoaderResolver clr)
Accessor for the MetaData for an 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 seqName)
Accessor for the MetaData for a Sequence in a package. |
TableGeneratorMetaData |
getMetaDataForTableGenerator(ClassLoaderResolver clr,
java.lang.String genName)
Accessor for the MetaData for a TableGenerator in a package. |
PMFContext |
getPMFContext()
Accessor for the PMF Context that this manager is running in. |
java.util.List |
getReferencedClassMetaData(AbstractClassMetaData cmd,
java.lang.String dba_vendor_id,
ClassLoaderResolver clr)
Utility to return all ClassMetaData that is referenced from the supplier class. |
java.lang.String[] |
getSubclassesForClass(java.lang.String className,
boolean includeDescendents)
Accessor for the subclasses of a particular class |
abstract boolean |
hasMetaDataForClass(java.lang.String className)
Convenience method to check if we have metadata for the specified class |
protected void |
initialiseClassMetaData(ClassMetaData cmd,
java.lang.Class cls,
ClassLoaderResolver clr)
Utility to initialise the MetaData for a class, using the specified class. |
protected void |
initialiseFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
Initialise all classes/interfaces in a Meta-Data file. |
protected void |
initialiseInterfaceMetaData(InterfaceMetaData imd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
Utility to initialise the MetaData for a interface, using the specified class. |
protected abstract boolean |
isClassWithoutMetaData(java.lang.String class_name)
Accessor for whether a class doesn't have MetaData. |
boolean |
isEnhancing()
Accessor for whether we are managing the enhancement process. |
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 |
loadAnnotationsForClass(java.lang.Class cls,
ClassLoaderResolver clr,
boolean populate)
Method to load the annotations for the specified class and return the FileMetaData containing the class. |
ClassMetaData |
newClassObject(PackageMetaData pmd,
java.lang.String name,
java.lang.String identityType,
java.lang.String objectidClass,
java.lang.String requiresExtent,
java.lang.String detachable,
java.lang.String embeddedOnly,
java.lang.String modifier,
java.lang.String persistenceCapableSuperclass,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String entityName)
Utility to create a new class component. |
FieldMetaData |
newFieldObject(MetaData md,
java.lang.String name,
java.lang.String pk,
java.lang.String modifier,
java.lang.String defaultFetchGroup,
java.lang.String nullValue,
java.lang.String embedded,
java.lang.String serialized,
java.lang.String dependent,
java.lang.String mappedBy,
java.lang.String column,
java.lang.String table,
java.lang.String deleteAction,
java.lang.String indexed,
java.lang.String unique,
java.lang.String recursionDepth,
java.lang.String loadFetchGroup,
java.lang.String valueStrategy,
java.lang.String sequence,
java.lang.String fieldType)
Utility to create a new field component. |
PropertyMetaData |
newPropertyObject(MetaData md,
java.lang.String name,
java.lang.String pk,
java.lang.String modifier,
java.lang.String defaultFetchGroup,
java.lang.String nullValue,
java.lang.String embedded,
java.lang.String serialized,
java.lang.String dependent,
java.lang.String mappedBy,
java.lang.String column,
java.lang.String table,
java.lang.String deleteAction,
java.lang.String indexed,
java.lang.String unique,
java.lang.String recursionDepth,
java.lang.String loadFetchGroup,
java.lang.String valueStrategy,
java.lang.String sequence,
java.lang.String fieldType,
java.lang.String fieldName)
Utility to create a new property component. |
protected abstract FileMetaData |
parseFile(java.net.URL file_url)
Utility to parse a MetaData file. |
PersistenceFileMetaData[] |
parsePersistenceFiles()
Method to parse the available "persistence.xml" files returning the metadata for all found. |
protected void |
populateFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
Convenience method to populate all classes/interfaces in a Meta-Data file. |
ClassMetaData |
readMetaDataForClass(java.lang.String className)
Method to access the (already known) metadata for the specified class. |
AbstractPropertyMetaData |
readMetaDataForField(java.lang.String className,
java.lang.String fieldName)
Method to access the (already known) metadata for the field of the specified class. |
protected abstract void |
registerFile(java.lang.String fileURLString,
FileMetaData filemd)
Method to take the FileMetaData and register the relevant parts of it with the assorted caches provided. |
void |
registerPersistentInterface(InterfaceMetaData imd,
java.lang.Class implClass,
ClassLoaderResolver clr)
Method to register a persistent interface and its implementation with the MetaData system. |
protected void |
registerQueriesForFile(FileMetaData filemd)
Convenience method to register all queries found in the passed file. |
protected void |
registerSequencesForFile(FileMetaData filemd)
Convenience method to register all sequences found in the passed file. |
protected void |
registerTableGeneratorsForFile(FileMetaData filemd)
Convenience method to register all table generators found in the passed file. |
void |
setValidate(boolean validate)
Mutator for whether to validate the MetaData files for XML compliance. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final Localiser LOCALISER
protected PMFContext pmfContext
protected AnnotationManager annotationManager
protected MetaDataParser metaDataParser
protected boolean validateMetaData
protected java.util.Map fileMetaDataByURLString
protected java.util.Map classMetaDataByClass
protected java.util.Map queryMetaDataByName
protected java.util.Map sequenceMetaDataByPackageSequence
protected java.util.Map tableGeneratorMetaDataByPackageSequence
protected boolean enhancing
| Constructor Detail |
|---|
public MetaDataManager(PMFContext pmfContext)
pmfContext - PMF Context that this metadata manager operates in| Method Detail |
|---|
public ClassMetaData newClassObject(PackageMetaData pmd,
java.lang.String name,
java.lang.String identityType,
java.lang.String objectidClass,
java.lang.String requiresExtent,
java.lang.String detachable,
java.lang.String embeddedOnly,
java.lang.String modifier,
java.lang.String persistenceCapableSuperclass,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String entityName)
pmd - MetaData for packagename - Name of classidentityType - identity typeobjectidClass - name of objectid classrequiresExtent - Whether an extent is requireddetachable - Whether it is detachableembeddedOnly - Whether it is embedded onlymodifier - persistence modifierpersistenceCapableSuperclass - PC superclass (deprecated)catalog - catalog to useschema - schema to usetable - table to useentityName - the entity name required by JPA §4.3.1
public FieldMetaData newFieldObject(MetaData md,
java.lang.String name,
java.lang.String pk,
java.lang.String modifier,
java.lang.String defaultFetchGroup,
java.lang.String nullValue,
java.lang.String embedded,
java.lang.String serialized,
java.lang.String dependent,
java.lang.String mappedBy,
java.lang.String column,
java.lang.String table,
java.lang.String deleteAction,
java.lang.String indexed,
java.lang.String unique,
java.lang.String recursionDepth,
java.lang.String loadFetchGroup,
java.lang.String valueStrategy,
java.lang.String sequence,
java.lang.String fieldType)
md - Parent metadataname - Name of fieldpk - Whether it is PKmodifier - persistence modifierdefaultFetchGroup - Whether it is in DFGnullValue - Behaviour on null valueembedded - Whether it is embeddedserialized - Whether it is serialiseddependent - Whether it is dependentmappedBy - Field that it is mapped intocolumn - column to usetable - table to usedeleteAction - Action on FK deleteindexed - whether the column is indexedunique - Whether the column is uniquerecursionDepth - Recursion depthloadFetchGroup - Whether to load the fetch groupvalueStrategy - Value strategy for generating field valuessequence - Sequence name if requiredfieldType - Type of the field
public PropertyMetaData newPropertyObject(MetaData md,
java.lang.String name,
java.lang.String pk,
java.lang.String modifier,
java.lang.String defaultFetchGroup,
java.lang.String nullValue,
java.lang.String embedded,
java.lang.String serialized,
java.lang.String dependent,
java.lang.String mappedBy,
java.lang.String column,
java.lang.String table,
java.lang.String deleteAction,
java.lang.String indexed,
java.lang.String unique,
java.lang.String recursionDepth,
java.lang.String loadFetchGroup,
java.lang.String valueStrategy,
java.lang.String sequence,
java.lang.String fieldType,
java.lang.String fieldName)
md - Parent metadataname - Name of fieldpk - Whether it is PKmodifier - persistence modifierdefaultFetchGroup - Whether it is in DFGnullValue - Behaviour on null valueembedded - Whether it is embeddedserialized - Whether it is serialiseddependent - Whether it is dependentmappedBy - Field that it is mapped intocolumn - column to usetable - table to usedeleteAction - Action on FK deleteindexed - whether the column is indexedunique - Whether the column is uniquerecursionDepth - Recursion depthloadFetchGroup - Whether to load the fetch groupvalueStrategy - Value strategy for generating field valuessequence - Sequence name if requiredfieldType - Type of the fieldfieldName - Name of the field
public void setValidate(boolean validate)
validate - Whether to validatepublic PMFContext getPMFContext()
public void close()
public boolean isEnhancing()
public java.util.Collection getClassesWithMetaData()
public abstract boolean hasMetaDataForClass(java.lang.String className)
className - The name of the class to check
protected abstract boolean isClassWithoutMetaData(java.lang.String class_name)
class_name - Name of the class
public AbstractClassMetaData getMetaDataForClass(java.lang.String className,
ClassLoaderResolver clr)
className - Name of the class to find MetaData forclr - ClassLoaderResolver resolver for use in loading the class.
public AbstractClassMetaData getMetaDataForClass(java.lang.Class c,
ClassLoaderResolver clr)
c - The class to find MetaData forclr - the ClassLoaderResolver
public AbstractClassMetaData getMetaDataForEntityName(java.lang.String entityName)
entityName - The entity name to find MetaData for
public ClassMetaData readMetaDataForClass(java.lang.String className)
className - Name of the class
public AbstractPropertyMetaData readMetaDataForField(java.lang.String className,
java.lang.String fieldName)
className - Name of the classfieldName - Name of the field
public abstract AbstractClassMetaData getMetaDataForClassInternal(java.lang.Class c,
ClassLoaderResolver clr)
c - The class to find MetaData for
public java.lang.String[] getSubclassesForClass(java.lang.String className,
boolean includeDescendents)
className - Name of the class that we want the known subclasses for.includeDescendents - Whether to include subclasses of subclasses etc
public java.lang.String[] getClassesImplementingInterface(java.lang.String interfaceName,
ClassLoaderResolver clr)
interfaceName - Name of the interfaceclr - The ClassLoaderResolver
public void addORMDataToClass(java.lang.Class c,
ClassLoaderResolver clr)
c - The classclr - the ClassLoaderResolver
public ClassMetaData getMetaDataForImplementationOfReference(java.lang.Class referenceClass,
java.lang.Object implValue,
ClassLoaderResolver clr)
referenceClass - The reference class to find MetaData forimplValue - Object of an implementation class, to return if possible (null=ignore)clr - ClassLoader resolver
public AbstractPropertyMetaData getMetaDataForField(java.lang.String className,
java.lang.String fieldName,
ClassLoaderResolver clr)
className - The name of the class owning the fieldfieldName - The name of the field to find MetaData forclr - ClassLoaderResolver resolver for any loading of classes
public AbstractPropertyMetaData getMetaDataForField(java.lang.Class c,
ClassLoaderResolver clr,
java.lang.String field_name)
c - The class owning the fieldclr - the ClassLoaderResolverfield_name - The name of the field to find MetaData for
public QueryMetaData getMetaDataForQuery(java.lang.Class cls,
ClassLoaderResolver clr,
java.lang.String queryName)
cls - The class which has the query defined for itclr - the ClassLoaderResolverqueryName - Name of the query
public SequenceMetaData getMetaDataForSequence(ClassLoaderResolver clr,
java.lang.String seqName)
clr - the ClassLoaderResolverseqName - Name of the package (fully qualified if necessary)
public TableGeneratorMetaData getMetaDataForTableGenerator(ClassLoaderResolver clr,
java.lang.String genName)
clr - the ClassLoaderResolvergenName - Name of the package (fully qualified if necessary)
public InterfaceMetaData getMetaDataForInterface(java.lang.Class c,
ClassLoaderResolver clr)
c - The interface to find MetaData forclr - the ClassLoaderResolver
public boolean isPersistentInterface(java.lang.String name)
name - Name if the interface
public boolean isPersistentInterfaceImplementation(java.lang.String interfaceName,
java.lang.String implName)
interfaceName - Name of the persistent interfaceimplName - The implementation name
public java.lang.String getImplementationNameForPersistentInterface(java.lang.String interfaceName)
interfaceName - The name of the persistent interface
public ClassMetaData getClassMetaDataForImplementationOfPersistentInterface(java.lang.String interfaceName)
interfaceName - The name of the persistent interface
public void registerPersistentInterface(InterfaceMetaData imd,
java.lang.Class implClass,
ClassLoaderResolver clr)
imd - MetaData for the interfaceimplClass - The implementation classclr - ClassLoader Resolver to usepublic PersistenceFileMetaData[] parsePersistenceFiles()
protected abstract FileMetaData parseFile(java.net.URL file_url)
file_url - URL of the file
protected abstract void registerFile(java.lang.String fileURLString,
FileMetaData filemd)
fileURLString - URL of the metadata filefilemd - The File MetaDataprotected void registerSequencesForFile(FileMetaData filemd)
filemd - MetaData for the fileprotected void registerTableGeneratorsForFile(FileMetaData filemd)
filemd - MetaData for the fileprotected void registerQueriesForFile(FileMetaData filemd)
filemd - MetaData for the file
protected void populateFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
filemd - The MetaData fileclr - Class Loader to use in populationprimary - the primary ClassLoader to use (or null)
protected void initialiseFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
filemd - the FileMetaDataclr - ClassLoader resolver to useprimary - the primary ClassLoader to use (or null)
protected void initialiseClassMetaData(ClassMetaData cmd,
java.lang.Class cls,
ClassLoaderResolver clr)
cmd - The classes metadatacls - The class to use as a basis for initialisationclr - ClassLoader resolver to use
protected void initialiseInterfaceMetaData(InterfaceMetaData imd,
ClassLoaderResolver clr,
java.lang.ClassLoader primary)
imd - The interface metadataclr - The loader of the interfaceprimary - the primary ClassLoader to use (or null)
protected FileMetaData loadAnnotationsForClass(java.lang.Class cls,
ClassLoaderResolver clr,
boolean populate)
cls - The classclr - ClassLoader resolverpopulate - Whether to populate the data
public java.util.List getReferencedClassMetaData(AbstractClassMetaData cmd,
java.lang.String dba_vendor_id,
ClassLoaderResolver clr)
cmd - The origin class's MetaData.dba_vendor_id - The Vendor id of the database adapter in use.
(Used in handling "views" support)clr - ClassLoaderResolver resolver for loading any classes.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||