|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ctc.wstx.sr.InputElementStack
com.ctc.wstx.sr.NsInputElementStack
public final class NsInputElementStack
Sub-class of InputElementStack
used when operating in
namespace-aware mode.
Implementation note: this class reuses NamespaceContext
instances, so that consequtive accesses just return the same instance,
as long as nothing in bindings change. As a result, only those instances
that explicitly add new bindings create distinct non-shareable context
instances. Although it would also be possible to share underlying String
array to further improve object sharing, it seems like marginal gain
with more complexity: as such the current simple scheme should work
just fine (and is measure to be very close to optimal for most common
namespace-heavey document types like Soap messages).
Field Summary | |
---|---|
protected NsAttributeCollector |
mAttrCollector
|
protected java.lang.String[] |
mElements
Array that contains path of open elements from root; for each there are 4 Strings; prefix, localname, URI, and default name space URI. |
protected java.lang.String |
mLastLocalName
|
protected javax.xml.namespace.QName |
mLastName
|
protected BaseNsContext |
mLastNsContext
Last potentially shareable NamespaceContext created by this stack. |
protected java.lang.String |
mLastNsURI
|
protected java.lang.String |
mLastPrefix
|
protected boolean |
mMayHaveNsDefaults
|
protected StringVector |
mNamespaces
Vector that contains all currently active namespaces; one String for prefix, another for matching URI. |
protected int[] |
mNsCounts
Array that contains namespace offsets for each element; that is, index of first 'local' name space entry, entry declared for current element. |
protected NsDefaultProvider |
mNsDefaultProvider
Object that will need to be consulted about namespace bindings, since it has some knowledge about default namespace declarations (has default attribute value expansion). |
protected int |
mSize
Number of Strings in mElements that are valid (ie depth
multiplied by 4) |
protected static InternCache |
sInternCache
|
Fields inherited from class com.ctc.wstx.sr.InputElementStack |
---|
mConfig, mIdAttrIndex, mReporter, mValidator |
Constructor Summary | |
---|---|
NsInputElementStack(int initialSize,
ReaderConfig cfg)
|
Method Summary | |
---|---|
int |
addDefaultAttribute(java.lang.String localName,
java.lang.String uri,
java.lang.String prefix,
java.lang.String value)
Method called by actual validator instances when attributes with default values have no explicit values for the element; if so, default value needs to be added as if it was parsed from the element. |
void |
addNsBinding(java.lang.String prefix,
java.lang.String uri)
Callback method called by the namespace default provider. |
BaseNsContext |
createNonTransientNsContext(javax.xml.stream.Location loc)
Method called to construct a non-transient NamespaceContext instance; generally needed when creating events to return from event-based iterators. |
int |
findAttributeIndex(java.lang.String nsURI,
java.lang.String localName)
|
AttributeCollector |
getAttrCollector()
Method called by BasicStreamReader , to retrieve the
attribute collector it needs for some direct access. |
int |
getAttributeCount()
This method returns number of attributes accessible from within currently active start element. |
javax.xml.namespace.QName |
getCurrentElementName()
Method that can be used to access name information of the innermost (top) element in the element stack. |
int |
getCurrentNsCount()
|
java.lang.String |
getDefaultNsURI()
|
int |
getDepth()
|
java.lang.String |
getLocalName()
|
java.lang.String |
getLocalNsPrefix(int index)
|
java.lang.String |
getLocalNsURI(int index)
|
java.lang.String |
getNamespaceURI(java.lang.String prefix)
Method that can be called by the validator to resolve a namespace prefix of the currently active top-level element. |
java.lang.String |
getNsURI()
|
java.lang.String |
getPrefix()
|
java.lang.String |
getPrefix(java.lang.String nsURI)
|
java.util.Iterator |
getPrefixes(java.lang.String nsURI)
|
java.lang.String |
getTopElementDesc()
|
int |
getTotalNsCount()
|
boolean |
isEmpty()
|
boolean |
isNamespaceAware()
|
boolean |
isPrefixLocallyDeclared(java.lang.String internedPrefix)
|
boolean |
matches(java.lang.String prefix,
java.lang.String localName)
|
int |
pop()
Method called by the stream reader when encountering an end tag. |
void |
push(java.lang.String fullName)
Method called by the stream reader to add new (start) element into the stack in non-namespace mode; called when a start element is encountered during parsing, but only in non-namespace mode. |
void |
push(java.lang.String prefix,
java.lang.String localName)
Method called by the stream reader to add new (start) element into the stack in namespace-aware mode; called when a start element is encountered during parsing, but only in ns-aware mode. |
int |
resolveAndValidateElement()
Method called to update information about top of the stack, with attribute information passed in. |
protected void |
setAutomaticDTDValidator(XMLValidator validator,
NsDefaultProvider nsDefs)
Method called to connect the automatically handled DTD validator (one detected from DOCTYPE, loaded and completely handled by the stream reader without application calling validation methods). |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final InternCache sInternCache
protected final NsAttributeCollector mAttrCollector
protected NsDefaultProvider mNsDefaultProvider
protected final StringVector mNamespaces
protected java.lang.String[] mElements
protected int mSize
mElements
that are valid (ie depth
multiplied by 4)
protected int[] mNsCounts
mCurrNsCount - mNsCounts[mSize-1]
protected boolean mMayHaveNsDefaults
protected java.lang.String mLastLocalName
protected java.lang.String mLastPrefix
protected java.lang.String mLastNsURI
protected javax.xml.namespace.QName mLastName
protected BaseNsContext mLastNsContext
Constructor Detail |
---|
public NsInputElementStack(int initialSize, ReaderConfig cfg)
Method Detail |
---|
protected void setAutomaticDTDValidator(XMLValidator validator, NsDefaultProvider nsDefs)
InputElementStack
setAutomaticDTDValidator
in class InputElementStack
public final void push(java.lang.String prefix, java.lang.String localName)
InputElementStack
push
in class InputElementStack
public final void push(java.lang.String fullName)
InputElementStack
push
in class InputElementStack
public int pop() throws javax.xml.stream.XMLStreamException
pop
in class InputElementStack
javax.xml.stream.XMLStreamException
public int resolveAndValidateElement() throws javax.xml.stream.XMLStreamException
resolveAndValidateElement
in class InputElementStack
javax.xml.stream.XMLStreamException
public final boolean isNamespaceAware()
isNamespaceAware
in class InputElementStack
public final int getDepth()
getDepth
in class InputElementStack
public final AttributeCollector getAttrCollector()
InputElementStack
BasicStreamReader
, to retrieve the
attribute collector it needs for some direct access.
getAttrCollector
in class InputElementStack
public final BaseNsContext createNonTransientNsContext(javax.xml.stream.Location loc)
createNonTransientNsContext
in class InputElementStack
public final java.lang.String getNamespaceURI(java.lang.String prefix)
ValidationContext
getNamespaceURI
in interface javax.xml.namespace.NamespaceContext
getNamespaceURI
in interface ValidationContext
getNamespaceURI
in class InputElementStack
public final java.lang.String getPrefix(java.lang.String nsURI)
getPrefix
in interface javax.xml.namespace.NamespaceContext
getPrefix
in class InputElementStack
public final java.util.Iterator getPrefixes(java.lang.String nsURI)
getPrefixes
in interface javax.xml.namespace.NamespaceContext
getPrefixes
in class InputElementStack
public final int getAttributeCount()
ValidationContext
Note: this method is only guaranteed to be callable during execution
of XMLValidator
methods
XMLValidator.validateElementStart(java.lang.String, java.lang.String, java.lang.String)
,
XMLValidator.validateAttribute(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
and
XMLValidator.validateElementAndAttributes()
. At other times
implementations may choose to allow it to be called (for example,
with information regarding last start element processed), to throw
a IllegalArgumentException
, or to return 0 to indicate no
attribute information is available.
Also note that whether defaulted attributes (attributes for which values are only available via attribute defaulting) are accessible depends on exact time when this method is called, and in general can not be assumed to function reliably.
getAttributeCount
in interface AttributeInfo
getAttributeCount
in interface ValidationContext
getAttributeCount
in class InputElementStack
public final int findAttributeIndex(java.lang.String nsURI, java.lang.String localName)
findAttributeIndex
in interface AttributeInfo
findAttributeIndex
in interface ValidationContext
findAttributeIndex
in class InputElementStack
public final javax.xml.namespace.QName getCurrentElementName()
ValidationContext
getCurrentElementName
in interface ValidationContext
getCurrentElementName
in class InputElementStack
public int addDefaultAttribute(java.lang.String localName, java.lang.String uri, java.lang.String prefix, java.lang.String value)
InputElementStack
addDefaultAttribute
in interface ValidationContext
addDefaultAttribute
in class InputElementStack
public boolean isPrefixLocallyDeclared(java.lang.String internedPrefix)
isPrefixLocallyDeclared
in class InputElementStack
public void addNsBinding(java.lang.String prefix, java.lang.String uri)
addNsBinding
in class InputElementStack
public final boolean isEmpty()
isEmpty
in class InputElementStack
public final java.lang.String getDefaultNsURI()
getDefaultNsURI
in class InputElementStack
public final java.lang.String getNsURI()
getNsURI
in class InputElementStack
public final java.lang.String getPrefix()
getPrefix
in class InputElementStack
public final java.lang.String getLocalName()
getLocalName
in class InputElementStack
public final boolean matches(java.lang.String prefix, java.lang.String localName)
matches
in class InputElementStack
public final java.lang.String getTopElementDesc()
getTopElementDesc
in class InputElementStack
public final int getTotalNsCount()
getTotalNsCount
in class InputElementStack
public final int getCurrentNsCount()
getCurrentNsCount
in class InputElementStack
public final java.lang.String getLocalNsPrefix(int index)
getLocalNsPrefix
in class InputElementStack
public final java.lang.String getLocalNsURI(int index)
getLocalNsURI
in class InputElementStack
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |