org.jpox.metadata
Class MetaDataManager

java.lang.Object
  extended byorg.jpox.metadata.MetaDataManager

public class MetaDataManager
extends java.lang.Object

Manager of 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.

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. If necessary we could store them keyed by file name, but not currently necessary.

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.

TODO Add a cache of MetaDataManagers and add a check of the other managers when a class is required and we don't have the file (to save the parse).

Version:
$Revision: 1.69 $

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.Collection classesWithoutMetaData
          Classes without MetaData.
protected  java.util.Map classMetaDataByClass
          Map of ClassMetaData, keyed by the class name.
protected  java.util.Map classMetaDataByInterface
          Map of ClassMetaData, keyed by the interface class name.
protected  java.lang.String defaultInheritanceStrategy
          Default for the inheritance strategy to use.
protected  boolean enhancing
          Indicator for whether this manager is managing the enhancement process, else it's runtime.
protected  java.util.Map fileMetaDataByURL
          MetaData for the files parsed, keyed by the URL.
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  java.lang.String jdoFileSuffix
          Suffix for JDO MetaData files.
protected  java.lang.String jdoqueryFileSuffix
          Suffix for query MetaData files.
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  java.lang.String ormFileSuffix
          Suffix for ORM MetaData files.
protected  java.lang.String ormMappingName
          Name for the ORM mapping (used to define the filename of the ORM files).
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  boolean validateMetaData
          Flag whether we should validate the metadata files.
 
Constructor Summary
MetaDataManager(PMFContext pmfContext)
          Constructor, allowing specification of the suffix used for JDO files.
 
Method Summary
protected  void addClassWithoutMetaData(java.lang.String class_name)
          Method to add a class that doesn't have MetaData.
 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
 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.lang.String getDefaultInheritanceStrategy()
          Accessor for the default inheritance strategy to use.
 java.lang.String getJdoFileSuffix()
          Accessor for the suffix used when looking for JDO MetaData files.
 java.lang.String getJdoqueryFileSuffix()
          Accessor for the suffix used when looking for Query MetaData files.
 AbstractClassMetaData getMetaDataForClass(java.lang.Class c, ClassLoaderResolver clr)
          Accessor for the MetaData for a class.
 AbstractClassMetaData getMetaDataForClass(java.lang.String class_name, ClassLoaderResolver clr)
          Accessor for the MetaData for a class given the name and a loader.
protected  AbstractClassMetaData getMetaDataForClassOrInterface(java.lang.Class c, ClassLoaderResolver clr)
          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 class_name, java.lang.String field_name, 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 packageSequenceName)
          Accessor for the MetaData for a Sequence in a package.
 java.lang.String getOrmFileSuffix()
          Accessor for the suffix used when looking for ORM MetaData files.
 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
 boolean hasMetaDataForClass(java.lang.String class_name)
          Convenience method to check if the metadataq for the specified class is already registered.
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 initialiseInterfaceMetaData(InterfaceMetaData imd, ClassLoaderResolver clr)
          Utility to initialise the MetaData for a interface, using the specified class.
protected  void initialiseMetaDataFileSuffixes(java.lang.String jdo_file_suffix, java.lang.String orm_file_suffix, java.lang.String orm_mapping_name, java.lang.String jdoquery_file_suffix)
          Initialise suffixes that will be in the search path
protected  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 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  FileMetaData parseFile(java.net.URL file_url, boolean validate)
          Utility to parse a file.
protected  void populateClassesInterfacesInFile(FileMetaData filemd, ClassLoaderResolver clr)
          Convenience method to populate all classes 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  void registerFile(java.net.URL file_url, FileMetaData filemd)
          Method to take the FileMetaData and register the relevant parts of it with the various convenience collections/maps that we use for access.
 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.
 void setLocationDefinition(int definition)
          Mutator for the definition of locations of MetaData accepted.
 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

ALL_JDO_LOCATIONS

public static final 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

See Also:
Constant Field Values

JDO_1_0_0_LOCATIONS

public static final int JDO_1_0_0_LOCATIONS
MetaData files will be searched in all locations defined in JDO 1.0

See Also:
Constant Field Values

JDO_1_0_1_LOCATIONS

public static final int JDO_1_0_1_LOCATIONS
MetaData files will be searched in all locations defined in JDO 1.0.1

See Also:
Constant Field Values

pmfContext

protected PMFContext pmfContext
The PMF Context that this metadata manager is operating in.


locationDefinition

protected int locationDefinition
Definition of which locations we accept for MetaData files.


validateMetaData

protected boolean validateMetaData
Flag whether we should validate the metadata files.


