Class BindingElement


  • public class BindingElement
    extends NestingElementBase
    Model component for binding element.
    Author:
    Dennis M. Sosnoski
    • Field Detail

      • s_allowedAttributes

        public static final StringArray s_allowedAttributes
        Enumeration of allowed attribute names
      • s_directionEnum

        static final EnumSet s_directionEnum
      • m_name

        private java.lang.String m_name
        Binding name.
      • m_direction

        private java.lang.String m_direction
        Binding direction.
      • m_inputBinding

        private boolean m_inputBinding
        Input binding flag.
      • m_outputBinding

        private boolean m_outputBinding
        Output binding flag.
      • m_forwardReferences

        private boolean m_forwardReferences
        Support forward references to IDs flag.
      • m_trackSource

        private boolean m_trackSource
        Generate souce tracking interface flag.
      • m_forceClasses

        private boolean m_forceClasses
        Generate souce tracking interface flag.
      • m_addConstructors

        private boolean m_addConstructors
        Add default constructors where needed flag.
      • m_trimWhitespace

        private boolean m_trimWhitespace
        Trim whitespace for simple values (schema compatibility) flag.
      • m_majorVersion

        private int m_majorVersion
        Major version of binding.
      • m_minorVersion

        private int m_minorVersion
        Minor version of binding.
      • m_targetPackage

        private java.lang.String m_targetPackage
        Package for generated context factory.
      • m_precompiled

        private boolean m_precompiled
        Precompiled binding flag.
      • m_baseUrl

        private java.net.URL m_baseUrl
        Base URL for use with relative include paths.
      • m_includePaths

        private final java.util.Set m_includePaths
        Set of paths for includes.
      • m_precompiledPaths

        private final java.util.Set m_precompiledPaths
        Set of paths for precompiled includes.
      • m_includeBindings

        private final java.util.Map m_includeBindings
        Map from include path to actual binding.
      • m_children

        private final java.util.ArrayList m_children
        List of child elements.
      • m_idClassSet

        private java.util.Set m_idClassSet
        Set of class names which can be referenced by ID.
      • m_namespaceDeclares

        private java.util.ArrayList m_namespaceDeclares
        List of namespace declarations to be added on output (lazy create, null if none).
    • Constructor Detail

      • BindingElement

        public BindingElement()
        Default constructor.
    • Method Detail

      • setName

        public void setName​(java.lang.String name)
        Set binding name.
        Parameters:
        name - binding definition name
      • getName

        public java.lang.String getName()
        Get binding name.
        Returns:
        binding definition name
      • setForward

        public void setForward​(boolean forward)
        Set forward references to IDs be supported in XML.
        Parameters:
        forward - true if forward references supported, false if not
      • isForward

        public boolean isForward()
        Check if forward references to IDs must be supported in XML.
        Returns:
        true if forward references required, false if not
      • setTrackSource

        public void setTrackSource​(boolean track)
        Set source position tracking for unmarshalling.
        Parameters:
        track - true if source position tracking enabled, false if not
      • isTrackSource

        public boolean isTrackSource()
        Check if source position tracking enabled for unmarshalling.
        Returns:
        true if source position tracking enabled, false if not
      • setForceClasses

        public void setForceClasses​(boolean force)
        Set force marshaller/unmarshaller class creation for top-level non-base abstract mappings.
        Parameters:
        force - true if class generation forced, false if not
      • isForceClasses

        public boolean isForceClasses()
        Check if marshaller/unmarshaller class creation for top-level non-base abstract mappings is forced.
        Returns:
        true if class generation forced, false if not
      • setAddConstructors

        public void setAddConstructors​(boolean add)
        Set default constructor generation.
        Parameters:
        add - true if constructors should be added, false if not
      • isAddConstructors

        public boolean isAddConstructors()
        Check if default constructor generation is enabled.
        Returns:
        true if default constructor generation enabled, false if not
      • setTrimWhitespace

        public void setTrimWhitespace​(boolean trim)
        Set trim whitespace flag.
        Parameters:
        trim - true if whitespace should be trimmed from simple values, false if not
      • isTrimWhitespace

        public boolean isTrimWhitespace()
        Check if whitespace should be trimmed from simple values.
        Returns:
        trim whitespace flag
      • getMajorVersion

        public int getMajorVersion()
        Get major version number.
        Returns:
        major version
      • setMajorVersion

        public void setMajorVersion​(int ver)
        Set major version number.
        Parameters:
        ver - major version
      • getMinorVersion

        public int getMinorVersion()
        Get minor version number.
        Returns:
        minor version
      • setMinorVersion

        public void setMinorVersion​(int ver)
        Set minor version number.
        Parameters:
        ver - minor version
      • setTargetPackage

        public void setTargetPackage​(java.lang.String pack)
        Set package for generated context factory class.
        Parameters:
        pack - generated context factory package (null if unspecified)
      • getTargetPackage

        public java.lang.String getTargetPackage()
        Get package for generated context factory class.
        Returns:
        package for generated context factory (null if unspecified)
      • setBaseUrl

        public void setBaseUrl​(java.net.URL base)
        Set base URL for relative include paths.
        Parameters:
        base -
      • getBaseUrl

        public java.net.URL getBaseUrl()
        Get base URL for relative include paths.
        Returns:
        base URL
      • setDirection

        private void setDirection()
        Set the correct direction text. This should be used whenever the individual in and out flags are set, so that modifications are output correctly when a binding is marshalled.
      • setOutBinding

        public void setOutBinding​(boolean out)
        Set binding component applies for marshalling XML.
        Parameters:
        out - true if binding supports output, false if not
      • isOutBinding

        public boolean isOutBinding()
        Check if this binding component applies for marshalling XML.
        Returns:
        true if binding supports output, false if not
      • setInBinding

        public void setInBinding​(boolean in)
        Set binding component applies for unmarshalling XML.
        Parameters:
        in - true if binding supports input, false if not
      • isInBinding

        public boolean isInBinding()
        Check if this binding component applies for unmarshalling XML.
        Returns:
        true if binding supports input, false if not
      • isPrecompiled

        public boolean isPrecompiled()
        Check if a precompiled binding.
        Returns:
        true if precompiled, false if not
      • setPrecompiled

        public void setPrecompiled​(boolean precomp)
        Set precompiled binding flag.
        Parameters:
        precomp -
      • addIncludePath

        public boolean addIncludePath​(java.lang.String path,
                                      boolean precomp)
        Add include path to set processed.
        Parameters:
        path -
        precomp - precompiled binding flag
        Returns:
        true if new path, false if duplicate
      • getIncludeBinding

        public BindingElement getIncludeBinding​(java.net.URL url,
                                                BindingElement root,
                                                ValidationContext vctx)
                                         throws java.io.IOException,
                                                JiBXException
        Get included binding. If the binding was supplied directly it's just returned; otherwise, it's read from the URL. This method should only be called if addIncludePath(String, boolean) returns true, so that each unique included binding is only processed once.
        Parameters:
        url - binding path
        root - binding containing the include
        vctx - validation context
        Returns:
        binding
        Throws:
        java.io.IOException
        JiBXException
      • getExistingIncludeBinding

        public BindingElement getExistingIncludeBinding​(java.net.URL url)
        Get existing included binding.
        Parameters:
        url - binding path
        Returns:
        binding if it exists, otherwise null
      • addIncludeBinding

        public void addIncludeBinding​(java.lang.String path,
                                      BindingElement bind)
        Add binding accessible to includes. This allows bindings to be supplied directly, without needing to be parsed from an input document.
        Parameters:
        path - URL string identifying the binding (virtual path)
        bind -
      • addIdClass

        public void addIdClass​(IClass clas)
        Add a class defined with a ID value. This is used to track the classes with ID values for validating ID references in the binding. If the binding uses global IDs, the actual ID class is added to the table along with all interfaces implemented by the class and all superclasses, since instances of the ID class can be referenced in any of those forms. If the binding does not use global IDs, only the actual ID class is added, since references must be type-specific.
        Parameters:
        clas - information for class with ID value
      • isIdClass

        public boolean isIdClass​(java.lang.String name)
        Check if a class can be referenced by ID. This just checks if any classes compatible with the reference type are bound with ID values.
        Parameters:
        name - fully qualified name of class
        Returns:
        true if class is bound with an ID, false if not
      • addTopChild

        public void addTopChild​(java.lang.Object child)
        Add top-level child element. TODO: should be ElementBase argument, but JiBX doesn't allow yet
        Parameters:
        child - element to be added as child of this element
      • topChildren

        public java.util.ArrayList topChildren()
        Get list of top-level child elements.
        Returns:
        list of child elements, or null if none
      • topChildIterator

        public java.util.Iterator topChildIterator()
        Get iterator for top-level child elements.
        Returns:
        iterator for child elements
      • addNamespaceDecl

        public void addNamespaceDecl​(java.lang.String prefix,
                                     java.lang.String uri)
        Add namespace declaration for output when marshalling.
        Parameters:
        prefix - namespace prefix (null if none)
        uri - namespace URI (non-null)
      • hasAttribute

        public boolean hasAttribute()
      • hasContent

        public boolean hasContent()
      • isOptional

        public boolean isOptional()
      • getDefaultStyle

        public int getDefaultStyle()
        Get default style value for child components. This call is only meaningful after validation.
        Overrides:
        getDefaultStyle in class NestingElementBase
        Returns:
        default style value for child components
      • preGet

        private void preGet​(IMarshallingContext ictx)
                     throws java.io.IOException
        Marshalling hook method to add namespace declarations to <binding> element.
        Parameters:
        ictx -
        Throws:
        java.io.IOException
      • buildFormat

        private static FormatElement buildFormat​(java.lang.String name,
                                                 java.lang.String type,
                                                 boolean use,
                                                 java.lang.String sname,
                                                 java.lang.String dname,
                                                 java.lang.String dflt)
      • defineBaseFormat

        private void defineBaseFormat​(FormatElement format,
                                      DefinitionContext dctx,
                                      ValidationContext vctx)
        Define a built-in format. This checks to make sure the type referenced by the format is present in the classpath, since some of the build-in formats apply to classes which are not part of the required runtime.
        Parameters:
        format -
        dctx -
        vctx -
      • runValidation

        public void runValidation​(boolean full,
                                  ValidationContext vctx)
        Run the actual validation of a binding model. This allows either partial or full validation, with partial validation not requiring access to class files.
        Parameters:
        full - run full validation flag (requires access to class files)
        vctx - context for controlling validation
      • runValidation

        public void runValidation​(ValidationContext vctx)
        Run the actual validation of a binding model. This form of call always does a full validation.
        Parameters:
        vctx - context for controlling validation
      • readBinding

        public static BindingElement readBinding​(java.io.InputStream is,
                                                 java.lang.String fname,
                                                 BindingElement contain,
                                                 boolean precomp,
                                                 ValidationContext vctx)
                                          throws JiBXException
        Read a binding definition (possibly as an include) to construct binding model.
        Parameters:
        is - input stream for reading binding
        fname - name of input file (null if unknown)
        contain - containing binding (null if none)
        precomp - precompiled binding flag
        vctx - validation context used during unmarshalling
        Returns:
        root of binding definition model
        Throws:
        JiBXException - on error in reading binding
      • readBinding

        public static BindingElement readBinding​(java.io.InputStream is,
                                                 java.lang.String fname,
                                                 ValidationContext vctx)
                                          throws JiBXException
        Read a binding definition to construct binding model. This method cannot be used for precompiled bindings.
        Parameters:
        is - input stream for reading binding
        fname - name of input file (null if unknown)
        vctx - validation context used during unmarshalling
        Returns:
        root of binding definition model
        Throws:
        JiBXException - on error in reading binding
      • validateBinding

        public static BindingElement validateBinding​(java.lang.String name,
                                                     java.net.URL path,
                                                     java.io.InputStream is,
                                                     ValidationContext vctx)
                                              throws JiBXException
        Validate a binding definition. This method cannot be used for precompiled bindings.
        Parameters:
        name - binding definition name
        path - binding definition URL
        is - input stream for reading binding
        vctx - validation context to record problems
        Returns:
        root of binding definition model, or null if error in unmarshalling
        Throws:
        JiBXException - on error in binding XML structure
      • newValidationContext

        public static ValidationContext newValidationContext()
        Create a default validation context.
        Returns:
        new validation context