public final class NsInputElementStack extends InputElementStack
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).
| Modifier and Type | Field and Description |
|---|---|
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 |
mConfig, mIdAttrIndex, mReporter, mValidator| Constructor and Description |
|---|
NsInputElementStack(int initialSize,
ReaderConfig cfg) |
| Modifier and Type | Method and Description |
|---|---|
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).
|
addValidator, connectReporter, getAttributeLocalName, getAttributeNamespace, getAttributePrefix, getAttributeType, getAttributeValue, getAttributeValue, getBaseUri, getIdAttributeIndex, getNotationAttributeIndex, getValidationLocation, getXmlVersion, isNotationDeclared, isUnparsedEntityDeclared, normalizeXmlIdAttr, reallyValidating, reportProblem, stopValidatingAgainst, stopValidatingAgainst, validateAgainst, validateTextprotected 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
public NsInputElementStack(int initialSize,
ReaderConfig cfg)
protected void setAutomaticDTDValidator(XMLValidator validator, NsDefaultProvider nsDefs)
InputElementStacksetAutomaticDTDValidator in class InputElementStackpublic final void push(java.lang.String prefix,
java.lang.String localName)
InputElementStackpush in class InputElementStackpublic final void push(java.lang.String fullName)
InputElementStackpush in class InputElementStackpublic int pop()
throws javax.xml.stream.XMLStreamException
pop in class InputElementStackjavax.xml.stream.XMLStreamExceptionpublic int resolveAndValidateElement()
throws javax.xml.stream.XMLStreamException
resolveAndValidateElement in class InputElementStackjavax.xml.stream.XMLStreamExceptionpublic final boolean isNamespaceAware()
isNamespaceAware in class InputElementStackpublic final int getDepth()
getDepth in class InputElementStackpublic final AttributeCollector getAttrCollector()
InputElementStackBasicStreamReader, to retrieve the
attribute collector it needs for some direct access.getAttrCollector in class InputElementStackpublic final BaseNsContext createNonTransientNsContext(javax.xml.stream.Location loc)
createNonTransientNsContext in class InputElementStackpublic final java.lang.String getNamespaceURI(java.lang.String prefix)
ValidationContextgetNamespaceURI in interface javax.xml.namespace.NamespaceContextgetNamespaceURI in interface ValidationContextgetNamespaceURI in class InputElementStackpublic final java.lang.String getPrefix(java.lang.String nsURI)
getPrefix in interface javax.xml.namespace.NamespaceContextgetPrefix in class InputElementStackpublic final java.util.Iterator getPrefixes(java.lang.String nsURI)
getPrefixes in interface javax.xml.namespace.NamespaceContextgetPrefixes in class InputElementStackpublic 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 AttributeInfogetAttributeCount in interface ValidationContextgetAttributeCount in class InputElementStackpublic final int findAttributeIndex(java.lang.String nsURI,
java.lang.String localName)
findAttributeIndex in interface AttributeInfofindAttributeIndex in interface ValidationContextfindAttributeIndex in class InputElementStackpublic final javax.xml.namespace.QName getCurrentElementName()
ValidationContextgetCurrentElementName in interface ValidationContextgetCurrentElementName in class InputElementStackpublic int addDefaultAttribute(java.lang.String localName,
java.lang.String uri,
java.lang.String prefix,
java.lang.String value)
InputElementStackaddDefaultAttribute in interface ValidationContextaddDefaultAttribute in class InputElementStackpublic boolean isPrefixLocallyDeclared(java.lang.String internedPrefix)
isPrefixLocallyDeclared in class InputElementStackpublic void addNsBinding(java.lang.String prefix,
java.lang.String uri)
addNsBinding in class InputElementStackpublic final boolean isEmpty()
isEmpty in class InputElementStackpublic final java.lang.String getDefaultNsURI()
getDefaultNsURI in class InputElementStackpublic final java.lang.String getNsURI()
getNsURI in class InputElementStackpublic final java.lang.String getPrefix()
getPrefix in class InputElementStackpublic final java.lang.String getLocalName()
getLocalName in class InputElementStackpublic final boolean matches(java.lang.String prefix,
java.lang.String localName)
matches in class InputElementStackpublic final java.lang.String getTopElementDesc()
getTopElementDesc in class InputElementStackpublic final int getTotalNsCount()
getTotalNsCount in class InputElementStackpublic final int getCurrentNsCount()
getCurrentNsCount in class InputElementStackpublic final java.lang.String getLocalNsPrefix(int index)
getLocalNsPrefix in class InputElementStackpublic final java.lang.String getLocalNsURI(int index)
getLocalNsURI in class InputElementStack