jdoFileSuffix

protected java.lang.String jdoFileSuffix
Suffix for JDO MetaData files.


ormFileSuffix

protected java.lang.String ormFileSuffix
Suffix for ORM MetaData files.


jdoqueryFileSuffix

protected java.lang.String jdoqueryFileSuffix
Suffix for query MetaData files.


ormMappingName

protected java.lang.String ormMappingName
Name for the ORM mapping (used to define the filename of the ORM files). If this is null we only use the jdo metadata file.


defaultInheritanceStrategy

protected java.lang.String defaultInheritanceStrategy
Default for the inheritance strategy to use. Null implies use JDO2's strategy.


classMetaDataByClass

protected java.util.Map classMetaDataByClass
Map of ClassMetaData, keyed by the class name. Uses the same objects as created during the parse process, and stored above.


queryMetaDataByName

protected java.util.Map queryMetaDataByName
Map of QueryMetaData, keyed by the (class name + query name). Uses the same objects as created during the parse process.


classMetaDataByInterface

protected java.util.Map classMetaDataByInterface
Map of ClassMetaData, keyed by the interface class name. Classes built at runtime implements the interface used as key in this map


sequenceMetaDataByPackageSequence

protected java.util.Map sequenceMetaDataByPackageSequence
Map of SequenceMetaData, keyed by the package name and sequence name.


ormClassMetaDataByClass

protected java.util.Map ormClassMetaDataByClass
Map of ClassMetaData from ORM files, keyed by the class name.


classesWithoutMetaData

protected java.util.Collection classesWithoutMetaData
Classes without MetaData. Stores the class names.


fileMetaDataByURL

protected java.util.Map fileMetaDataByURL
MetaData for the files parsed, keyed by the URL.


enhancing

protected boolean enhancing
Indicator for whether this manager is managing the enhancement process, else it's runtime.

Constructor Detail

MetaDataManager

public MetaDataManager(PMFContext pmfContext)
Constructor, allowing specification of the suffix used for JDO files.

Parameters:
pmfContext - PMF Context that this metadata manager operates in
Method Detail

setValidate

public void setValidate(boolean validate)
Mutator for whether to validate the MetaData files for XML compliance.

Parameters:
validate - Whether to validate

getPMFContext

public PMFContext getPMFContext()
Accessor for the PMF Context that this manager is running in.

Returns:
The PMF Context

initialiseMetaDataFileSuffixes

protected void initialiseMetaDataFileSuffixes(java.lang.String jdo_file_suffix,
                                              java.lang.String orm_file_suffix,
                                              java.lang.String orm_mapping_name,
                                              java.lang.String jdoquery_file_suffix)
Initialise suffixes that will be in the search path

Parameters:
jdo_file_suffix - Suffix to be used on all JDO MetaData files.
orm_file_suffix - Suffix to be used on all ORM MetaData files.
orm_mapping_name - Name of the ORM mapping
jdoquery_file_suffix - Suffix to be used on all JDOQuery MetaData files.

close

public void close()
Clear resources


setLocationDefinition

public void setLocationDefinition(int definition)
Mutator for the definition of locations of MetaData accepted.

Parameters:
definition - The definition

isEnhancing

public boolean isEnhancing()
Accessor for whether we are managing the enhancement process.

Returns:
Whether we are enhancing

getJdoFileSuffix

public java.lang.String getJdoFileSuffix()
Accessor for the suffix used when looking for JDO MetaData files.

Returns:
JDO MetaData file suffix.

getOrmFileSuffix

public java.lang.String getOrmFileSuffix()
Accessor for the suffix used when looking for ORM MetaData files.

Returns:
ORM MetaData file suffix.

getJdoqueryFileSuffix

public java.lang.String getJdoqueryFileSuffix()
Accessor for the suffix used when looking for Query MetaData files.

Returns:
Query MetaData file suffix.

getDefaultInheritanceStrategy

public java.lang.String getDefaultInheritanceStrategy()
Accessor for the default inheritance strategy to use.

Returns:
Default inheritance strategy to use.

hasMetaDataForClass

public boolean hasMetaDataForClass(java.lang.String class_name)
Convenience method to check if the metadataq for the specified class is already registered.

Parameters:
class_name - The name of the class to check
Returns:
Whether the metadata is already registered for this class

getMetaDataForClass

public AbstractClassMetaData getMetaDataForClass(java.lang.String class_name,
                                                 ClassLoaderResolver clr)
Accessor for the MetaData for a class given the name and a loader. If the class can't be loaded, null will be returned.

