org.jibx.binding.model
Class BindingElement

java.lang.Object
  extended by org.jibx.binding.model.ElementBase
      extended by org.jibx.binding.model.NestingElementBase
          extended by org.jibx.binding.model.BindingElement

public class BindingElement
extends NestingElementBase

Model component for binding element.

Author:
Dennis M. Sosnoski

Nested Class Summary
static class BindingElement.UnmarshalWrapper
          Inner class as wrapper for binding element on unmarshalling.
 
Field Summary
static int BOTH_BINDING
           
static int IN_BINDING
           
private  boolean m_addConstructors
          Add default constructors where needed flag.
private  java.net.URL m_baseUrl
          Base URL for use with relative include paths.
private  java.util.ArrayList m_children
          List of child elements.
private  java.lang.String m_direction
          Binding direction.
private  boolean m_forceClasses
          Generate souce tracking interface flag.
private  boolean m_forwardReferences
          Support forward references to IDs flag.
private  java.util.Set m_idClassSet
          Set of class names which can be referenced by ID.
private  java.util.Map m_includeBindings
          Map from include path to actual binding.
private  java.util.Set m_includePaths
          Set of paths for includes.
private  boolean m_inputBinding
          Input binding flag.
private  int m_majorVersion
          Major version of binding.
private  int m_minorVersion
          Minor version of binding.
private  java.lang.String m_name
          Binding name.
private  java.util.ArrayList m_namespaceDeclares
          List of namespace declarations to be added on output (lazy create, null if none).
private  boolean m_outputBinding
          Output binding flag.
private  boolean m_precompiled
          Precompiled binding flag.
private  java.util.Set m_precompiledPaths
          Set of paths for precompiled includes.
private  java.lang.String m_targetPackage
          Package for generated context factory.
private  boolean m_trackSource
          Generate souce tracking interface flag.
private  boolean m_trimWhitespace
          Trim whitespace for simple values (schema compatibility) flag.
static int OUT_BINDING
           
static StringArray s_allowedAttributes
          Enumeration of allowed attribute names
(package private) static EnumSet s_directionEnum
           
 
Fields inherited from class org.jibx.binding.model.ElementBase
BINDING_ELEMENT, COLLECTION_ELEMENT, ELEMENT_NAMES, FORMAT_ELEMENT, INCLUDE_ELEMENT, INPUT_ELEMENT, MAPPING_ELEMENT, NAMESPACE_ELEMENT, OUTPUT_ELEMENT, SPLIT_ELEMENT, STRUCTURE_ELEMENT, TEMPLATE_ELEMENT, VALUE_ELEMENT
 
Constructor Summary
BindingElement()
          Default constructor.
 
Method Summary
 void addIdClass(IClass clas)
          Add a class defined with a ID value.
 void addIncludeBinding(java.lang.String path, BindingElement bind)
          Add binding accessible to includes.
 boolean addIncludePath(java.lang.String path, boolean precomp)
          Add include path to set processed.
 void addNamespaceDecl(java.lang.String prefix, java.lang.String uri)
          Add namespace declaration for output when marshalling.
 void addTopChild(java.lang.Object child)
          Add top-level child element.
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)
           
private  void defineBaseFormat(FormatElement format, DefinitionContext dctx, ValidationContext vctx)
          Define a built-in format.
 java.net.URL getBaseUrl()
          Get base URL for relative include paths.
 int getDefaultStyle()
          Get default style value for child components.
 BindingElement getExistingIncludeBinding(java.net.URL url)
          Get existing included binding.
 BindingElement getIncludeBinding(java.net.URL url, BindingElement root, ValidationContext vctx)
          Get included binding.
 int getMajorVersion()
          Get major version number.
 int getMinorVersion()
          Get minor version number.
 java.lang.String getName()
          Get binding name.
 java.lang.String getTargetPackage()
          Get package for generated context factory class.
 boolean hasAttribute()
           
 boolean hasContent()
           
 boolean isAddConstructors()
          Check if default constructor generation is enabled.
 boolean isForceClasses()
          Check if marshaller/unmarshaller class creation for top-level non-base abstract mappings is forced.
 boolean isForward()
          Check if forward references to IDs must be supported in XML.
 boolean isIdClass(java.lang.String name)
          Check if a class can be referenced by ID.
 boolean isInBinding()
          Check if this binding component applies for unmarshalling XML.
 boolean isOptional()
           
 boolean isOutBinding()
          Check if this binding component applies for marshalling XML.
 boolean isPrecompiled()
          Check if a precompiled binding.
 boolean isTrackSource()
          Check if source position tracking enabled for unmarshalling.
 boolean isTrimWhitespace()
          Check if whitespace should be trimmed from simple values.
