org.codehaus.staxmate.out
Class SMLocalNamespace

java.lang.Object
  extended by org.codehaus.staxmate.out.SMNamespace
      extended by org.codehaus.staxmate.out.SMLocalNamespace

public final class SMLocalNamespace
extends SMNamespace

Namespace that is local to a specific output context (SMOutputContext), think of it as the document or sub-tree StaxMate will output using a stream writer).


Field Summary
protected  SMOutputContext mContext
          Output context in which this namespace is to be used (scope of which it is bound)
protected  java.lang.String mCurrPrefix
          Prefix this namespace is currently bound to, if any.
protected  boolean mIsPermanent
           
protected  boolean mPreferDefaultNs
          Flag that indicates whether this namespaces prefers to be bound as the default namespace (for elements), or not.
protected  java.lang.String mPrefPrefix
          Prefererred (or suggested) prefix for the namespace; StaxMate will try to use this prefix if possible when binding namespaces and also passes it to the underlying stream writer.
protected  java.lang.String mPrevPrefix
          Last prefix this name was bound to, if any.
 
Fields inherited from class org.codehaus.staxmate.out.SMNamespace
mURI
 
Constructor Summary
protected SMLocalNamespace(SMOutputContext ctxt, java.lang.String uri, boolean preferDefaultNs, java.lang.String prefPrefix)
           
 
Method Summary
protected  void bindAs(java.lang.String prefix)
          The only trick with regard to binding/unbinding of local namespaces is that "re-binding" is not allowed (by StaxMate design; XML would allow it).
protected  void bindPermanentlyAs(java.lang.String prefix)
          Method used to permanently bind this (local) namespace to a prefix.
 java.lang.String getBoundPrefix()
           
 java.lang.String getLastBoundPrefix()
           
 java.lang.String getPreferredPrefix()
           
protected  boolean isValidIn(SMOutputContext ctxt)
          Method used to verify that the namespace is actually valid within the specified output context.
 boolean prefersDefaultNs()
           
 void prefersDefaultNs(boolean state)
           
 void setPreferredPrefix(java.lang.String prefPrefix)
          Method that can be called to associate a "preferred" prefix; prefix that this namespace should be bound to instead of some automatically generated one (unless that prefix is already bound to another URI).
protected  void unbind()
          Method called to indicate that the namespace is no longer bound to its current prefix within the current output context.
 
Methods inherited from class org.codehaus.staxmate.out.SMNamespace
getURI
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mContext

protected final SMOutputContext mContext
Output context in which this namespace is to be used (scope of which it is bound)


mPrefPrefix

protected java.lang.String mPrefPrefix
Prefererred (or suggested) prefix for the namespace; StaxMate will try to use this prefix if possible when binding namespaces and also passes it to the underlying stream writer.

This value will be automatically set when namespace is created, and there is also a way to explicitly set it. Finally, it will also be set if a dynamic prefix is created for the namespace


mCurrPrefix

protected java.lang.String mCurrPrefix
Prefix this namespace is currently bound to, if any.


mPrevPrefix

protected java.lang.String mPrevPrefix
Last prefix this name was bound to, if any.


mPreferDefaultNs

protected boolean mPreferDefaultNs
Flag that indicates whether this namespaces prefers to be bound as the default namespace (for elements), or not. Output context will use this preference in some situations to determine how to best bind this namespace to a prefix or as the default namespace.


mIsPermanent

protected boolean mIsPermanent
Constructor Detail

SMLocalNamespace

protected SMLocalNamespace(SMOutputContext ctxt,
                           java.lang.String uri,
                           boolean preferDefaultNs,
                           java.lang.String prefPrefix)
Parameters:
ctxt - Output context that "owns" this namespace (within which namespace will be bound when output)
uri - URI that defines identity of the namespace
prefPrefix - Prefererred (or suggested) prefix for the namespace; StaxMate will try to use this prefix if possible when binding namespaces and also passes it to the underlying stream writer.
preferDefaultNs - Whether this namespaces prefers to be bound as the default namespace when used for elements.
Method Detail

getPreferredPrefix

public java.lang.String getPreferredPrefix()
Specified by:
getPreferredPrefix in class SMNamespace
Returns:
Prefix that the caller application has at some point indicated to be a prefix it'd like to see; StaxMate may try to use it as the prefix to bind if there are no

getBoundPrefix

public java.lang.String getBoundPrefix()
Specified by:
getBoundPrefix in class SMNamespace

getLastBoundPrefix

public java.lang.String getLastBoundPrefix()
Specified by:
getLastBoundPrefix in class SMNamespace

prefersDefaultNs

public boolean prefersDefaultNs()
Specified by:
prefersDefaultNs in class SMNamespace

prefersDefaultNs

public void prefersDefaultNs(boolean state)
Specified by:
prefersDefaultNs in class SMNamespace

setPreferredPrefix

public void setPreferredPrefix(java.lang.String prefPrefix)
Description copied from class: SMNamespace
Method that can be called to associate a "preferred" prefix; prefix that this namespace should be bound to instead of some automatically generated one (unless that prefix is already bound to another URI).

Specified by:
setPreferredPrefix in class SMNamespace

isValidIn

protected boolean isValidIn(SMOutputContext ctxt)
Description copied from class: SMNamespace
Method used to verify that the namespace is actually valid within the specified output context.

Specified by:
isValidIn in class SMNamespace

bindAs

protected void bindAs(java.lang.String prefix)
The only trick with regard to binding/unbinding of local namespaces is that "re-binding" is not allowed (by StaxMate design; XML would allow it). So let's allow transitions to and from null, but not between two non-empty prefixes.

Specified by:
bindAs in class SMNamespace

bindPermanentlyAs

protected void bindPermanentlyAs(java.lang.String prefix)
Description copied from class: SMNamespace
Method used to permanently bind this (local) namespace to a prefix. Generally called if a new "global" binding is found at point where a global instance can not be created. Calling this method will essentially mark a local instace as behaving similar to a global one.

Specified by:
bindPermanentlyAs in class SMNamespace

unbind

protected void unbind()
Description copied from class: SMNamespace
Method called to indicate that the namespace is no longer bound to its current prefix within the current output context. Since default namespace declarations do not cause binding, this method will not be called for default namespaces either.

Specified by:
unbind in class SMNamespace