Parameters:
class_name - Name of the class to find MetaData for
clr - ClassLoaderResolver resolver for use in loading the class.
Returns:
The ClassMetaData for this class (or null if not found)

getMetaDataForClass

public AbstractClassMetaData getMetaDataForClass(java.lang.Class c,
                                                 ClassLoaderResolver clr)
Accessor for the MetaData for a class.

Parameters:
c - The class to find MetaData for
clr - the ClassLoaderResolver
Returns:
The ClassMetaData for this class (or null if not found)

getMetaDataForInterface

public InterfaceMetaData getMetaDataForInterface(java.lang.Class c,
                                                 ClassLoaderResolver clr)
Accessor for the MetaData for an interface.

Parameters:
c - The interface to find MetaData for
clr - the ClassLoaderResolver
Returns:
The InterfaceMetaData for this interface (or null if not found)

readMetaDataForClass

public ClassMetaData readMetaDataForClass(java.lang.String className)
Method to access the (already known) metadata for the specified class. If the class is not yet known about it returns null.

Parameters:
className - Name of the class
Returns:
MetaData for the class

readMetaDataForField

public AbstractPropertyMetaData readMetaDataForField(java.lang.String className,
                                                     java.lang.String fieldName)
Method to access the (already known) metadata for the field of the specified class. If the class (or this field) is not yet known about it returns null.

Parameters:
className - Name of the class
fieldName - Name of the field
Returns:
MetaData for the field

getMetaDataForClassOrInterface

protected AbstractClassMetaData getMetaDataForClassOrInterface(java.lang.Class c,
                                                               ClassLoaderResolver clr)
Accessor for the MetaData for a class. Runs through the following process
  1. Checks if the class is known not to have metata
  2. Check if we have metadata for the class in one of the files that has been parsed.
  3. If we have metadata, check that it is initialised
  4. If we don't have metadata, find the file for this class.
  5. If we cant find a file for it, add it to the list of classes known to have no metadata

Parameters:
c - The class to find MetaData for
Returns:
The ClassMetaData for this class (or null if not found)

getSubclassesForClass

public java.lang.String[] getSubclassesForClass(java.lang.String className,
                                                boolean includeDescendents)
Accessor for the subclasses of a particular class

Parameters:
className - Name of the class that we want the known subclasses for.
includeDescendents - Whether to include subclasses of subclasses etc
Returns:
Names of the subclasses. return null if there are no subclasses

getClassesImplementingInterface

public 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). Ignore abstract classes

Parameters:
interfaceName - Name of the interface
clr - The ClassLoaderResolver
Returns:
The names of the classes declared as implementing that interface. return null if no classes

addORMDataToClass

public 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.

Parameters:
c - The class
clr - the ClassLoaderResolver

getMetaDataForImplementationOfReference

public ClassMetaData getMetaDataForImplementationOfReference(java.lang.Class referenceClass,
                                                             java.lang.Object implValue,
                                                             ClassLoaderResolver clr)
Accessor for the MetaData for an implementation of a reference type. Finds the metadata for the implementation of this reference.

Parameters:
referenceClass - The reference class to find MetaData for
implValue - Object of an implementation class, to return if possible (null=ignore)
Returns:
The ClassMetaData for an implementation of a reference type

getMetaDataForField

public AbstractPropertyMetaData getMetaDataForField(java.lang.String class_name,
                                                    java.lang.String field_name,
                                                    ClassLoaderResolver clr)
Accessor for the MetaData for a field of a class. Utilises getMetaDataForClass, and then finds the relevant field.

Parameters:
class_name - The name of the class owning the field
field_name - The name of the field to find MetaData for
clr - ClassLoaderResolver resolver for any loading of classes
Returns:
The AbstractPropertyMetaData for this field (or null if not found)

getMetaDataForField

public AbstractPropertyMetaData getMetaDataForField(java.lang.Class c,
                                                    ClassLoaderResolver clr,
                                                    java.lang.String field_name)
Accessor for the MetaData for a field of a class. Utilises getMetaDataForClass, and then finds the relevant field.

Parameters:
c - The class owning the field
clr - the ClassLoaderResolver
field_name - The name of the field to find MetaData for
Returns:
The AbstractPropertyMetaData for this field (or null if not found)

getMetaDataForQuery

public QueryMetaData getMetaDataForQuery(java.lang.Class cls,
                                         ClassLoaderResolver clr,
                                         java.lang.String queryName)
Accessor for the MetaData for a named query for a class. If the class is not specified, searches for the query with this name for any class.

Parameters:
cls - The class which has the query defined for it
clr - the ClassLoaderResolver
queryName - Name of the query
Returns:
The QueryMetaData for the query for this class

