org.jibx.binding.model
Class BindingHolder

java.lang.Object
  extended by org.jibx.binding.model.BindingHolder

public class BindingHolder
extends java.lang.Object

External data for a binding definition. Along with the actual mapping definitions, this tracks namespace references and usages.

Author:
Dennis M. Sosnoski

Field Summary
private  BindingElement m_binding
          Actual binding definition.
private  boolean m_elementDefault
          Namespace used by default for elements flag.
private  java.lang.String m_fileName
          Name for file to be written from binding.
private  boolean m_finished
          Binding finalized flag.
private  LazyList m_mappings
          List of mapping definitions in binding.
private  java.lang.String m_namespace
          Namespace URI associated with this binding (null if no-namespace binding).
private  boolean m_namespaceUsed
          Binding namespace used for element or attribute flag.
private  BindingOrganizer m_organizer
          Organizer managing this holder.
private  java.lang.String m_prefix
          Prefix to be used for this namespace (null if unspecified).
private  boolean m_pullUpNamespaces
          Pull namespaces used in element or attribute names up to root binding flag (set when a type reference to this binding is seen).
private  InsertionOrderedSet m_referencedNamespaces
          Set of namespaces referenced in qualified names in this bindings.
private  InsertionOrderedSet m_usedNamespaces
          Set of namespaces used in element or attribute names in binding.
 
Constructor Summary
BindingHolder(java.lang.String uri, boolean dflt, BindingOrganizer dir)
          Constructor.
 
Method Summary
 void addFormat(FormatElement format)
          Add a format definition to the binding.
 void addMapping(MappingElementBase mapping)
          Add a mapping definition to the binding.
 void addNamespaceUsage(java.lang.String uri)
          Add usage of namespace for an element or attribute name in binding.
 void addTypeNameReference(java.lang.String uri, java.lang.Object obj)
          Add reference from this binding to a type name defined in the same or another binding.
private  void checkModifiable()
          Internal check method to verify that the binding is still modifiable.
(package private)  void finish(java.util.Collection formats, java.util.Collection includes, java.util.Set outernss, java.util.Map nsdfltpref, java.util.Map nsfrcdpref)
          Finishes building the binding.
(package private)  void forcePullUpNamespaces()
          Force namespaces to be pulled up to the root binding.
 BindingElement getBinding()
          Get the binding element.
 java.lang.String getElementDefaultNamespace()
          Get default namespace URI for elements defined in this binding.
 java.lang.String getFileName()
          Get the file name to be used for this file.
 int getMappingCount()
          Get the number of mapping definitions present in this binding.
 java.lang.String getNamespace()
          Get namespace URI associated with this binding.
 java.lang.String getPrefix()
          Get namespace prefix for this binding.
(package private)  java.util.Set getReferencedNamespaces()
          Get a set of all the namespace URIs referenced by a qualified name in this binding.
 BindingHolder getRequiredBinding(java.lang.Object obj)
          Get the binding associated with a particular control object.
(package private)  java.util.Set getUsedNamespaces()
          Get a set of all the namespace URIs used by element or attributes names in this binding.
(package private)  boolean isBindingNamespaceUsed()
          Check if the namespace associated with this binding is actually used by any element or attribute definitions in the binding.
(package private)  boolean isNamespaceElementDefault()
          Check if the namespace associated with this binding should be used as the default for definitions in the binding.
(package private)  boolean isPullUpNamespaces()
          Check if used namespaces need to be pulled up to the root binding.
 java.util.Iterator iterateMappings()
          Get the number of mapping definitions present in this binding.
 void setBinding(BindingElement bind)
          Set the binding element.
 void setFileName(java.lang.String name)
          Set the file name to be used for this file.
(package private)  void setPrefix(java.lang.String prefix)
          Set namespace prefix for this binding.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_organizer

private final BindingOrganizer m_organizer
Organizer managing this holder.


m_namespace

private final java.lang.String m_namespace
Namespace URI associated with this binding (null if no-namespace binding).


m_elementDefault

private final boolean m_elementDefault
Namespace used by default for elements flag.


m_referencedNamespaces

private final InsertionOrderedSet m_referencedNamespaces
Set of namespaces referenced in qualified names in this bindings.


m_usedNamespaces

private final InsertionOrderedSet m_usedNamespaces
Set of namespaces used in element or attribute names in binding.


m_prefix

private java.lang.String m_prefix
Prefix to be used for this namespace (null if unspecified).


m_binding

private BindingElement m_binding
Actual binding definition.


m_pullUpNamespaces

private boolean m_pullUpNamespaces
Pull namespaces used in element or attribute names up to root binding flag (set when a type reference to this binding is seen).


m_namespaceUsed

private boolean m_namespaceUsed
Binding namespace used for element or attribute flag.


m_finished

