|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.exolab.castor.mapping.loader.AbstractMappingLoader2
org.exolab.castor.mapping.loader.AbstractMappingLoader
public abstract class AbstractMappingLoader
Assists in the construction of descriptors. Can be used as a mapping resolver to the engine. Engines will implement their own mapping scheme typically by extending this class.
Nested Class Summary | |
---|---|
class |
AbstractMappingLoader.TypeInfoReference
A class used to by the createFieldHandler method in order to save the reference of the TypeInfo that was used. |
Field Summary | |
---|---|
protected static java.lang.Class[] |
EMPTY_ARGS
Empty array of class types used for reflection. |
protected static java.lang.Class[] |
STRING_ARG
The string argument for the valueOf method, used for introspection when searching for type-safe enumeration style classes. |
protected static java.lang.String |
VALUE_OF
Factory method name for type-safe enumerations. |
Constructor Summary | |
---|---|
protected |
AbstractMappingLoader(java.lang.ClassLoader loader)
Constructs a new mapping helper. |
Method Summary | |
---|---|
protected void |
checkFieldNameDuplicates(FieldDescriptor[] fields,
java.lang.Class cls)
Checks all given fields for name equality and throws a MappingException if at least two fields have the same name. |
protected abstract ClassDescriptor |
createClassDescriptor(ClassMapping clsMap)
|
protected void |
createClassDescriptors(MappingRoot mapping)
|
protected FieldDescriptorImpl |
createFieldDesc(java.lang.Class javaClass,
FieldMapping fieldMap)
Creates a single field descriptor. |
protected FieldDescriptorImpl[] |
createFieldDescriptors(ClassMapping clsMap,
java.lang.Class javaClass)
Create field descriptors. |
protected FieldHandler |
createFieldHandler(java.lang.Class javaClass,
java.lang.Class fldType,
FieldMapping fldMap,
AbstractMappingLoader.TypeInfoReference typeInfoRef)
Creates the FieldHandler for the given FieldMapping. |
protected void |
createFieldHandlers(MappingRoot mapping)
Load field handler definitions, check for duplicate definitions and instantiate the appropriate FieldHandler implementations. |
protected FieldDescriptor[] |
divideFieldDescriptors(FieldDescriptor[] fields,
java.lang.String[] ids,
FieldDescriptor[] identities)
|
static java.lang.reflect.Method |
findAccessor(java.lang.Class javaClass,
java.lang.String methodName,
java.lang.Class fieldType,
boolean getMethod)
Returns the named accessor. |
protected ClassDescriptor |
getDepended(ClassMapping clsMap,
java.lang.Class javaClass)
Gets the ClassDescriptor the given classMapping depends
on. |
protected ClassDescriptor |
getExtended(ClassMapping clsMap,
java.lang.Class javaClass)
Gets the ClassDescriptor the given classMapping extends. |
protected int |
getIdColumnIndex(FieldDescriptor field,
java.lang.String[] ids)
Finds the index in the given idColumnNames that has the same name as
the given field . |
static java.lang.String[] |
getIdentityColumnNames(java.lang.String[] ids,
ClassMapping clsMap)
Returns a list of column names that are part of the identity. |
InternalContext |
getInternalContext()
|
protected ClassMapping |
getOrigin(ClassMapping clsMap)
Gets the top-most (i.e. |
java.lang.String |
getSourceType()
|
protected TypeInfo |
getTypeInfo(java.lang.Class fieldType,
CollectionHandler colHandler,
FieldMapping fieldMap)
|
protected static boolean |
isPrimitive(java.lang.Class type)
Returns true if the given class should be treated as a primitive type |
abstract void |
loadMapping(MappingRoot mapping,
java.lang.Object param)
Loads the mapping from the specified mapping object if not loaded previously. |
protected abstract void |
resolveRelations(ClassDescriptor clsDesc)
|
protected java.lang.Class |
resolveType(java.lang.String typeName)
Returns the Java class for the named type. |
void |
setInternalContext(InternalContext internalContext)
|
Methods inherited from class org.exolab.castor.mapping.loader.AbstractMappingLoader2 |
---|
addDescriptor, clear, descriptorIterator, getClassLoader, getDescriptor, getDescriptors, isAllowRedefinition, loadMapping, setAllowRedefinitions, setClassLoader |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.exolab.castor.mapping.MappingLoader |
---|
getBindingType |
Field Detail |
---|
protected static final java.lang.Class[] EMPTY_ARGS
protected static final java.lang.Class[] STRING_ARG
protected static final java.lang.String VALUE_OF
Constructor Detail |
---|
protected AbstractMappingLoader(java.lang.ClassLoader loader)
loader
- The class loader to use, null for the defaultMethod Detail |
---|
public final java.lang.String getSourceType()
public abstract void loadMapping(MappingRoot mapping, java.lang.Object param) throws MappingException
mapping
- The mapping information.param
- Arbitrary parameter that can be used by subclasses.
MappingException
- The mapping file is invalid.protected void createFieldHandlers(MappingRoot mapping) throws MappingException
mapping
- Mapping to load field handler definitions from.
MappingException
- If mapping contains more then one field handler
definition with same name.protected final void createClassDescriptors(MappingRoot mapping) throws MappingException
MappingException
protected abstract ClassDescriptor createClassDescriptor(ClassMapping clsMap) throws MappingException
MappingException
protected final ClassDescriptor getExtended(ClassMapping clsMap, java.lang.Class javaClass) throws MappingException
classMapping
extends.
clsMap
- The ClassMapping to find the required descriptor for.javaClass
- The name of the class that is checked (this is used for
generating the exception).
null
if the given ClassMapping does not extend
any.
MappingException
- If the given ClassMapping extends another
ClassMapping but its descriptor could not be found.protected final ClassDescriptor getDepended(ClassMapping clsMap, java.lang.Class javaClass) throws MappingException
classMapping
depends
on.
clsMap
- The ClassMapping to find the required ClassDescriptor for.javaClass
- The name of the class that is checked (this is used for
generating the exception).
null
if the given ClassMapping does not depend on
any.
MappingException
- If the given ClassMapping depends on another
ClassMapping but its descriptor could not be found.protected final void checkFieldNameDuplicates(FieldDescriptor[] fields, java.lang.Class cls) throws MappingException
fields
- The fields to be checked.cls
- Class that is checked (this is used for generating the exception).
MappingException
- If at least two fields have the same name.protected abstract void resolveRelations(ClassDescriptor clsDesc)
protected final java.lang.Class resolveType(java.lang.String typeName) throws MappingException
MappingException
protected final FieldDescriptorImpl[] createFieldDescriptors(ClassMapping clsMap, java.lang.Class javaClass) throws MappingException
clsMap
- The class to which the fields belong.javaClass
- The field mappings.
MappingException
- An exception indicating why mapping for the class cannot
be created.protected final ClassMapping getOrigin(ClassMapping clsMap)
classMapping
.
clsMap
- The ClassMapping to get the origin for.
protected final FieldDescriptor[] divideFieldDescriptors(FieldDescriptor[] fields, java.lang.String[] ids, FieldDescriptor[] identities)
protected int getIdColumnIndex(FieldDescriptor field, java.lang.String[] ids)
idColumnNames
that has the same name as
the given field
.
field
- The FieldDescriptor to find the column index for.ids
- The id columnNames available.
-1
if no such id column name exists.protected FieldDescriptorImpl createFieldDesc(java.lang.Class javaClass, FieldMapping fieldMap) throws MappingException
FieldDescriptor
. Implementations may extend this class to create a more
suitable descriptor.
javaClass
- The class to which the field belongs.fieldMap
- The field mapping information.
MappingException
- The field or its accessor methods are not
found, not accessible, not of the specified type, etc.protected final FieldHandler createFieldHandler(java.lang.Class javaClass, java.lang.Class fldType, FieldMapping fldMap, AbstractMappingLoader.TypeInfoReference typeInfoRef) throws MappingException
javaClass
- the class type of the parent of the field.fldType
- the Java class type for the field.fldMap
- the field mapping.
MappingException
protected TypeInfo getTypeInfo(java.lang.Class fieldType, CollectionHandler colHandler, FieldMapping fieldMap) throws MappingException
MappingException
public static final java.lang.reflect.Method findAccessor(java.lang.Class javaClass, java.lang.String methodName, java.lang.Class fieldType, boolean getMethod) throws MappingException
javaClass
- The class to which the field belongs.methodName
- The name of the accessor method.fieldType
- The type of the field if known, or null.getMethod
- True if get method, false if set method.
MappingException
- The method is not accessible or is not of the
specified type.public static final java.lang.String[] getIdentityColumnNames(java.lang.String[] ids, ClassMapping clsMap)
ids
- Known identity names.clsMap
- Class mapping.
protected static final boolean isPrimitive(java.lang.Class type)
public void setInternalContext(InternalContext internalContext)
public InternalContext getInternalContext()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |