public abstract class MetaDataManagerImpl extends Object implements Serializable, MetaDataManager
Metadata can be loaded into the MetaDataManager in two ways
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.
Users can register interest in knowing when metadata for classes are loaded by registering a listener using the addListener method. This will then notify the listener when metadata for any class is initialised. This provides the opportunity to reject the metadata where particular features are not supported. For example a StoreManager could register a listener where it doesn't support datastore identity and throw an InvalidMetaDataException. This would then filter back out to the user for the operation they invoked
MetaDataManager is intended to be thread-safe. All maps are ConcurrentHashMap to provide basic multithread usage. In addition all mutating methods make use of an update "lock" so that only one thread can update the metadata definition at any time.
Modifier and Type | Field and Description |
---|---|
protected boolean |
allowAnnotations
Whether we allow annotations metadata.
|
protected boolean |
allowMetaDataLoad
Flag defining if we allow metadata load currently.
|
protected boolean |
allowORM
Whether we allow ORM XML metadata.
|
protected boolean |
allowXML
Whether we allow XML metadata.
|
protected AnnotationManager |
annotationManager
Manager for annotations.
|
protected Collection<String> |
classesWithoutPersistenceInfo
Cache of class names that are known to not have MetaData/annotations.
|
protected MultiMap |
classMetaDataByAppIdClassName
Map of class metadata, keyed by the application-id object-id class name (not SingleField).
|
protected Map<String,AbstractClassMetaData> |
classMetaDataByClass
Map of ClassMetaData, keyed by the class name.
|
protected Map<String,AbstractClassMetaData> |
classMetaDataByDiscriminatorName
Map of ClassMetaData, keyed by the class discriminator name.
|
protected Map<String,AbstractClassMetaData> |
classMetaDataByEntityName
Map of ClassMetaData, keyed by the JPA "entity name".
|
protected Map<String,Set<String>> |
concreteSubclassNamesByClassName
Cache of names of concrete subclass for a class name.
|
protected boolean |
defaultNullable
Flag defining the default nullability for fields.
|
protected Map<String,Set<String>> |
directSubclassesByClass
Cache subclass information as that is expensive to compute, keyed by class name
|
protected Map<String,org.datanucleus.metadata.MetaDataManagerImpl.DiscriminatorLookup> |
discriminatorLookupByRootClassName |
protected Map<String,FetchPlanMetaData> |
fetchPlanMetaDataByName
Map of FetchPlanMetaData, keyed by the fetch plan name.
|
protected Map<String,FileMetaData> |
fileMetaDataByURLString
Map of FileMetaData for the parsed files, keyed by the URL string.
|
protected Set<MetaDataListener> |
listeners
Listeners for metadata load.
|
protected NucleusContext |
nucleusContext
The NucleusContext that this metadata manager is operating in.
|
protected Map<String,QueryMetaData> |
queryMetaDataByName
Map of QueryMetaData, keyed by the (class name + query name).
|
protected Map<String,QueryResultMetaData> |
queryResultMetaDataByName
Map of QueryResultMetaData keyed by the name.
|
protected Map<String,SequenceMetaData> |
sequenceMetaDataByPackageSequence
Map of SequenceMetaData, keyed by the package name and sequence name.
|
protected Map<String,StoredProcQueryMetaData> |
storedProcQueryMetaDataByName
Map of StoredProcQueryMetaData, keyed by the (class name + query name).
|
protected boolean |
supportXMLNamespaces
Flag whether we should be (XML) namespace aware when parsing.
|
protected Map<String,TableGeneratorMetaData> |
tableGeneratorMetaDataByPackageSequence
Map of TableGeneratorMetaData, keyed by the package name and generator name.
|
protected Lock |
updateLock |
protected Map<String,AbstractClassMetaData> |
usableClassMetaDataByClass |
protected int |
userMetaDataNumber
Number of user metadata items.
|
protected ArrayList<FileMetaData> |
utilisedFileMetaData
Temporary list of the FileMetaData objects utilised in this call for metadata.
|
protected boolean |
validateXML
Flag whether we should validate the (XML) metadata files when parsing.
|
Constructor and Description |
---|
MetaDataManagerImpl(NucleusContext ctx)
Constructor, specifying the context used.
|
Modifier and Type | Method and Description |
---|---|
void |
abstractClassMetaDataInitialised(AbstractClassMetaData cmd)
Method called (by AbstractClassMetaData.initialise()) when a class has its metadata initialised.
|
void |
addAnnotationsDataToClass(Class c,
AbstractClassMetaData cmd,
ClassLoaderResolver clr)
Load up and add any annotations mapping info for the specified class to the stored ClassMetaData.
|
void |
addORMDataToClass(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() |
void |
deregisterListener(MetaDataListener listener)
Method to deregister a listener from being notified when metadata for a class/interface is initialised.
|
AnnotationManager |
getAnnotationManager() |
ApiAdapter |
getApiAdapter() |
String[] |
getClassesImplementingInterface(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).
|
Collection<String> |
getClassesWithMetaData()
Accessor for the names of the classes with MetaData currently registered with this manager.
|
ClassMetaData |
getClassMetaDataForImplementationOfPersistentInterface(String interfaceName)
Accessor for the metadata for the implementation of the specified "persistent-interface".
|
Collection<AbstractClassMetaData> |
getClassMetaDataWithApplicationId(String objectIdClassName)
Accessor for the metadata for the class(es) with the specified object-id class name as PK.
|
String |
getClassNameForDiscriminatorValueWithRoot(AbstractClassMetaData rootCmd,
String discrimValue) |
String |
getClassNameFromDiscriminatorValue(String discrimValue,
DiscriminatorMetaData dismd) |
String[] |
getConcreteSubclassesForClass(String className)
Accessor for the names of all concrete subclasses of the provided class.
|
String |
getDiscriminatorValueForClass(AbstractClassMetaData cmd,
String discrimValue) |
String |
getEnhancedMethodNamePrefix() |
FileMetaData[] |
getFileMetaData()
Accessor for all FileMetaData currently managed here.
|
String |
getImplementationNameForPersistentInterface(String interfaceName)
Accessor for the implementation name for the specified "persistent-interface".
|
AbstractClassMetaData |
getMetaDataForClass(Class c,
ClassLoaderResolver clr)
Main accessor for the MetaData for a class.
|
AbstractClassMetaData |
getMetaDataForClass(String className,
ClassLoaderResolver clr)
Accessor for the MetaData for a class given the name and a loader.
|
AbstractClassMetaData |
getMetaDataForClassInternal(Class c,
ClassLoaderResolver clr)
Internal convenience method for accessing the MetaData for a class.
|
AbstractClassMetaData |
getMetaDataForDiscriminator(String discriminator)
Accessor for the MetaData for a class given the "discriminator".
|
AbstractClassMetaData |
getMetaDataForEntityName(String entityName)
Accessor for the MetaData for a class given the "entity-name".
|
FetchPlanMetaData |
getMetaDataForFetchPlan(String name)
Accessor for the MetaData for a named fetch plan.
|
ClassMetaData |
getMetaDataForImplementationOfReference(Class referenceClass,
Object implValue,
ClassLoaderResolver clr)
Accessor for the MetaData for an implementation of a reference type.
|
InterfaceMetaData |
getMetaDataForInterface(Class c,
ClassLoaderResolver clr)
Accessor for the MetaData for an interface.
|
QueryMetaData |
getMetaDataForQuery(Class cls,
ClassLoaderResolver clr,
String queryName)
Accessor for the MetaData for a named query for a class.
|
QueryResultMetaData |
getMetaDataForQueryResult(String name)
Accessor for the MetaData for a QueryResult.
|
SequenceMetaData |
getMetaDataForSequence(ClassLoaderResolver clr,
String seqName)
Accessor for the MetaData for a Sequence in a package.
|
StoredProcQueryMetaData |
getMetaDataForStoredProcQuery(Class cls,
ClassLoaderResolver clr,
String queryName)
Accessor for the MetaData for a named stored procedure query for a class.
|
TableGeneratorMetaData |
getMetaDataForTableGenerator(ClassLoaderResolver clr,
String genName)
Accessor for the MetaData for a TableGenerator in a package.
|
Set<String> |
getNamedQueryNames()
Convenience method to access the names of named queries that are registered with this manager.
|
NucleusContext |
getNucleusContext() |
List<AbstractClassMetaData> |
getReferencedClasses(String[] classNames,
ClassLoaderResolver clr)
Convenience method to get the MetaData for all referenced classes with the passed set of classes as root.
|
protected List<AbstractClassMetaData> |
getReferencedClassMetaData(AbstractClassMetaData cmd,
ClassLoaderResolver clr)
Utility to return all ClassMetaData that is referenced from the supplier class.
|
protected MetaDataScanner |
getScanner(ClassLoaderResolver clr)
Accessor for any scanner for metadata classes (optional).
|
String[] |
getSubclassesForClass(String className,
boolean includeDescendents)
Accessor for the subclasses of a particular class
|
boolean |
hasMetaDataForClass(String className)
Convenience method to check if we have metadata present for the specified class.
|
protected void |
initialiseAbstractClassMetaData(AbstractClassMetaData cmd,
ClassLoaderResolver clr)
Convenience method to initialise the MetaData for the specified class/interface.
|
protected void |
initialiseClassMetaData(ClassMetaData cmd,
Class cls,
ClassLoaderResolver clr)
Utility to initialise the MetaData for a class, using the specified class.
|
protected void |
initialiseFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
ClassLoader primary)
Initialise all classes/interfaces in a Meta-Data file.
|
protected void |
initialiseFileMetaDataForUse(Collection<FileMetaData> fileMetaData,
ClassLoaderResolver clr)
Method to initialise the provided FileMetaData, ready for use.
|
protected void |
initialiseInterfaceMetaData(InterfaceMetaData imd,
ClassLoaderResolver clr,
ClassLoader primary)
Utility to initialise the MetaData for a interface, using the specified
class.
|
boolean |
isClassPersistable(String className)
Convenience method to return if the specified class is a known persistable class.
|
protected boolean |
isClassWithoutPersistenceInfo(String className)
Accessor for whether a class doesn't have MetaData or annotations.
|
boolean |
isDefaultNullable()
Acessor for the default nullability of fields.
|
boolean |
isEnhancerField(String fieldName) |
boolean |
isEnhancing()
Accessor for whether we are managing the enhancement process.
|
boolean |
isFieldTypePersistable(Class type)
Utility to return if this field is persistable.
|
boolean |
isPersistentDefinitionImplementation(String implName)
Convenience method to return if the passed class name is an implementation of a "persistent definition".
|
boolean |
isPersistentInterface(String name)
Convenience method to return if the passed class name is a "persistent-interface".
|
boolean |
isPersistentInterfaceImplementation(String interfaceName,
String implName)
Convenience method to return if the passed class name is an implementation of the passed "persistent-interface".
|
protected FileMetaData |
loadAnnotationsForClass(Class cls,
ClassLoaderResolver clr,
boolean register,
boolean populate)
Method to load the annotations for the specified class and return the FileMetaData containing the class.
|
FileMetaData[] |
loadClasses(String[] classNames,
ClassLoader loader)
Method to load up all metadata for the specified classes.
|
Collection<FileMetaData> |
loadFiles(String[] metadataFiles,
ClassLoaderResolver clr)
Method to load the metadata from the specified files.
|
FileMetaData[] |
loadJar(String jarFileName,
ClassLoader loader)
Initialisation method to load the metadata provided by the specified jar.
|
FileMetaData[] |
loadMetadataFiles(String[] metadataFiles,
ClassLoader loader)
Method to load up all metadata defined by the specified metadata files.
|
protected abstract AbstractClassMetaData |
loadMetaDataForClass(Class c,
ClassLoaderResolver clr)
Load the metadata for the specified class (if available).
|
FileMetaData[] |
loadPersistenceUnit(PersistenceUnitMetaData pumd,
ClassLoader loader)
Initialisation method to to load all class metadata defined by the "persistence-unit".
|
void |
loadUserMetaData(FileMetaData fileMetaData,
ClassLoader loader)
Method to load user-provided (dynamic) metadata (from the JDO MetaData API).
|
protected abstract FileMetaData |
parseFile(URL fileURL)
Utility to parse an XML metadata file.
|
protected boolean |
populateAbstractClassMetaData(AbstractClassMetaData cmd,
ClassLoaderResolver clr,
ClassLoader loader)
Convenience method to populate the MetaData for the specified class/interface.
|
protected void |
populateFileMetaData(FileMetaData filemd,
ClassLoaderResolver clr,
ClassLoader primary)
Convenience method to populate all classes/interfaces in a Meta-Data file.
|
protected void |
postProcessClassMetaData(AbstractClassMetaData cmd,
ClassLoaderResolver clr)
Method that will perform any necessary post-processing on metadata.
|
protected void |
processListenerLoadingCall() |
AbstractClassMetaData |
readMetaDataForClass(String className)
Method to access the (already known) metadata for the specified class.
|
AbstractMemberMetaData |
readMetaDataForMember(String className,
String memberName)
Method to access the (already known) metadata for the field/property of the specified class.
|
void |
registerDiscriminatorValueForClass(AbstractClassMetaData cmd,
String discrimValue) |
protected void |
registerFetchPlansForFile(FileMetaData filemd)
Convenience method to register all FetchPlans found in the passed file.
|
abstract void |
registerFile(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,
Class implClass,
ClassLoaderResolver clr)
Method to register the metadata for an implementation of a persistent abstract class.
|
void |
registerListener(MetaDataListener listener)
Method to register a listener to be notified when metadata for a class/interface is initialised.
|
protected void |
registerMetaDataForClass(String fullClassName,
AbstractClassMetaData cmd)
Internal method called when we want to register the metadata for a class/interface.
|
void |
registerNamedQuery(QueryMetaData qmd)
Convenience method to register a query under a name.
|
void |
registerPersistentInterface(InterfaceMetaData imd,
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 |
registerQueryResultMetaDataForFile(FileMetaData filemd)
Convenience method to register all table generators found in the passed file.
|
void |
registerSequencesForFile(FileMetaData filemd)
Convenience method to register all sequences found in the passed file.
|
protected void |
registerStoredProcQueriesForFile(FileMetaData filemd)
Convenience method to register all stored proc queries found in the passed file.
|
void |
registerTableGeneratorsForFile(FileMetaData filemd)
Convenience method to register all table generators found in the passed file.
|
void |
setAllowAnnotations(boolean allow) |
void |
setAllowMetaDataLoad(boolean allow) |
void |
setAllowXML(boolean allow) |
void |
setDefaultNullable(boolean defaultNullable) |
void |
setValidate(boolean validate)
Mutator for whether to validate the MetaData files for XML compliance.
|
void |
setXmlNamespaceAware(boolean aware)
Mutator for whether to support XML namespaces.
|
boolean |
supportsORM()
Accessor for whether the MetaData manager supports ORM concepts and metadata.
|
void |
unloadMetaDataForClass(String className)
Convenience method to allow the unloading of metadata, for example where the user wants to reload a class definition
and that class maybe has different metadata with the new definition.
|
protected final NucleusContext nucleusContext
protected final AnnotationManager annotationManager
protected boolean validateXML
protected boolean supportXMLNamespaces
protected boolean allowMetaDataLoad
protected boolean allowXML
protected boolean allowAnnotations
protected boolean allowORM
protected boolean defaultNullable
protected Lock updateLock
protected Collection<String> classesWithoutPersistenceInfo
protected Map<String,AbstractClassMetaData> classMetaDataByClass
protected Map<String,AbstractClassMetaData> usableClassMetaDataByClass
protected Map<String,FileMetaData> fileMetaDataByURLString
protected Map<String,AbstractClassMetaData> classMetaDataByEntityName
protected Map<String,AbstractClassMetaData> classMetaDataByDiscriminatorName
protected Map<String,Set<String>> directSubclassesByClass
protected Map<String,Set<String>> concreteSubclassNamesByClassName
protected Map<String,QueryMetaData> queryMetaDataByName
protected Map<String,StoredProcQueryMetaData> storedProcQueryMetaDataByName
protected Map<String,FetchPlanMetaData> fetchPlanMetaDataByName
protected Map<String,SequenceMetaData> sequenceMetaDataByPackageSequence
protected Map<String,TableGeneratorMetaData> tableGeneratorMetaDataByPackageSequence
protected Map<String,QueryResultMetaData> queryResultMetaDataByName
protected MultiMap classMetaDataByAppIdClassName
protected Set<MetaDataListener> listeners
protected int userMetaDataNumber
protected Map<String,org.datanucleus.metadata.MetaDataManagerImpl.DiscriminatorLookup> discriminatorLookupByRootClassName
protected ArrayList<FileMetaData> utilisedFileMetaData
public MetaDataManagerImpl(NucleusContext ctx)
ctx
- context that this metadata manager operates inpublic void close()
close
in interface MetaDataManager
public void registerListener(MetaDataListener listener)
MetaDataManager
registerListener
in interface MetaDataManager
listener
- The listenerpublic void deregisterListener(MetaDataListener listener)
MetaDataManager
deregisterListener
in interface MetaDataManager
listener
- The listenerpublic String getEnhancedMethodNamePrefix()
getEnhancedMethodNamePrefix
in interface MetaDataManager
public boolean isEnhancerField(String fieldName)
isEnhancerField
in interface MetaDataManager
public void setAllowMetaDataLoad(boolean allow)
setAllowMetaDataLoad
in interface MetaDataManager
public void setAllowXML(boolean allow)
setAllowXML
in interface MetaDataManager
public void setDefaultNullable(boolean defaultNullable)
setDefaultNullable
in interface MetaDataManager
public void setAllowAnnotations(boolean allow)
setAllowAnnotations
in interface MetaDataManager
public boolean supportsORM()
MetaDataManager
supportsORM
in interface MetaDataManager
public boolean isDefaultNullable()
MetaDataManager
isDefaultNullable
in interface MetaDataManager
public boolean isEnhancing()
MetaDataManager
isEnhancing
in interface MetaDataManager
public void setValidate(boolean validate)
MetaDataManager
setValidate
in interface MetaDataManager
validate
- Whether to validatepublic void setXmlNamespaceAware(boolean aware)
MetaDataManager
setXmlNamespaceAware
in interface MetaDataManager
aware
- Whether to be XML namespace awarepublic NucleusContext getNucleusContext()
getNucleusContext
in interface MetaDataManager
public ApiAdapter getApiAdapter()
getApiAdapter
in interface MetaDataManager
public AnnotationManager getAnnotationManager()
getAnnotationManager
in interface MetaDataManager
public FileMetaData[] loadMetadataFiles(String[] metadataFiles, ClassLoader loader)
MetaDataManager
loadMetadataFiles
in interface MetaDataManager
metadataFiles
- The metadata filesloader
- ClassLoader to use in loading the metadata (if any)public FileMetaData[] loadClasses(String[] classNames, ClassLoader loader)
MetaDataManager
loadClasses
in interface MetaDataManager
classNames
- The class namesloader
- ClassLoader to use in loading the classes (if any)public FileMetaData[] loadJar(String jarFileName, ClassLoader loader)
MetaDataManager
loadJar
in interface MetaDataManager
jarFileName
- Name of the jar fileloader
- ClassLoader to use in loading of the jar (if any)public FileMetaData[] loadPersistenceUnit(PersistenceUnitMetaData pumd, ClassLoader loader)
MetaDataManager
loadPersistenceUnit
in interface MetaDataManager
pumd
- The MetaData for this "persistence-unit"loader
- ClassLoader to use in loading of the persistence unit (if any)public void loadUserMetaData(FileMetaData fileMetaData, ClassLoader loader)
MetaDataManager
loadUserMetaData
in interface MetaDataManager
fileMetaData
- FileMetaData to register/populate/initialiseloader
- ClassLoader to use in loading the metadata (if any)protected abstract AbstractClassMetaData loadMetaDataForClass(Class c, ClassLoaderResolver clr)
c
- The classclr
- ClassLoader resolverpublic void unloadMetaDataForClass(String className)
MetaDataManager
unloadMetaDataForClass
in interface MetaDataManager
className
- Name of the classprotected MetaDataScanner getScanner(ClassLoaderResolver clr)
clr
- The classloader resolverprotected void initialiseFileMetaDataForUse(Collection<FileMetaData> fileMetaData, ClassLoaderResolver clr)
fileMetaData
- Collection of FileMetaDataclr
- ClassLoader resolverNucleusUserException
- thrown if an error occurs during the populate/initialise of the supplied metadata.public Collection<FileMetaData> loadFiles(String[] metadataFiles, ClassLoaderResolver clr)
MetaDataManager
loadFiles
in interface MetaDataManager
metadataFiles
- array of MetaData filesclr
- ClassLoader resolverpublic boolean isClassPersistable(String className)
MetaDataManager
isClassPersistable
in interface MetaDataManager
className
- Name of the classpublic FileMetaData[] getFileMetaData()
MetaDataManager
getFileMetaData
in interface MetaDataManager
public Collection<String> getClassesWithMetaData()
MetaDataManager
getClassesWithMetaData
in interface MetaDataManager
public boolean hasMetaDataForClass(String className)
MetaDataManager
hasMetaDataForClass
in interface MetaDataManager
className
- The name of the class to checkprotected boolean isClassWithoutPersistenceInfo(String className)
className
- Name of the classpublic Collection<AbstractClassMetaData> getClassMetaDataWithApplicationId(String objectIdClassName)
MetaDataManager
getClassMetaDataWithApplicationId
in interface MetaDataManager
objectIdClassName
- The object-id class namepublic AbstractClassMetaData getMetaDataForClass(String className, ClassLoaderResolver clr)
MetaDataManager
getMetaDataForClass
in interface MetaDataManager
className
- Name of the class to find MetaData forclr
- ClassLoaderResolver resolver for use in loading the class.public AbstractClassMetaData getMetaDataForClass(Class c, ClassLoaderResolver clr)
MetaDataManager
getMetaDataForClass
in interface MetaDataManager
c
- The class to find MetaData forclr
- the ClassLoaderResolverprotected void processListenerLoadingCall()
public AbstractClassMetaData getMetaDataForEntityName(String entityName)
MetaDataManager
getMetaDataForEntityName
in interface MetaDataManager
entityName
- The entity name to find MetaData forpublic AbstractClassMetaData getMetaDataForDiscriminator(String discriminator)
MetaDataManager
getMetaDataForDiscriminator
in interface MetaDataManager
discriminator
- The discriminator name to find MetaData forpublic AbstractClassMetaData readMetaDataForClass(String className)
MetaDataManager
readMetaDataForClass
in interface MetaDataManager
className
- Name of the classpublic AbstractMemberMetaData readMetaDataForMember(String className, String memberName)
MetaDataManager
readMetaDataForMember
in interface MetaDataManager
className
- Name of the classmemberName
- Name of the field/propertypublic AbstractClassMetaData getMetaDataForClassInternal(Class c, ClassLoaderResolver clr)
MetaDataManager
getMetaDataForClassInternal
in interface MetaDataManager
c
- The class to find MetaData forclr
- ClassLoader resolverprotected void registerMetaDataForClass(String fullClassName, AbstractClassMetaData cmd)
fullClassName
- Name of the classcmd
- The metadatapublic String[] getClassesImplementingInterface(String interfaceName, ClassLoaderResolver clr)
MetaDataManager
getClassesImplementingInterface
in interface MetaDataManager
interfaceName
- Name of the interfaceclr
- The ClassLoaderResolverpublic void addORMDataToClass(Class c, ClassLoaderResolver clr)
addORMDataToClass
in interface MetaDataManager
c
- The classclr
- ClassLoader resolverpublic void addAnnotationsDataToClass(Class c, AbstractClassMetaData cmd, ClassLoaderResolver clr)
addAnnotationsDataToClass
in interface MetaDataManager
c
- The classcmd
- the metadata to add annotation toclr
- ClassLoader resolverpublic ClassMetaData getMetaDataForImplementationOfReference(Class referenceClass, Object implValue, ClassLoaderResolver clr)
MetaDataManager
getMetaDataForImplementationOfReference
in interface MetaDataManager
referenceClass
- The reference class to find MetaData forimplValue
- Object of an implementation class, to return if possible (null=ignore)clr
- ClassLoader resolverpublic QueryMetaData getMetaDataForQuery(Class cls, ClassLoaderResolver clr, String queryName)
MetaDataManager
getMetaDataForQuery
in interface MetaDataManager
cls
- The class which has the query defined for itclr
- the ClassLoaderResolverqueryName
- Name of the querypublic Set<String> getNamedQueryNames()
MetaDataManager
getNamedQueryNames
in interface MetaDataManager
public StoredProcQueryMetaData getMetaDataForStoredProcQuery(Class cls, ClassLoaderResolver clr, String queryName)
MetaDataManager
getMetaDataForStoredProcQuery
in interface MetaDataManager
cls
- The class which has the query defined for itclr
- the ClassLoaderResolverqueryName
- Name of the (stored proc) querypublic FetchPlanMetaData getMetaDataForFetchPlan(String name)
MetaDataManager
getMetaDataForFetchPlan
in interface MetaDataManager
name
- Name of the fetch planpublic SequenceMetaData getMetaDataForSequence(ClassLoaderResolver clr, String seqName)
MetaDataManager
getMetaDataForSequence
in interface MetaDataManager
clr
- the ClassLoaderResolverseqName
- Name of the package (fully qualified if necessary)public TableGeneratorMetaData getMetaDataForTableGenerator(ClassLoaderResolver clr, String genName)
MetaDataManager
getMetaDataForTableGenerator
in interface MetaDataManager
clr
- the ClassLoaderResolvergenName
- Name of the package (fully qualified if necessary)public QueryResultMetaData getMetaDataForQueryResult(String name)
MetaDataManager
getMetaDataForQueryResult
in interface MetaDataManager
name
- Name of the query resultpublic InterfaceMetaData getMetaDataForInterface(Class c, ClassLoaderResolver clr)
MetaDataManager
getMetaDataForInterface
in interface MetaDataManager
c
- The interface to find MetaData forclr
- the ClassLoaderResolverpublic boolean isPersistentInterface(String name)
MetaDataManager
isPersistentInterface
in interface MetaDataManager
name
- Name if the interfacepublic boolean isPersistentInterfaceImplementation(String interfaceName, String implName)
MetaDataManager
isPersistentInterfaceImplementation
in interface MetaDataManager
interfaceName
- Name of the persistent interfaceimplName
- The implementation namepublic boolean isPersistentDefinitionImplementation(String implName)
MetaDataManager
isPersistentDefinitionImplementation
in interface MetaDataManager
implName
- The implementation namepublic String getImplementationNameForPersistentInterface(String interfaceName)
MetaDataManager
getImplementationNameForPersistentInterface
in interface MetaDataManager
interfaceName
- The name of the persistent interfacepublic ClassMetaData getClassMetaDataForImplementationOfPersistentInterface(String interfaceName)
MetaDataManager
getClassMetaDataForImplementationOfPersistentInterface
in interface MetaDataManager
interfaceName
- The name of the persistent interfacepublic void registerPersistentInterface(InterfaceMetaData imd, Class implClass, ClassLoaderResolver clr)
MetaDataManager
registerPersistentInterface
in interface MetaDataManager
imd
- MetaData for the interfaceimplClass
- The implementation classclr
- ClassLoader Resolver to usepublic void registerImplementationOfAbstractClass(ClassMetaData cmd, Class implClass, ClassLoaderResolver clr)
MetaDataManager
registerImplementationOfAbstractClass
in interface MetaDataManager
cmd
- MetaData for the abstract classimplClass
- The implementation classclr
- ClassLoader resolverprotected abstract FileMetaData parseFile(URL fileURL)
fileURL
- URL of the filepublic abstract void registerFile(String fileURLString, FileMetaData filemd, ClassLoaderResolver clr)
MetaDataManager
registerFile
in interface MetaDataManager
fileURLString
- URL of the metadata filefilemd
- The File MetaDataclr
- ClassLoader resolverpublic void registerDiscriminatorValueForClass(AbstractClassMetaData cmd, String discrimValue)
registerDiscriminatorValueForClass
in interface MetaDataManager
public String getClassNameForDiscriminatorValueWithRoot(AbstractClassMetaData rootCmd, String discrimValue)
getClassNameForDiscriminatorValueWithRoot
in interface MetaDataManager
public String getDiscriminatorValueForClass(AbstractClassMetaData cmd, String discrimValue)
getDiscriminatorValueForClass
in interface MetaDataManager
public String getClassNameFromDiscriminatorValue(String discrimValue, DiscriminatorMetaData dismd)
getClassNameFromDiscriminatorValue
in interface MetaDataManager
public void registerSequencesForFile(FileMetaData filemd)
registerSequencesForFile
in interface MetaDataManager
filemd
- MetaData for the filepublic void registerTableGeneratorsForFile(FileMetaData filemd)
registerTableGeneratorsForFile
in interface MetaDataManager
filemd
- MetaData for the fileprotected void registerQueryResultMetaDataForFile(FileMetaData filemd)
filemd
- MetaData for the filepublic void registerNamedQuery(QueryMetaData qmd)
registerNamedQuery
in interface MetaDataManager
qmd
- Query metadataprotected void registerQueriesForFile(FileMetaData filemd)
filemd
- MetaData for the fileprotected void registerStoredProcQueriesForFile(FileMetaData filemd)
filemd
- MetaData for the fileprotected void registerFetchPlansForFile(FileMetaData filemd)
filemd
- MetaData for the fileprotected void populateFileMetaData(FileMetaData filemd, ClassLoaderResolver clr, 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, ClassLoader primary)
filemd
- the FileMetaDataclr
- ClassLoader resolver to useprimary
- the primary ClassLoader to use (or null)protected void initialiseClassMetaData(ClassMetaData cmd, Class cls, ClassLoaderResolver clr)
cmd
- The classes metadatacls
- The class to use as a basis for initialisationclr
- ClassLoader resolver to useNucleusUserException
- if the class is not enhancedprotected void initialiseInterfaceMetaData(InterfaceMetaData imd, ClassLoaderResolver clr, ClassLoader primary)
imd
- The interface metadataclr
- The loader of the interfaceprimary
- the primary ClassLoader to use (or null)protected FileMetaData loadAnnotationsForClass(Class cls, ClassLoaderResolver clr, boolean register, boolean populate)
cls
- The classclr
- ClassLoader resolverregister
- Whether to register the datapopulate
- Whether to populate the dataprotected void postProcessClassMetaData(AbstractClassMetaData cmd, ClassLoaderResolver clr)
cmd
- Metadata for the classclr
- ClassLoader resolverprotected boolean populateAbstractClassMetaData(AbstractClassMetaData cmd, ClassLoaderResolver clr, ClassLoader loader)
cmd
- MetaDataclr
- ClassLoader resolverloader
- The primary class loaderprotected void initialiseAbstractClassMetaData(AbstractClassMetaData cmd, ClassLoaderResolver clr)
cmd
- MetaDataclr
- ClassLoaderResolverpublic void abstractClassMetaDataInitialised(AbstractClassMetaData cmd)
abstractClassMetaDataInitialised
in interface MetaDataManager
cmd
- Metadata that has been initialisedpublic String[] getConcreteSubclassesForClass(String className)
MetaDataManager
getConcreteSubclassesForClass
in interface MetaDataManager
className
- Name of the class that we want the known concrete subclasses for.public String[] getSubclassesForClass(String className, boolean includeDescendents)
MetaDataManager
getSubclassesForClass
in interface MetaDataManager
className
- Name of the class that we want the known subclasses for.includeDescendents
- Whether to include subclasses of subclasses etcpublic List<AbstractClassMetaData> getReferencedClasses(String[] classNames, ClassLoaderResolver clr)
MetaDataManager
getReferencedClasses
in interface MetaDataManager
classNames
- Names of the root classesclr
- ClassLoader resolverprotected List<AbstractClassMetaData> getReferencedClassMetaData(AbstractClassMetaData cmd, ClassLoaderResolver clr)
cmd
- The origin class's MetaData.clr
- ClassLoaderResolver resolver for loading any classes.public boolean isFieldTypePersistable(Class type)
MetaDataManager
isFieldTypePersistable
in interface MetaDataManager
type
- Type of the field (for when "type" is not yet set)Copyright © 2019. All rights reserved.