|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ctc.wstx.sr.AttributeCollector
public final class AttributeCollector
Shared base class that defines API stream reader uses to communicate
with the attribute collector implementation, independent of whether it's
operating in namespace-aware or non-namespace modes.
Collector class is used to build up attribute lists; for the most part
will just hold references to few specialized TextBuilder
s that
are used to create efficient semi-shared value Strings.
Field Summary | |
---|---|
protected static int |
EXP_ATTR_COUNT
Expected typical maximum number of attributes for any element; chosen to minimize need to resize, while trying not to waste space. |
protected static int |
EXP_NS_COUNT
|
protected static int |
LONG_ATTR_LIST_LEN
Threshold value that indicates minimum length for lists instances that need a Map structure, for fast attribute access by fully-qualified name. |
protected int |
mAttrCount
Actual number of attributes collected, including attributes added via default values. |
protected int |
mAttrHashSize
Size of hash area in mAttrMap ; generally at least 20%
more than number of attributes (mAttrCount ). |
protected com.ctc.wstx.sr.Attribute[] |
mAttributes
Array of attributes collected for this element. |
protected int[] |
mAttrMap
Encoding of a data structure that contains mapping from attribute names to attribute index in main attribute name arrays. |
protected int |
mAttrSpillEnd
Pointer to int slot right after last spill entr, in mAttrMap array. |
protected boolean |
mDefaultNsDeclared
Flag to indicate whether the default namespace has already been declared for the current element. |
protected com.ctc.wstx.sr.Attribute[] |
mNamespaces
Array of namespace declaration attributes collected for this element; not used in non-namespace-aware mode |
protected int |
mNonDefCount
Number of attribute values actually parsed, not including ones created via default value expansion. |
protected int |
mNsCount
Number of valid namespace declarations in mNamespaces . |
protected TextBuilder |
mValueBuilder
TextBuilder into which values of all attributes are appended to, including default valued ones (defaults are added after explicit ones). |
protected int |
mXmlIdAttrIndex
Index of "xml:id" attribute, if one exists for the current element; XMLID_IX_NONE if none. |
protected static InternCache |
sInternCache
|
protected static int |
XMLID_IX_DISABLED
This value is used to indicate that we shouldn't keep track of index of xml:id attribute -- generally done when Xml:id support is disabled |
protected static int |
XMLID_IX_NONE
|
Constructor Summary | |
---|---|
protected |
AttributeCollector(ReaderConfig cfg,
boolean nsAware)
|
Method Summary | |
---|---|
int |
addDefaultAttribute(String localName,
String uri,
String prefix,
String value)
Method called by validator to insert an attribute that has a default value and wasn't yet included in collector's attribute set. |
protected void |
allocBuffers()
Method called to initialize buffers that need not be immediately initialized |
ElemAttrs |
buildAttrOb()
Method needed by event creating code, to build a non-transient attribute container, to use with XMLEvent objects (specifically implementation of StartElement event). |
byte[] |
decodeBinary(int index,
org.codehaus.stax2.typed.Base64Variant v,
org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec,
InputProblemReporter rep)
|
void |
decodeValue(int index,
org.codehaus.stax2.typed.TypedValueDecoder tvd)
Method called to decode the whole attribute value as a single typed value. |
int |
decodeValues(int index,
org.codehaus.stax2.typed.TypedArrayDecoder tad,
InputProblemReporter rep)
Method called to decode the attribute value that consists of zero or more space-separated tokens. |
int |
findIndex(String localName)
|
int |
findIndex(String nsURI,
String localName)
|
TextBuilder |
getAttrBuilder(String attrPrefix,
String attrLocalName)
Low-level accessor method that attribute validation code may call for certain types of attributes; generally only for id and idref/idrefs attributes. |
int |
getCount()
|
TextBuilder |
getDefaultNsBuilder()
|
String |
getLocalName(int index)
|
TextBuilder |
getNsBuilder(String prefix)
|
protected int |
getNsCount()
|
String |
getNsPrefix(int index)
|
String |
getNsURI(int index)
|
String |
getPrefix(int index)
|
QName |
getQName(int index)
|
protected char[] |
getSharedValueBuffer()
|
int |
getSpecifiedCount()
|
String |
getURI(int index)
|
String |
getValue(int index)
Note: the main reason this method is defined at this level, and made final, is performance. |
String |
getValue(String nsURI,
String localName)
|
protected int |
getValueStartOffset(int index)
Method for getting start pointer within shared value buffer for given attribute. |
int |
getXmlIdAttrIndex()
|
boolean |
hasDefaultNs()
|
boolean |
isSpecified(int index)
|
void |
normalizeSpacesInValue(int index)
Method that can be called to force space normalization (remove leading/trailing spaces, replace non-spaces white space with spaces, collapse spaces to one) on specified attribute. |
void |
reset()
Method called to allow reusing of collector, usually right before starting collecting attributes for a new start tag. |
protected com.ctc.wstx.sr.Attribute |
resolveNamespaceDecl(int index,
boolean internURI)
Method called to resolve and initialize specified collected namespace declaration |
int |
resolveNamespaces(InputProblemReporter rep,
StringVector ns)
Method called to resolve namespace URIs from attribute prefixes. |
void |
setNormalizedValue(int index,
String value)
Low-level mutator method that attribute validation code may call for certain types of attributes, when it wants to handle the whole validation and normalization process by itself. |
protected void |
throwDupAttr(InputProblemReporter rep,
int index)
Method that can be used to get the specified attribute value, by getting it written using Writer passed in. |
protected void |
throwIndex(int index)
|
protected void |
validateAttribute(int index,
org.codehaus.stax2.validation.XMLValidator vld)
|
void |
writeAttribute(int index,
XmlWriter xw)
Method that basically serializes the specified (read-in) attribute using Writers provided. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final int LONG_ATTR_LIST_LEN
protected static final int EXP_ATTR_COUNT
protected static final int EXP_NS_COUNT
protected static final int XMLID_IX_DISABLED
protected static final int XMLID_IX_NONE
protected static final InternCache sInternCache
protected com.ctc.wstx.sr.Attribute[] mAttributes
protected int mAttrCount
protected int mNonDefCount
mAttrCount
.
protected com.ctc.wstx.sr.Attribute[] mNamespaces
protected int mNsCount
mNamespaces
.
protected boolean mDefaultNsDeclared
protected int mXmlIdAttrIndex
XMLID_IX_NONE
if none.
protected TextBuilder mValueBuilder
protected int[] mAttrMap
Data structure contains two separate areas; main hash area (with
size mAttrHashSize
), and remaining spillover area
that follows hash area up until (but not including)
mAttrSpillEnd
index.
Main hash area only contains indexes (index+1; 0 signifying empty slot)
to actual attributes; spillover area has both hash and index for
any spilled entry. Spilled entries are simply stored in order
added, and need to be searched using linear search. In case of both
primary hash hits and spills, eventual comparison with the local
name needs to be done with actual name array.
protected int mAttrHashSize
mAttrMap
; generally at least 20%
more than number of attributes (mAttrCount
).
protected int mAttrSpillEnd
mAttrMap
array.
Constructor Detail |
---|
protected AttributeCollector(ReaderConfig cfg, boolean nsAware)
Method Detail |
---|
public void reset()
Note: public only so that it can be called by unit tests.
public void normalizeSpacesInValue(int index)
InputElementStack
to force
normalization of Xml:id attribute
protected int getNsCount()
public boolean hasDefaultNs()
public final int getCount()
public int getSpecifiedCount()
public String getNsPrefix(int index)
public String getNsURI(int index)
public String getPrefix(int index)
public String getLocalName(int index)
public String getURI(int index)
public QName getQName(int index)
public final String getValue(int index)
Note: the main reason this method is defined at this level, and made final, is performance. JIT may be able to fully inline this method, even when reference is via this base class. This is important since this is likely to be the most often called method of the collector instances.
public String getValue(String nsURI, String localName)
public int findIndex(String localName)
public int findIndex(String nsURI, String localName)
public final boolean isSpecified(int index)
public final int getXmlIdAttrIndex()
public final void decodeValue(int index, org.codehaus.stax2.typed.TypedValueDecoder tvd) throws IllegalArgumentException
IllegalArgumentException
public final int decodeValues(int index, org.codehaus.stax2.typed.TypedArrayDecoder tad, InputProblemReporter rep) throws XMLStreamException
XMLStreamException
public final byte[] decodeBinary(int index, org.codehaus.stax2.typed.Base64Variant v, org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec, InputProblemReporter rep) throws XMLStreamException
XMLStreamException
protected int getValueStartOffset(int index)
protected char[] getSharedValueBuffer()
protected com.ctc.wstx.sr.Attribute resolveNamespaceDecl(int index, boolean internURI)
public ElemAttrs buildAttrOb()
protected void validateAttribute(int index, org.codehaus.stax2.validation.XMLValidator vld) throws XMLStreamException
XMLStreamException
public final TextBuilder getAttrBuilder(String attrPrefix, String attrLocalName)
public int addDefaultAttribute(String localName, String uri, String prefix, String value)
public final void setNormalizedValue(int index, String value)
public TextBuilder getDefaultNsBuilder()
public TextBuilder getNsBuilder(String prefix)
public int resolveNamespaces(InputProblemReporter rep, StringVector ns) throws XMLStreamException
Note: public only so that it can be called by unit tests.
rep
- Reporter to use for reporting well-formedness problemsns
- Namespace prefix/URI mappings active for this element
XMLStreamException
protected void throwIndex(int index)
public void writeAttribute(int index, XmlWriter xw) throws IOException, XMLStreamException
IOException
XMLStreamException
protected final void allocBuffers()
protected void throwDupAttr(InputProblemReporter rep, int index) throws XMLStreamException
XMLStreamException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |