Package org.jibx.binding.def
Class MappingDefinition
- java.lang.Object
-
- org.jibx.binding.def.PassThroughComponent
-
- org.jibx.binding.def.LinkableBase
-
- org.jibx.binding.def.MappingBase
-
- org.jibx.binding.def.MappingDefinition
-
- All Implemented Interfaces:
IComponent
,ILinkable
,IMapping
public class MappingDefinition extends MappingBase
Normal mapping with defined binding. This is used for a mapping definition which includes detailed binding information (rather than marshaller and unmarshaller classes which handle the binding directly).- Author:
- Dennis M. Sosnoski
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
ADAPTERCLASS_SUFFIX
private static java.lang.String
ADDMARSHALLER_METHOD
private static java.lang.String
ADDMARSHALLER_SIGNATURE
private static java.lang.String
ADDUNMARSHALLER_METHOD
private static java.lang.String
ADDUNMARSHALLER_SIGNATURE
private static java.lang.String
BASEMARSHAL_METHODNAME
(package private) static java.lang.String[]
BOTH_INTERFACES
private static java.lang.String
CLOSESTART_METHOD
private static java.lang.String
CLOSESTART_SIGNATURE
private static java.lang.String
CURRENTELEMENT_METHOD
private static java.lang.String
CURRENTELEMENT_SIGNATURE
private static java.lang.String
EQUALS_METHODNAME
private static java.lang.String
EQUALS_SIGNATURE
private static java.lang.String
GETINDEX_METHOD
private static Type[]
ISPRESENT_METHOD_ARGS
private static java.lang.String
ISPRESENT_METHODNAME
private IMapping
m_baseMapping
Abstract binding this one is based on (null
if not an extension).private java.lang.String
m_baseType
Name of abstract base type.private ObjectBinding
m_binding
Binding structure defining the mapping.private BoundClass
m_class
Class linked to mapping.private IContainer
m_container
Containing binding definition structure.private DefinitionContext
m_defContext
Definition context for mapping.private java.util.ArrayList
m_extensions
Mappings which extend this one (null
if none).private boolean
m_isAbstract
Abstract mapping flag.private ClassFile
m_marshaller
Constructed marshaller class.private NameDefinition
m_name
Mapped element name (may benull
if abstract mapping).private java.lang.String
m_referenceType
Reference type of mapping, as fully qualified class name.private ClassFile
m_unmarshaller
Constructed unmarshaller class.private static Type[]
MARSHAL_METHOD_ARGS
private static java.lang.String
MARSHAL_METHODNAME
private static java.lang.String
MARSHALCONTEXT_CLASS
private static java.lang.String
MARSHALCONTEXT_INTERFACE
(package private) static java.lang.String[]
MARSHALLER_INTERFACES
private static java.lang.String
PARSERNEXT_METHOD
private static java.lang.String
PARSERNEXT_SIGNATURE
private static java.lang.String
POP_NAMESPACES_METHOD
private static java.lang.String
POP_NAMESPACES_SIG
private static java.lang.String
PUSH_NAMESPACES_METHOD
private static java.lang.String
PUSH_NAMESPACES_SIG
private static java.lang.String
REMOVEMARSHALLER_METHOD
private static java.lang.String
REMOVEMARSHALLER_SIGNATURE
private static java.lang.String
REMOVEUNMARSHALLER_METHOD
private static java.lang.String
REMOVEUNMARSHALLER_SIGNATURE
private static java.lang.String
UNMARSHAL_ISATMETHOD
private static java.lang.String
UNMARSHAL_ISATSIGNATURE
private static Type[]
UNMARSHAL_METHOD_ARGS
private static java.lang.String
UNMARSHAL_METHODNAME
private static java.lang.String
UNMARSHALCONTEXT_CLASS
private static java.lang.String
UNMARSHALCONTEXT_INTERFACE
(package private) static java.lang.String[]
UNMARSHALLER_INTERFACES
private static java.lang.String
UNMARSHALLERPRESENT_METHOD
private static java.lang.String
UNMARSHALLERPRESENT_SIGNATURE
-
Fields inherited from class org.jibx.binding.def.MappingBase
ABSTRACTMARSHALLER_INTERFACE, CHECKEXTENDS_FULLNAME, CHECKEXTENDS_METHODNAME, CHECKEXTENDS_SIGNATURE, GETINDEX_METHODNAME, GETINDEX_SIGNATURE, GETMARSHALLER_METHOD, GETMARSHALLER_SIGNATURE, GETNAME_METHODNAME, GETNAME_SIGNATURE, GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE, IMARSHALLABLE_INTERFACE, IUNMARSHALLABLE_INTERFACE, MARSHALLABLE_METHODNAME, MARSHALLABLE_SIGNATURE, MARSHALLER_INTERFACE, MARSHALLERMARSHAL_METHOD, MARSHALLERMARSHAL_SIGNATURE, UNMARSHALLABLE_METHODNAME, UNMARSHALLABLE_SIGNATURE, UNMARSHALLER_INTERFACE, UNMARSHALLERUNMARSHAL_METHOD, UNMARSHALLERUNMARSHAL_SIGNATURE
-
Fields inherited from class org.jibx.binding.def.PassThroughComponent
m_component
-
-
Constructor Summary
Constructors Constructor Description MappingDefinition(IContainer contain, DefinitionContext defc, java.lang.String type, NameDefinition name, java.lang.String tname, boolean abs, java.lang.String base, ObjectBinding bind, boolean nillable)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addExtension(MappingDefinition mdef)
Add extension to abstract mapping.void
addNamespace(NamespaceDefinition ns)
Add namespace.IComponent
buildRef(IContainer parent, IContextObj objc, java.lang.String type, PropertyDefinition prop)
Build reference to mapping.private void
generateAbstractMarshaller(ClassFile cf)
Add abstract marshaller interface to handler class.void
generateCode(boolean force)
Generate required code for mapping.private void
generateIfExtendingCheck(ClassFile cf, boolean hasname)
Generate theIMarshaller.isExtension(String)
method to check if this mapping is extending a particular abstract mapping.private void
generateIsPresent(ClassFile cf, boolean hasname)
Generate theIUnmarshaller.isPresent(org.jibx.runtime.IUnmarshallingContext)
method implementation.private void
generateMarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont)
Generate theIMarshaller.marshal(Object, org.jibx.runtime.IMarshallingContext)
method implementation.private void
generateUnmarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont, boolean hasname)
Generate theIUnmarshaller.unmarshal(Object, org.jibx.runtime.IUnmarshallingContext)
method implementation.(package private) void
genLoadNamespaces(MethodBuilder mb)
Generate code for loading namespace index and URI arrays.ITypeBinding
getBinding()
Get the actual binding for a mapping.BoundClass
getBoundClass()
Get the mapped class information.java.lang.String
getBoundType()
Get class name handled by mapping.IComponent
getImplComponent()
Get binding component implementing mapping.ClassFile
getMarshaller()
Get marshaller class used for mapping.NameDefinition
getName()
Get mapped element name.java.util.ArrayList
getNamespaces()
Get namespaces defined for mapping.java.lang.String
getReferenceType()
Get class name of type to be assumed for references to this mapping.ClassFile
getUnmarshaller()
Get unmarshaller class used for mapping.NameDefinition
getWrapperName()
Get element wrapper name.(package private) boolean
hasNamespace()
Check if one or more namespaces are defined for element.boolean
isAbstract()
Check if mapping is abstract.boolean
isBase()
Check if mapping has extensions.void
linkMappings()
Links extension mappings to their base mappings.void
print(int depth)
void
setLinkages()
Establish and validate linkages between binding components.-
Methods inherited from class org.jibx.binding.def.MappingBase
addIMarshallableMethod, addIUnmarshallableMethod, getMappingName, getTypeName
-
Methods inherited from class org.jibx.binding.def.LinkableBase
handleRecursion, isLinked
-
Methods inherited from class org.jibx.binding.def.PassThroughComponent
genAttributeMarshal, genAttributeUnmarshal, genAttrPresentTest, genContentMarshal, genContentPresentTest, genContentUnmarshal, genLoadId, genNewInstance, getType, hasAttribute, hasContent, hasId, isOptional, setWrappedComponent
-
-
-
-
Field Detail
-
ADAPTERCLASS_SUFFIX
private static final java.lang.String ADAPTERCLASS_SUFFIX
- See Also:
- Constant Field Values
-
MARSHAL_METHODNAME
private static final java.lang.String MARSHAL_METHODNAME
- See Also:
- Constant Field Values
-
BASEMARSHAL_METHODNAME
private static final java.lang.String BASEMARSHAL_METHODNAME
- See Also:
- Constant Field Values
-
UNMARSHAL_METHODNAME
private static final java.lang.String UNMARSHAL_METHODNAME
- See Also:
- Constant Field Values
-
ISPRESENT_METHODNAME
private static final java.lang.String ISPRESENT_METHODNAME
- See Also:
- Constant Field Values
-
UNMARSHALCONTEXT_CLASS
private static final java.lang.String UNMARSHALCONTEXT_CLASS
- See Also:
- Constant Field Values
-
MARSHALCONTEXT_CLASS
private static final java.lang.String MARSHALCONTEXT_CLASS
- See Also:
- Constant Field Values
-
UNMARSHAL_ISATMETHOD
private static final java.lang.String UNMARSHAL_ISATMETHOD
- See Also:
- Constant Field Values
-
UNMARSHAL_ISATSIGNATURE
private static final java.lang.String UNMARSHAL_ISATSIGNATURE
- See Also:
- Constant Field Values
-
GETINDEX_METHOD
private static final java.lang.String GETINDEX_METHOD
- See Also:
- Constant Field Values
-
UNMARSHALLERPRESENT_METHOD
private static final java.lang.String UNMARSHALLERPRESENT_METHOD
- See Also:
- Constant Field Values
-
UNMARSHALLERPRESENT_SIGNATURE
private static final java.lang.String UNMARSHALLERPRESENT_SIGNATURE
- See Also:
- Constant Field Values
-
UNMARSHALCONTEXT_INTERFACE
private static final java.lang.String UNMARSHALCONTEXT_INTERFACE
- See Also:
- Constant Field Values
-
MARSHALCONTEXT_INTERFACE
private static final java.lang.String MARSHALCONTEXT_INTERFACE
- See Also:
- Constant Field Values
-
CURRENTELEMENT_METHOD
private static final java.lang.String CURRENTELEMENT_METHOD
- See Also:
- Constant Field Values
-
CURRENTELEMENT_SIGNATURE
private static final java.lang.String CURRENTELEMENT_SIGNATURE
- See Also:
- Constant Field Values
-
PARSERNEXT_METHOD
private static final java.lang.String PARSERNEXT_METHOD
- See Also:
- Constant Field Values
-
PARSERNEXT_SIGNATURE
private static final java.lang.String PARSERNEXT_SIGNATURE
- See Also:
- Constant Field Values
-
CLOSESTART_METHOD
private static final java.lang.String CLOSESTART_METHOD
- See Also:
- Constant Field Values
-
CLOSESTART_SIGNATURE
private static final java.lang.String CLOSESTART_SIGNATURE
- See Also:
- Constant Field Values
-
ADDUNMARSHALLER_METHOD
private static final java.lang.String ADDUNMARSHALLER_METHOD
- See Also:
- Constant Field Values
-
ADDUNMARSHALLER_SIGNATURE
private static final java.lang.String ADDUNMARSHALLER_SIGNATURE
- See Also:
- Constant Field Values
-
REMOVEUNMARSHALLER_METHOD
private static final java.lang.String REMOVEUNMARSHALLER_METHOD
- See Also:
- Constant Field Values
-
REMOVEUNMARSHALLER_SIGNATURE
private static final java.lang.String REMOVEUNMARSHALLER_SIGNATURE
- See Also:
- Constant Field Values
-
ADDMARSHALLER_METHOD
private static final java.lang.String ADDMARSHALLER_METHOD
- See Also:
- Constant Field Values
-
ADDMARSHALLER_SIGNATURE
private static final java.lang.String ADDMARSHALLER_SIGNATURE
- See Also:
- Constant Field Values
-
REMOVEMARSHALLER_METHOD
private static final java.lang.String REMOVEMARSHALLER_METHOD
- See Also:
- Constant Field Values
-
REMOVEMARSHALLER_SIGNATURE
private static final java.lang.String REMOVEMARSHALLER_SIGNATURE
- See Also:
- Constant Field Values
-
PUSH_NAMESPACES_METHOD
private static final java.lang.String PUSH_NAMESPACES_METHOD
- See Also:
- Constant Field Values
-
PUSH_NAMESPACES_SIG
private static final java.lang.String PUSH_NAMESPACES_SIG
- See Also:
- Constant Field Values
-
POP_NAMESPACES_METHOD
private static final java.lang.String POP_NAMESPACES_METHOD
- See Also:
- Constant Field Values
-
POP_NAMESPACES_SIG
private static final java.lang.String POP_NAMESPACES_SIG
- See Also:
- Constant Field Values
-
EQUALS_METHODNAME
private static final java.lang.String EQUALS_METHODNAME
- See Also:
- Constant Field Values
-
EQUALS_SIGNATURE
private static final java.lang.String EQUALS_SIGNATURE
- See Also:
- Constant Field Values
-
ISPRESENT_METHOD_ARGS
private static final Type[] ISPRESENT_METHOD_ARGS
-
UNMARSHAL_METHOD_ARGS
private static final Type[] UNMARSHAL_METHOD_ARGS
-
MARSHAL_METHOD_ARGS
private static final Type[] MARSHAL_METHOD_ARGS
-
UNMARSHALLER_INTERFACES
static final java.lang.String[] UNMARSHALLER_INTERFACES
-
MARSHALLER_INTERFACES
static final java.lang.String[] MARSHALLER_INTERFACES
-
BOTH_INTERFACES
static final java.lang.String[] BOTH_INTERFACES
-
m_container
private final IContainer m_container
Containing binding definition structure.
-
m_defContext
private final DefinitionContext m_defContext
Definition context for mapping.
-
m_class
private final BoundClass m_class
Class linked to mapping.
-
m_name
private final NameDefinition m_name
Mapped element name (may benull
if abstract mapping).
-
m_isAbstract
private final boolean m_isAbstract
Abstract mapping flag.
-
m_baseType
private final java.lang.String m_baseType
Name of abstract base type.
-
m_binding
private final ObjectBinding m_binding
Binding structure defining the mapping.
-
m_baseMapping
private IMapping m_baseMapping
Abstract binding this one is based on (null
if not an extension).
-
m_marshaller
private ClassFile m_marshaller
Constructed marshaller class.
-
m_unmarshaller
private ClassFile m_unmarshaller
Constructed unmarshaller class.
-
m_extensions
private java.util.ArrayList m_extensions
Mappings which extend this one (null
if none).
-
m_referenceType
private java.lang.String m_referenceType
Reference type of mapping, as fully qualified class name.
-
-
Constructor Detail
-
MappingDefinition
public MappingDefinition(IContainer contain, DefinitionContext defc, java.lang.String type, NameDefinition name, java.lang.String tname, boolean abs, java.lang.String base, ObjectBinding bind, boolean nillable) throws JiBXException
Constructor.- Parameters:
contain
- containing binding definition structuredefc
- definition context for this mappingtype
- bound class namename
- mapped element name information (null
if none)tname
- qualified type name for abstract mapping (null
if none)abs
- abstract mapping flagbase
- abstract mapping extended by this onebind
- binding definition component (may benull
if a concrete mapping)nillable
- flag for nillable element- Throws:
JiBXException
- if class definition not found
-
-
Method Detail
-
hasNamespace
boolean hasNamespace()
Check if one or more namespaces are defined for element.- Returns:
true
if namespaces are defined,false
if not
-
genLoadNamespaces
void genLoadNamespaces(MethodBuilder mb)
Generate code for loading namespace index and URI arrays.- Parameters:
mb
- method builder for generated code
-
getBoundClass
public BoundClass getBoundClass()
Get the mapped class information. This implements the method used by the base class.- Specified by:
getBoundClass
in classMappingBase
- Returns:
- information for mapped class
-
linkMappings
public void linkMappings() throws JiBXException
Links extension mappings to their base mappings. This must be done before the more general linking step in order to determine which abstract mappings are standalone and which are extended by other mappings- Throws:
JiBXException
- if error in linking
-
getBoundType
public java.lang.String getBoundType()
Description copied from interface:IMapping
Get class name handled by mapping.- Returns:
- name of class bound by mapping
-
getReferenceType
public java.lang.String getReferenceType()
Description copied from interface:IMapping
Get class name of type to be assumed for references to this mapping.- Returns:
- reference type class name name
-
getImplComponent
public IComponent getImplComponent()
Description copied from interface:IMapping
Get binding component implementing mapping. This call is only valid for mappings with child components, not for mappings defined using marshallers or unmarshallers.- Returns:
- binding component implementing this mapping
-
getMarshaller
public ClassFile getMarshaller()
Description copied from interface:IMapping
Get marshaller class used for mapping.- Returns:
- marshaller class information
-
getUnmarshaller
public ClassFile getUnmarshaller()
Description copied from interface:IMapping
Get unmarshaller class used for mapping.- Returns:
- unmarshaller class information
-
getName
public NameDefinition getName()
Description copied from interface:IMapping
Get mapped element name.- Returns:
- mapped element name information (may be
null
if no element name defined for mapping)
-
addNamespace
public void addNamespace(NamespaceDefinition ns) throws JiBXException
Description copied from interface:IMapping
Add namespace. This adds a namespace definition to those active for the mapping.- Parameters:
ns
- namespace definition to be added- Throws:
JiBXException
- if error in defining namespace
-
isAbstract
public boolean isAbstract()
Description copied from interface:IMapping
Check if mapping is abstract.- Returns:
true
if an abstract mapping,false
if not
-
isBase
public boolean isBase()
Description copied from interface:IMapping
Check if mapping has extensions.- Returns:
true
if one or more mappings extend this mapping,false
if not
-
addExtension
public void addExtension(MappingDefinition mdef) throws JiBXException
Description copied from interface:IMapping
Add extension to abstract mapping. This call is only valid for abstract mappings.- Parameters:
mdef
- extension mapping definition- Throws:
JiBXException
- if configuration error
-
buildRef
public IComponent buildRef(IContainer parent, IContextObj objc, java.lang.String type, PropertyDefinition prop) throws JiBXException
Description copied from interface:IMapping
Build reference to mapping. Constructs and returns the component for handling the mapping.- Parameters:
parent
- containing binding definition structureobjc
- current object contexttype
- mapped value typeprop
- property definition (may benull
)- Returns:
- constructed mapping reference component
- Throws:
JiBXException
- if configuration error
-
getNamespaces
public java.util.ArrayList getNamespaces()
Description copied from interface:IMapping
Get namespaces defined for mapping.- Returns:
- namespace definitions (may be
null
if none)
-
generateAbstractMarshaller
private void generateAbstractMarshaller(ClassFile cf)
Add abstract marshaller interface to handler class. This adds the interface and generates theIAbstractMarshaller.baseMarshal(Object, org.jibx.runtime.IMarshallingContext)
method responsible for passing handling on to the appropriate extension class.- Parameters:
cf
- handler class
-
generateIfExtendingCheck
private void generateIfExtendingCheck(ClassFile cf, boolean hasname)
Generate theIMarshaller.isExtension(String)
method to check if this mapping is extending a particular abstract mapping.- Parameters:
cf
-hasname
-
-
generateUnmarshalImplementation
private void generateUnmarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont, boolean hasname) throws JiBXException
Generate theIUnmarshaller.unmarshal(Object, org.jibx.runtime.IUnmarshallingContext)
method implementation.- Parameters:
cf
- class to receive methodhasattr
- attribute definition present flaghascont
- content definition present flaghasname
- element name defined by this mapping flag- Throws:
JiBXException
-
generateIsPresent
private void generateIsPresent(ClassFile cf, boolean hasname)
Generate theIUnmarshaller.isPresent(org.jibx.runtime.IUnmarshallingContext)
method implementation.- Parameters:
cf
- class to receive methodhasname
- element name defined by this mapping flag
-
generateMarshalImplementation
private void generateMarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont) throws JiBXException
Generate theIMarshaller.marshal(Object, org.jibx.runtime.IMarshallingContext)
method implementation.- Parameters:
cf
- class to receive methodhasattr
- attribute definition present flaghascont
- content definition present flag- Throws:
JiBXException
-
generateCode
public void generateCode(boolean force) throws JiBXException
Description copied from interface:IMapping
Generate required code for mapping.- Parameters:
force
- add marshaller/unmarshaller classes for abstract non-base mappings flag (not passed on to children)- Throws:
JiBXException
- if error in transformation
-
getWrapperName
public NameDefinition getWrapperName()
Description copied from interface:IComponent
Get element wrapper name. If the component defines an element as the container for content, this returns the name information for that element.- Specified by:
getWrapperName
in interfaceIComponent
- Overrides:
getWrapperName
in classPassThroughComponent
- Returns:
- component element name,
null
if no wrapper element
-
setLinkages
public void setLinkages() throws JiBXException
Description copied from interface:ILinkable
Establish and validate linkages between binding components. This is called after the basic binding structures have been set up. All linkages between components must be resolved by this method, in order to prevent problems due to the order of definitions between components. This implies that each component must in turn call the same method for each child component. None of the other method calls defined by this interface are valid until after this call.- Specified by:
setLinkages
in interfaceILinkable
- Overrides:
setLinkages
in classLinkableBase
- Throws:
JiBXException
- if error in configuration
-
getBinding
public ITypeBinding getBinding()
Description copied from interface:IMapping
Get the actual binding for a mapping. This is only usable with mappings defined by a binding; if the mapping is instead defined by specifying marshaller and unmarshaller classes this will just return null.- Returns:
- binding structure, or
null
if none
-
print
public void print(int depth)
- Specified by:
print
in interfaceIComponent
- Overrides:
print
in classLinkableBase
-
-