public class MappingDefinition extends MappingBase
Modifier and Type | Field and 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 org.apache.bcel.generic.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 be
null 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 org.apache.bcel.generic.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 org.apache.bcel.generic.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 |
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
m_component
Constructor and 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.
|
Modifier and Type | Method and 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 the
IMarshaller.isExtension(String)
method to check if this mapping is extending a particular abstract
mapping. |
private void |
generateIsPresent(ClassFile cf,
boolean hasname)
Generate the
IUnmarshaller.isPresent(org.jibx.runtime.IUnmarshallingContext)
method implementation. |
private void |
generateMarshalImplementation(ClassFile cf,
boolean hasattr,
boolean hascont)
Generate the
IMarshaller.marshal(Object,
org.jibx.runtime.IMarshallingContext) method implementation. |
private void |
generateUnmarshalImplementation(ClassFile cf,
boolean hasattr,
boolean hascont,
boolean hasname)
Generate the
IUnmarshaller.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.
|
addIMarshallableMethod, addIUnmarshallableMethod, getMappingName, getTypeName
handleRecursion, isLinked
genAttributeMarshal, genAttributeUnmarshal, genAttrPresentTest, genContentMarshal, genContentPresentTest, genContentUnmarshal, genLoadId, genNewInstance, getType, hasAttribute, hasContent, hasId, isOptional, setWrappedComponent
private static final java.lang.String ADAPTERCLASS_SUFFIX
private static final java.lang.String MARSHAL_METHODNAME
private static final java.lang.String BASEMARSHAL_METHODNAME
private static final java.lang.String UNMARSHAL_METHODNAME
private static final java.lang.String ISPRESENT_METHODNAME
private static final java.lang.String UNMARSHALCONTEXT_CLASS
private static final java.lang.String MARSHALCONTEXT_CLASS
private static final java.lang.String UNMARSHAL_ISATMETHOD
private static final java.lang.String UNMARSHAL_ISATSIGNATURE
private static final java.lang.String GETINDEX_METHOD
private static final java.lang.String UNMARSHALLERPRESENT_METHOD
private static final java.lang.String UNMARSHALLERPRESENT_SIGNATURE
private static final java.lang.String UNMARSHALCONTEXT_INTERFACE
private static final java.lang.String MARSHALCONTEXT_INTERFACE
private static final java.lang.String CURRENTELEMENT_METHOD
private static final java.lang.String CURRENTELEMENT_SIGNATURE
private static final java.lang.String PARSERNEXT_METHOD
private static final java.lang.String PARSERNEXT_SIGNATURE
private static final java.lang.String CLOSESTART_METHOD
private static final java.lang.String CLOSESTART_SIGNATURE
private static final java.lang.String ADDUNMARSHALLER_METHOD
private static final java.lang.String ADDUNMARSHALLER_SIGNATURE
private static final java.lang.String REMOVEUNMARSHALLER_METHOD
private static final java.lang.String REMOVEUNMARSHALLER_SIGNATURE
private static final java.lang.String ADDMARSHALLER_METHOD
private static final java.lang.String ADDMARSHALLER_SIGNATURE
private static final java.lang.String REMOVEMARSHALLER_METHOD
private static final java.lang.String REMOVEMARSHALLER_SIGNATURE
private static final java.lang.String PUSH_NAMESPACES_METHOD
private static final java.lang.String PUSH_NAMESPACES_SIG
private static final java.lang.String POP_NAMESPACES_METHOD
private static final java.lang.String POP_NAMESPACES_SIG
private static final java.lang.String EQUALS_METHODNAME
private static final java.lang.String EQUALS_SIGNATURE
private static final org.apache.bcel.generic.Type[] ISPRESENT_METHOD_ARGS
private static final org.apache.bcel.generic.Type[] UNMARSHAL_METHOD_ARGS
private static final org.apache.bcel.generic.Type[] MARSHAL_METHOD_ARGS
static final java.lang.String[] UNMARSHALLER_INTERFACES
static final java.lang.String[] MARSHALLER_INTERFACES
static final java.lang.String[] BOTH_INTERFACES
private final IContainer m_container
private final DefinitionContext m_defContext
private final BoundClass m_class
private final NameDefinition m_name
null
if abstract mapping).private final boolean m_isAbstract
private final java.lang.String m_baseType
private final ObjectBinding m_binding
private IMapping m_baseMapping
null
if not an
extension).private ClassFile m_marshaller
private ClassFile m_unmarshaller
private java.util.ArrayList m_extensions
null
if none).private java.lang.String m_referenceType
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
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 be null
if a
concrete mapping)nillable
- flag for nillable elementJiBXException
- if class definition not foundboolean hasNamespace()
true
if namespaces are defined, false
if notvoid genLoadNamespaces(MethodBuilder mb)
mb
- method builder for generated codepublic BoundClass getBoundClass()
getBoundClass
in class MappingBase
public void linkMappings() throws JiBXException
JiBXException
- if error in linkingpublic java.lang.String getBoundType()
IMapping
public java.lang.String getReferenceType()
IMapping
public IComponent getImplComponent()
IMapping
public ClassFile getMarshaller()
IMapping
public ClassFile getUnmarshaller()
IMapping
public NameDefinition getName()
IMapping
null
if no
element name defined for mapping)public void addNamespace(NamespaceDefinition ns) throws JiBXException
IMapping
ns
- namespace definition to be addedJiBXException
- if error in defining namespacepublic boolean isAbstract()
IMapping
true
if an abstract mapping, false
if notpublic boolean isBase()
IMapping
true
if one or more mappings extend this mapping,
false
if notpublic void addExtension(MappingDefinition mdef) throws JiBXException
IMapping
mdef
- extension mapping definitionJiBXException
- if configuration errorpublic IComponent buildRef(IContainer parent, IContextObj objc, java.lang.String type, PropertyDefinition prop) throws JiBXException
IMapping
parent
- containing binding definition structureobjc
- current object contexttype
- mapped value typeprop
- property definition (may be null
)JiBXException
- if configuration errorpublic java.util.ArrayList getNamespaces()
IMapping
null
if none)private void generateAbstractMarshaller(ClassFile cf)
IAbstractMarshaller.baseMarshal(Object,
org.jibx.runtime.IMarshallingContext)
method responsible for passing
handling on to the appropriate extension class.cf
- handler classprivate void generateIfExtendingCheck(ClassFile cf, boolean hasname)
IMarshaller.isExtension(String)
method to check if this mapping is extending a particular abstract
mapping.cf
- hasname
- private void generateUnmarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont, boolean hasname) throws JiBXException
IUnmarshaller.unmarshal(Object,
org.jibx.runtime.IUnmarshallingContext)
method implementation.cf
- class to receive methodhasattr
- attribute definition present flaghascont
- content definition present flaghasname
- element name defined by this mapping flagJiBXException
private void generateIsPresent(ClassFile cf, boolean hasname)
IUnmarshaller.isPresent(org.jibx.runtime.IUnmarshallingContext)
method implementation.cf
- class to receive methodhasname
- element name defined by this mapping flagprivate void generateMarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont) throws JiBXException
IMarshaller.marshal(Object,
org.jibx.runtime.IMarshallingContext)
method implementation.cf
- class to receive methodhasattr
- attribute definition present flaghascont
- content definition present flagJiBXException
public void generateCode(boolean force) throws JiBXException
IMapping
force
- add marshaller/unmarshaller classes for abstract non-base
mappings flag (not passed on to children)JiBXException
- if error in transformationpublic NameDefinition getWrapperName()
IComponent
getWrapperName
in interface IComponent
getWrapperName
in class PassThroughComponent
null
if no wrapper elementpublic void setLinkages() throws JiBXException
ILinkable
setLinkages
in interface ILinkable
setLinkages
in class LinkableBase
JiBXException
- if error in configurationpublic ITypeBinding getBinding()
IMapping
null
if nonepublic void print(int depth)
print
in interface IComponent
print
in class LinkableBase