Package org.jibx.binding.model
Class BindingHolder
- java.lang.Object
-
- 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
Fields Modifier and Type Field Description 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
Constructors Constructor Description BindingHolder(java.lang.String uri, boolean dflt, BindingOrganizer dir)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.
-
-
-
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 flagdir
- 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 nameobj
- 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 bindingincludes
- include elements to be used in bindingouternss
- namespaces inherited by this bindingnsdfltpref
- 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)
-
-