Class 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 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
      • 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 be null 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 structure
        defc - definition context for this mapping
        type - bound class name
        name - mapped element name information (null if none)
        tname - qualified type name for abstract mapping (null if none)
        abs - abstract mapping flag
        base - abstract mapping extended by this one
        bind - binding definition component (may be null 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 class MappingBase
        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 structure
        objc - current object context
        type - mapped value type
        prop - property definition (may be null)
        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)
      • generateIfExtendingCheck

        private void generateIfExtendingCheck​(ClassFile cf,
                                              boolean hasname)
        Generate the IMarshaller.isExtension(String) method to check if this mapping is extending a particular abstract mapping.
        Parameters:
        cf -
        hasname -
      • 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 interface IComponent
        Overrides:
        getWrapperName in class PassThroughComponent
        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 interface ILinkable
        Overrides:
        setLinkages in class LinkableBase
        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