org.jibx.util
Class HolderBase

java.lang.Object
  extended by org.jibx.util.HolderBase
Direct Known Subclasses:
SchemaHolder

public abstract class HolderBase
extends java.lang.Object

Base class for external data used in constructing a namespaced file which may reference other files of the same type. This class tracks both the referenced files and the corresponding namespace references, assigning prefixes for the latter as appropriate. The namespace associated with this file is always given the prefix 'tns', while those used for other files get prefixes of the form 'ns1', 'ns2', etc.

Author:
Dennis M. Sosnoski

Field Summary
private  java.lang.String m_fileName
           
private  java.lang.String m_namespace
           
private  java.util.Map m_nsPrefixMap
           
private  java.util.Set m_referenceSet
           
 
Constructor Summary
HolderBase(java.lang.String uri)
          Constructor.
 
Method Summary
protected abstract  void addNamespaceDecl(java.lang.String prefix, java.lang.String uri)
          Subclass hook method to handle adding a namespace declaration.
 void addReference(HolderBase ref)
          Record a reference from this file to another file of the same type.
abstract  void finish()
          Implementation method for subclasses to complete the construction of the file.
 java.lang.String getFileName()
          Get the file name to be used for this file.
 java.lang.String getNamespace()
          Get namespace URI associated with this file.
 java.lang.String getPrefix(java.lang.String uri)
          Get the prefix for a namespace URI.
 java.util.Set getReferences()
          Get the set of references from this file to other files of the same type.
 void setFileName(java.lang.String name)
          Set the file name to be used for this file.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_namespace

private final java.lang.String m_namespace

m_nsPrefixMap

private final java.util.Map m_nsPrefixMap

m_fileName

private java.lang.String m_fileName

m_referenceSet

private java.util.Set m_referenceSet
Constructor Detail

HolderBase

public HolderBase(java.lang.String uri)
Constructor.

Parameters:
uri - (null if no-namespace binding)
Method Detail

getPrefix

public java.lang.String getPrefix(java.lang.String uri)
Get the prefix for a namespace URI. The first time this is called for a particular namespace URI a prefix is assigned and returned. This assumes that the default namespace is always the no-namespace.

Parameters:
uri -
Returns:
prefix

addNamespaceDecl

protected abstract void addNamespaceDecl(java.lang.String prefix,
                                         java.lang.String uri)
Subclass hook method to handle adding a namespace declaration. The implementation of this method needs to set up the namespace declaration for output in the generated XML.

Parameters:
prefix -
uri -

getNamespace

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

Returns:
namespace (null if no-namespace)

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 -

addReference

public void addReference(HolderBase ref)
Record a reference from this file to another file of the same type. This adds the reference to the set of references.

Parameters:
ref -

getReferences

public java.util.Set getReferences()
Get the set of references from this file to other files of the same type.

Returns:
references

finish

public abstract void finish()
Implementation method for subclasses to complete the construction of the file. This includes processing references to other files, as well as any other components of the file which need to be finalized. This method must be called after all references have been added, allowing the subclass to add any necessary structures to the file representation.



Project Web Site