static ValidationContext newValidationContext()
          Create a default validation context.
private  void preGet(IMarshallingContext ictx)
          Marshalling hook method to add namespace declarations to <binding> element.
private  void preSet(IUnmarshallingContext ictx)
          Make sure all attributes are defined.
 void prevalidate(ValidationContext vctx)
          Prevalidate all attributes of element in isolation.
static BindingElement readBinding(java.io.InputStream is, java.lang.String fname, BindingElement contain, boolean precomp, ValidationContext vctx)
          Read a binding definition (possibly as an include) to construct binding model.
static BindingElement readBinding(java.io.InputStream is, java.lang.String fname, ValidationContext vctx)
          Read a binding definition to construct binding model.
 void runValidation(boolean full, ValidationContext vctx)
          Run the actual validation of a binding model.
 void runValidation(ValidationContext vctx)
          Run the actual validation of a binding model.
 void setAddConstructors(boolean add)
          Set default constructor generation.
 void setBaseUrl(java.net.URL base)
          Set base URL for relative include paths.
private  void setDirection()
          Set the correct direction text.
 void setForceClasses(boolean force)
          Set force marshaller/unmarshaller class creation for top-level non-base abstract mappings.
 void setForward(boolean forward)
          Set forward references to IDs be supported in XML.
 void setInBinding(boolean in)
          Set binding component applies for unmarshalling XML.
 void setMajorVersion(int ver)
          Set major version number.
 void setMinorVersion(int ver)
          Set minor version number.
 void setName(java.lang.String name)
          Set binding name.
 void setOutBinding(boolean out)
          Set binding component applies for marshalling XML.
 void setPrecompiled(boolean precomp)
          Set precompiled binding flag.
 void setTargetPackage(java.lang.String pack)
          Set package for generated context factory class.
 void setTrackSource(boolean track)
          Set source position tracking for unmarshalling.
 void setTrimWhitespace(boolean trim)
          Set trim whitespace flag.
 java.util.Iterator topChildIterator()
          Get iterator for top-level child elements.
 java.util.ArrayList topChildren()
          Get list of top-level child elements.
static BindingElement validateBinding(java.lang.String name, java.net.URL path, java.io.InputStream is, ValidationContext vctx)
          Validate a binding definition.
 
Methods inherited from class org.jibx.binding.model.NestingElementBase
addChild, childIterator, children, getDefinitions, getStyle, getStyleName, setDefinitions, setStyleName, validate
 
Methods inherited from class org.jibx.binding.model.ElementBase
getComment, name, setComment, toString, type, validateAttributes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

s_allowedAttributes

public static final StringArray s_allowedAttributes
Enumeration of allowed attribute names


IN_BINDING

public static final int IN_BINDING
See Also:
Constant Field Values

OUT_BINDING

public static final int OUT_BINDING
See Also:
Constant Field Values

BOTH_BINDING

public static final int BOTH_BINDING
See Also:
Constant Field Values

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

preSet

private void preSet(IUnmarshallingContext ictx)
             throws JiBXException
Make sure all attributes are defined.

Parameters:
ictx - unmarshalling context
Throws:
JiBXException - on unmarshalling error

prevalidate

public void prevalidate(ValidationContext vctx)
Prevalidate all attributes of element in isolation.

Overrides:
prevalidate in class NestingElementBase
Parameters:
vctx - validation context

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


Project Web Site