isPersistentInterface

public boolean isPersistentInterface(java.lang.String name)
Convenience method to return if the passed class name is a "persistent-interface".

Parameters:
name - Name if the interface
Returns:
Whether it is a "persistent-interface"

isPersistentInterfaceImplementation

public 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".

Parameters:
interfaceName - Name of the persistent interface
implName - The implementation name
Returns:
Whether it is a (JPOX-generated) impl of the persistent interface

registerPersistentInterface

public void registerPersistentInterface(InterfaceMetaData imd,
                                        java.lang.Class implClass,
                                        ClassLoaderResolver clr)
Method to register a persistent interface and its implementation with the MetaData system.

Parameters:
imd - MetaData for the interface
implClass - The implementation class
clr - ClassLoader Resolver to use

getMetaDataForSequence

public SequenceMetaData getMetaDataForSequence(ClassLoaderResolver clr,
                                               java.lang.String packageSequenceName)
Accessor for the MetaData for a Sequence in a package. If the sequence is not yet known will search the valid locations for the passed name.

Parameters:
clr - the ClassLoaderResolver
packageSequenceName - Fully qualified name of the sequence (inc package name)
Returns:
The SequenceMetaData for this named sequence

initialiseClassMetaData

protected void initialiseClassMetaData(ClassMetaData cmd,
                                       java.lang.Class cls,
                                       ClassLoaderResolver clr)
Utility to initialise the MetaData for a class, using the specified class. This assigns defaults to tags that haven't been assigned. If the class that is being used to populate the MetaData is not enhanced, this will throw a JDOUserException informing them of this.

Parameters:
cmd - The classes metadata
cls - The class to use as a basis for initialisation

initialiseInterfaceMetaData

protected void initialiseInterfaceMetaData(InterfaceMetaData imd,
                                           ClassLoaderResolver clr)
Utility to initialise the MetaData for a interface, using the specified class. This assigns defaults to tags that haven't been assigned. If the class that is being used to populate the MetaData is not enhanced, this will throw a JDOUserException informing them of this.

Parameters:
imd - The interface metadata
clr - The loader of the interface

isClassWithoutMetaData

protected boolean isClassWithoutMetaData(java.lang.String class_name)
Accessor for whether a class doesn't have MetaData.

Parameters:
class_name - Name of the class
Returns:
Whether it has no metadata.

addClassWithoutMetaData

protected void addClassWithoutMetaData(java.lang.String class_name)
Method to add a class that doesn't have MetaData.

Parameters:
class_name - Name of class that has no metadata.

parseFile

protected FileMetaData parseFile(java.net.URL file_url,
                                 boolean validate)
Utility to parse a file. This is split out as a separate method to allow overriding of the parser used to read the XML file. The enhancer, for example, uses its own extension to MetaDataParser.

Parameters:
file_url - URL of the file
validate - Whether to validate the file
Returns:
The FileMetaData for this file

registerSequencesForFile

protected void registerSequencesForFile(FileMetaData filemd)
Convenience method to register all sequences found in the passed file.

Parameters:
filemd - MetaData for the file

registerQueriesForFile

protected void registerQueriesForFile(FileMetaData filemd)
Convenience method to register all queries found in the passed file.

Parameters:
filemd - MetaData for the file

populateClassesInterfacesInFile

protected void populateClassesInterfacesInFile(FileMetaData filemd,
                                               ClassLoaderResolver clr)
Convenience method to populate all classes in a Meta-Data file.

Parameters:
filemd - The MetaData file
clr - Class Loader to use in population

registerFile

protected void registerFile(java.net.URL file_url,
                            FileMetaData filemd)
Method to take the FileMetaData and register the relevant parts of it with the various convenience collections/maps that we use for access.

Parameters:
file_url - URL of the metadata file
filemd - The File MetaData

loadMetaDataForClass

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. Checks the locations one-by-one, and checks for existence of the specified class in the file. If a valid file is found it is loaded no matter if the file contains the actual class. When a file is found containing the class the process stops and the FileMetaData for that file (containing the class) returned.

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.

Parameters:
pc_class - The class/interface to retrieve the Meta-Data file for
clr - the ClassLoaderResolver
metadata_file_modifier - Any modifier for the filename
metadata_file_extension - File extension of MetaData files (e.g "jdo")
populate - Whether to populate any loaded MetaData classes
Returns:
FileMetaData for the file containing the class

getReferencedClassMetaData

public 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.

Parameters:
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.
Returns:
List of ClassMetaData referenced by the origin


Copyright © -2007 . All Rights Reserved.