private boolean m_finished
Binding finalized flag.


m_fileName

private java.lang.String m_fileName
Name for file to be written from binding.


m_mappings

private final LazyList m_mappings
List of mapping definitions in binding.

Constructor Detail

BindingHolder

public BindingHolder(java.lang.String uri,
                     boolean dflt,
                     BindingOrganizer dir)
Constructor. TODO: add a way of handling pregenerated bindings, so that namespaces can be properly tracked?

Parameters:
uri - (null if no-namespace binding)
dflt - namespace is default for elements flag
dir - directory managing this holder
Method Detail

getNamespace

public java.lang.String getNamespace()
Get namespace URI associated with this binding.

Returns:
namespace (null if no-namespace)

getPrefix

public java.lang.String getPrefix()
Get namespace prefix for this binding.

Returns:
prefix (null if not specified)

setPrefix

void setPrefix(java.lang.String prefix)
Set namespace prefix for this binding. Method used by the binding organizer code to configure binding.

Parameters:
prefix - (null if not specified)

getElementDefaultNamespace

public java.lang.String getElementDefaultNamespace()
Get default namespace URI for elements defined in this binding.

Returns:
namespace (null if no-namespace)

getBinding

public BindingElement getBinding()
Get the binding element.

Returns:
binding

setBinding

public void setBinding(BindingElement bind)
Set the binding element. This method is provided so that the generated binding element can be replaced by one which has been read in from a file after being written.

Parameters:
bind -

addFormat

public void addFormat(FormatElement format)
Add a format definition to the binding. In actual generation, formats may be moved to a root binding definition.

Parameters:
format -

addNamespaceUsage

public void addNamespaceUsage(java.lang.String uri)
Add usage of namespace for an element or attribute name in binding.

Parameters:
uri - referenced namespace URI (null if no-namespace)

addTypeNameReference

public void addTypeNameReference(java.lang.String uri,
                                 java.lang.Object obj)
Add reference from this binding to a type name defined in the same or another binding.

Parameters:
uri - namespace URI for type name
obj - object associated with referenced binding

checkModifiable

private void checkModifiable()
Internal check method to verify that the binding is still modifiable.


getFileName

public java.lang.String getFileName()
Get the file name to be used for this file.

Returns:
name (null if not set)

setFileName

public void setFileName(java.lang.String name)
Set the file name to be used for this file.

Parameters:
name -

addMapping

public void addMapping(MappingElementBase mapping)
Add a mapping definition to the binding.

Parameters:
mapping -

getMappingCount

public int getMappingCount()
Get the number of mapping definitions present in this binding.

Returns:
count

iterateMappings

public java.util.Iterator iterateMappings()
Get the number of mapping definitions present in this binding.

Returns:
count

getRequiredBinding

public BindingHolder getRequiredBinding(java.lang.Object obj)
Get the binding associated with a particular control object.

Parameters:
obj - object associated with binding (can be namespace URI, if only one binding per namespace)
Returns:
binding holder

getReferencedNamespaces

java.util.Set getReferencedNamespaces()
Get a set of all the namespace URIs referenced by a qualified name in this binding. Method used by the binding organizer code to configure binding.

Returns:
live namespace list

getUsedNamespaces

java.util.Set getUsedNamespaces()
Get a set of all the namespace URIs used by element or attributes names in this binding. Method used by the binding organizer code to configure binding.

Returns:
live namespace list

forcePullUpNamespaces

void forcePullUpNamespaces()
Force namespaces to be pulled up to the root binding. Method used by the binding organizer code to configure binding.


isPullUpNamespaces

boolean isPullUpNamespaces()
Check if used namespaces need to be pulled up to the root binding. Method used by the binding organizer code to configure binding.

Returns:
pull up flag

isNamespaceElementDefault

boolean isNamespaceElementDefault()
Check if the namespace associated with this binding should be used as the default for definitions in the binding. Method used by the binding organizer code to configure binding.

Returns:
pull up flag

isBindingNamespaceUsed

boolean isBindingNamespaceUsed()
Check if the namespace associated with this binding is actually used by any element or attribute definitions in the binding. Method used by the binding organizer code to configure binding.

Returns:
pull up flag

finish

void finish(java.util.Collection formats,
            java.util.Collection includes,
            java.util.Set outernss,
            java.util.Map nsdfltpref,
            java.util.Map nsfrcdpref)
Finishes building the binding. Method used by the binding organizer code to configure binding.

Parameters:
formats - format elements to be used in binding
includes - include elements to be used in binding
outernss - namespaces inherited by this binding
nsdfltpref - map from namespace URI to default prefix when used in a namespace declaration within the binding (null values for namespace used as the default)
nsfrcdpref - map from namespace URI to prefix when used in a binding namespace definition (prefix must be non-null and non-empty)


Project Web Site