Javolution 6.0.0 java
javolution.xml.internal.stream.NamespacesImpl Class Reference
Inheritance diagram for javolution.xml.internal.stream.NamespacesImpl:
[legend]
Collaboration diagram for javolution.xml.internal.stream.NamespacesImpl:
[legend]

Public Member Functions

 NamespacesImpl ()
 
CharArray getNamespaceURI (CharSequence prefix)
 
CharArray getPrefix (CharSequence uri)
 
Iterator< CharArraygetPrefixes (CharSequence namespaceURI)
 
void reset ()
 

Package Functions

CharArray getNamespaceURINullAllowed (CharSequence prefix)
 
CharArray getPrefix (CharSequence uri, int count)
 
void setPrefix (CharArray prefix, CharArray uri)
 
void setPrefix (final CharSequence prefix, CharSequence uri, boolean isWritten)
 
void pop ()
 
void push ()
 

Package Attributes

final CharArray _nullNsURI = new CharArray("")
 
final CharArray _defaultNsPrefix = new CharArray("")
 
final CharArray _xml = new CharArray("xml")
 
final CharArray _xmlURI
 
final CharArray _xmlns = new CharArray("xmlns")
 
final CharArray _xmlnsURI = new CharArray("http://www.w3.org/2000/xmlns/")
 
CharArray[] _prefixes = new CharArray[16]
 
CharArray[] _namespaces = new CharArray[_prefixes.length]
 
boolean[] _prefixesWritten = new boolean[_prefixes.length]
 
int[] _namespacesCount = new int[16]
 
CharArray _defaultNamespace = _nullNsURI
 
int _defaultNamespaceIndex
 

Static Package Attributes

static final int NBR_PREDEFINED_NAMESPACES = 3
 

Private Member Functions

void searchDefaultNamespace ()
 
void resizeNamespacesCount ()
 
void resizePrefixStack ()
 

Private Attributes

int _nesting = 0
 
CharArray[] _prefixesTmp = new CharArray[_prefixes.length]
 
CharArray[] _namespacesTmp = new CharArray[_prefixes.length]
 

Detailed Description

This class represents the namespaces stack while parsing.

Author
Jean-Marie Dautelle
Version
3.2, April 2, 2005

Definition at line 22 of file NamespacesImpl.java.

Constructor & Destructor Documentation

◆ NamespacesImpl()

Member Function Documentation

◆ getNamespaceURI()

CharArray javolution.xml.internal.stream.NamespacesImpl.getNamespaceURI ( CharSequence  prefix)

Returns the namespace URI bound to a prefix in the current scope or null if the prefix is unbound.

Parameters
prefixprefix to look up
Returns
the namespace URI.
Exceptions
IllegalArgumentExceptionif prefix is null

Implements javolution.xml.stream.NamespaceContext.

Definition at line 95 of file NamespacesImpl.java.

95  {
96  if (prefix == null)
97  throw new IllegalArgumentException("null prefix not allowed");
98  return getNamespaceURINullAllowed(prefix);
99  }

References javolution.xml.internal.stream.NamespacesImpl.getNamespaceURINullAllowed().

Referenced by javolution.xml.internal.stream.AttributesImpl.getIndex(), javolution.xml.internal.stream.XMLStreamReaderImpl.getNamespaceURI(), and javolution.xml.internal.stream.AttributesImpl.getURI().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getNamespaceURINullAllowed()

CharArray javolution.xml.internal.stream.NamespacesImpl.getNamespaceURINullAllowed ( CharSequence  prefix)
package

Definition at line 101 of file NamespacesImpl.java.

101  {
102  if ((prefix == null) || (prefix.length() == 0))
103  return _defaultNamespace;
104  final int count = _namespacesCount[_nesting];
105  for (int i = count; --i >= 0;) {
106  if (_prefixes[i].equals(prefix))
107  return _namespaces[i];
108  }
109  return null; // Not bound.
110  }

References javolution.xml.internal.stream.NamespacesImpl._defaultNamespace, javolution.xml.internal.stream.NamespacesImpl._namespaces, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, and javolution.xml.internal.stream.NamespacesImpl._prefixes.

Referenced by javolution.xml.internal.stream.XMLStreamReaderImpl.getAttributeNamespace(), javolution.xml.internal.stream.NamespacesImpl.getNamespaceURI(), and javolution.xml.internal.stream.XMLStreamReaderImpl.getNamespaceURI().

Here is the caller graph for this function:

◆ getPrefix() [1/2]

CharArray javolution.xml.internal.stream.NamespacesImpl.getPrefix ( CharSequence  namespaceURI)

Returns the prefix bound to the namespace URI in the current scope or null if the namespace URI is unbound.

Parameters
namespaceURIURI of the namespace to lookup.
Returns
the prefix bound to the namespace URI.
Exceptions
IllegalArgumentExceptionif namespaceURI is null

Implements javolution.xml.stream.NamespaceContext.

Definition at line 113 of file NamespacesImpl.java.

113  {
114  if (uri == null)
115  throw new IllegalArgumentException("null namespace URI not allowed");
117  uri, _namespacesCount[_nesting]);
118  }

References javolution.xml.internal.stream.NamespacesImpl._defaultNamespace, javolution.xml.internal.stream.NamespacesImpl._defaultNsPrefix, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, and javolution.text.CharArray.equals().

Referenced by javolution.xml.internal.stream.XMLStreamWriterImpl.getPrefix(), javolution.xml.internal.stream.XMLStreamWriterImpl.getRepairedPrefix(), and javolution.xml.internal.stream.XMLStreamWriterImpl.writeNamespaces().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getPrefix() [2/2]

CharArray javolution.xml.internal.stream.NamespacesImpl.getPrefix ( CharSequence  uri,
int  count 
)
package

Definition at line 120 of file NamespacesImpl.java.

120  {
121  for (int i = count; --i >= 0;) {
122  CharArray prefix = _prefixes[i];
123  CharArray namespace = _namespaces[i];
124  if (namespace.equals(uri)) { // Find matching uri.
125  // Checks that the prefix has not been overwriten after being set.
126  boolean isPrefixOverwritten = false;
127  for (int j = i + 1; j < count; j++) {
128  if (prefix.equals(_prefixes[j])) {
129  isPrefixOverwritten = true;
130  break;
131  }
132  }
133  if (!isPrefixOverwritten)
134  return prefix;
135  }
136  }
137  return null; // Not bound.
138  }

References javolution.xml.internal.stream.NamespacesImpl._namespaces, javolution.xml.internal.stream.NamespacesImpl._prefixes, and javolution.text.CharArray.equals().

Here is the call graph for this function:

◆ getPrefixes()

Iterator<CharArray> javolution.xml.internal.stream.NamespacesImpl.getPrefixes ( CharSequence  namespaceURI)

Returns all prefixes bound to a namespace URI in the current scope (including predefined prefixes).

Parameters
namespaceURIURI of Namespace to lookup
Returns
an Iterator over CharArray prefixes.
Exceptions
IllegalArgumentExceptionif namespaceURI is null

Implements javolution.xml.stream.NamespaceContext.

Definition at line 141 of file NamespacesImpl.java.

141  {
142  FastTable<CharArray> prefixes = new FastTable<CharArray>();
143  for (int i = _namespacesCount[_nesting]; --i >= 0;) {
144  if (_namespaces[i].equals(namespaceURI)) {
145  prefixes.add(_prefixes[i]);
146  }
147  }
148  return prefixes.iterator();
149  }

References javolution.xml.internal.stream.NamespacesImpl._namespaces, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, javolution.xml.internal.stream.NamespacesImpl._prefixes, javolution.util.FastTable< E >.add(), and javolution.util.FastCollection< E >.iterator().

Here is the call graph for this function:

◆ pop()

void javolution.xml.internal.stream.NamespacesImpl.pop ( )
package

Definition at line 202 of file NamespacesImpl.java.

202  {
205  }
206  }

References javolution.xml.internal.stream.NamespacesImpl._defaultNamespaceIndex, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, and javolution.xml.internal.stream.NamespacesImpl.searchDefaultNamespace().

Referenced by javolution.xml.internal.stream.XMLStreamWriterImpl.closeOpenTag(), javolution.xml.internal.stream.XMLStreamReaderImpl.next(), and javolution.xml.internal.stream.XMLStreamWriterImpl.writeEndElement().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ push()

void javolution.xml.internal.stream.NamespacesImpl.push ( )
package

Definition at line 219 of file NamespacesImpl.java.

219  {
220  _nesting++;
221  if (_nesting >= _namespacesCount.length) {
223  }
225  }

References javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, and javolution.xml.internal.stream.NamespacesImpl.resizeNamespacesCount().

Referenced by javolution.xml.internal.stream.XMLStreamReaderImpl.next(), and javolution.xml.internal.stream.XMLStreamWriterImpl.writeNewElement().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset()

◆ resizeNamespacesCount()

void javolution.xml.internal.stream.NamespacesImpl.resizeNamespacesCount ( )
private

Definition at line 234 of file NamespacesImpl.java.

234  {
235  final int oldLength = _namespacesCount.length;
236  final int newLength = oldLength * 2;
237 
238  // Resizes namespaces counts.
239  int[] tmp = new int[newLength];
240  System.arraycopy(_namespacesCount, 0, tmp, 0, oldLength);
241  _namespacesCount = tmp;
242  }

References javolution.xml.internal.stream.NamespacesImpl._namespacesCount.

Referenced by javolution.xml.internal.stream.NamespacesImpl.push().

Here is the caller graph for this function:

◆ resizePrefixStack()

void javolution.xml.internal.stream.NamespacesImpl.resizePrefixStack ( )
private

Definition at line 245 of file NamespacesImpl.java.

245  {
246  final int oldLength = _prefixes.length;
247  final int newLength = oldLength * 2;
248 
249  // Resizes prefixes.
250  CharArray[] tmp0 = new CharArray[newLength];
251  System.arraycopy(_prefixes, 0, tmp0, 0, oldLength);
252  _prefixes = tmp0;
253 
254  // Resizes namespaces uri.
255  CharArray[] tmp1 = new CharArray[newLength];
256  System.arraycopy(_namespaces, 0, tmp1, 0, oldLength);
257  _namespaces = tmp1;
258 
259  // Resizes prefix sets.
260  boolean[] tmp2 = new boolean[newLength];
261  System.arraycopy(_prefixesWritten, 0, tmp2, 0, oldLength);
262  _prefixesWritten = tmp2;
263 
264  // Resizes temporary prefix (CharSequence to CharArray conversion).
265  CharArray[] tmp3 = new CharArray[newLength];
266  System.arraycopy(_prefixesTmp, 0, tmp3, 0, oldLength);
267  _prefixesTmp = tmp3;
268 
269  // Resizes temporary namespaces (CharSequence to CharArray conversion).
270  CharArray[] tmp4 = new CharArray[newLength];
271  System.arraycopy(_namespacesTmp, 0, tmp4, 0, oldLength);
272  _namespacesTmp = tmp4;
273 
274  }

References javolution.xml.internal.stream.NamespacesImpl._namespaces, javolution.xml.internal.stream.NamespacesImpl._namespacesTmp, javolution.xml.internal.stream.NamespacesImpl._prefixes, javolution.xml.internal.stream.NamespacesImpl._prefixesTmp, javolution.xml.internal.stream.NamespacesImpl._prefixesWritten, and javolution.text.CharArray.length().

Referenced by javolution.xml.internal.stream.NamespacesImpl.setPrefix().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ searchDefaultNamespace()

void javolution.xml.internal.stream.NamespacesImpl.searchDefaultNamespace ( )
private

Definition at line 208 of file NamespacesImpl.java.

208  {
209  int count = _namespacesCount[_nesting];
210  for (int i = count; --i >= 0;) {
211  if (_prefixes[i].length() == 0) {
213  return;
214  }
215  }
216  throw new Error("Cannot find default namespace");
217  }

References javolution.xml.internal.stream.NamespacesImpl._defaultNamespaceIndex, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, and javolution.xml.internal.stream.NamespacesImpl._prefixes.

Referenced by javolution.xml.internal.stream.NamespacesImpl.pop().

Here is the caller graph for this function:

◆ setPrefix() [1/2]

void javolution.xml.internal.stream.NamespacesImpl.setPrefix ( CharArray  prefix,
CharArray  uri 
)
package

Definition at line 152 of file NamespacesImpl.java.

152  {
153  int index = _namespacesCount[_nesting];
154  _prefixes[index] = prefix;
155  _namespaces[index] = uri;
156  if (prefix.length() == 0) { // The default namespace is set.
157  _defaultNamespaceIndex = index;
158  _defaultNamespace = uri;
159  }
162  }

References javolution.xml.internal.stream.NamespacesImpl._defaultNamespace, javolution.xml.internal.stream.NamespacesImpl._defaultNamespaceIndex, javolution.xml.internal.stream.NamespacesImpl._namespaces, javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._nesting, javolution.xml.internal.stream.NamespacesImpl._prefixes, javolution.text.CharArray.length(), and javolution.xml.internal.stream.NamespacesImpl.resizePrefixStack().

Referenced by javolution.xml.internal.stream.XMLStreamWriterImpl.getRepairedPrefix(), javolution.xml.internal.stream.XMLStreamReaderImpl.processAttribute(), javolution.xml.internal.stream.NamespacesImpl.setPrefix(), javolution.xml.internal.stream.XMLStreamWriterImpl.setPrefix(), and javolution.xml.internal.stream.XMLStreamWriterImpl.writeNamespace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setPrefix() [2/2]

void javolution.xml.internal.stream.NamespacesImpl.setPrefix ( final CharSequence  prefix,
CharSequence  uri,
boolean  isWritten 
)
package

Definition at line 166 of file NamespacesImpl.java.

167  {
168  final int index = _namespacesCount[_nesting];
169  _prefixesWritten[index] = isWritten;
170  final int prefixLength = prefix.length();
171  CharArray prefixTmp = _prefixesTmp[index];
172  if ((prefixTmp == null) || (prefixTmp.array().length < prefixLength)) {
173  _prefixesTmp[index] = new CharArray().setArray(
174  new char[prefixLength + 32], 0, 0);
175  prefixTmp = _prefixesTmp[index];
176  }
177  for (int i = 0; i < prefixLength; i++) {
178  prefixTmp.array()[i] = prefix.charAt(i);
179  }
180  prefixTmp.setArray(prefixTmp.array(), 0, prefixLength);
181 
182  final int uriLength = uri.length();
183  CharArray namespaceTmp = _namespacesTmp[index];
184  if ((namespaceTmp == null) || (namespaceTmp.array().length < uriLength)) {
185  _namespacesTmp[index] = new CharArray().setArray(
186  new char[uriLength + 32], 0, 0);
187  namespaceTmp = _namespacesTmp[index];
188  }
189  for (int i = 0; i < uriLength; i++) {
190  namespaceTmp.array()[i] = uri.charAt(i);
191  }
192  namespaceTmp.setArray(namespaceTmp.array(), 0, uriLength);
193 
194  // Sets the prefix using CharArray instances.
195  setPrefix(prefixTmp, namespaceTmp);
196  }

References javolution.xml.internal.stream.NamespacesImpl._namespacesCount, javolution.xml.internal.stream.NamespacesImpl._namespacesTmp, javolution.xml.internal.stream.NamespacesImpl._nesting, javolution.xml.internal.stream.NamespacesImpl._prefixesTmp, javolution.xml.internal.stream.NamespacesImpl._prefixesWritten, javolution.text.CharArray.array(), javolution.text.CharArray.length(), javolution.text.CharArray.setArray(), and javolution.xml.internal.stream.NamespacesImpl.setPrefix().

Here is the call graph for this function:

Member Data Documentation

◆ _defaultNamespace

◆ _defaultNamespaceIndex

int javolution.xml.internal.stream.NamespacesImpl._defaultNamespaceIndex
package

◆ _defaultNsPrefix

◆ _namespaces

◆ _namespacesCount

◆ _namespacesTmp

CharArray [] javolution.xml.internal.stream.NamespacesImpl._namespacesTmp = new CharArray[_prefixes.length]
private

◆ _nesting

◆ _nullNsURI

final CharArray javolution.xml.internal.stream.NamespacesImpl._nullNsURI = new CharArray("")
package

◆ _prefixes

◆ _prefixesTmp

CharArray [] javolution.xml.internal.stream.NamespacesImpl._prefixesTmp = new CharArray[_prefixes.length]
private

◆ _prefixesWritten

boolean [] javolution.xml.internal.stream.NamespacesImpl._prefixesWritten = new boolean[_prefixes.length]
package

◆ _xml

final CharArray javolution.xml.internal.stream.NamespacesImpl._xml = new CharArray("xml")
package

◆ _xmlns

◆ _xmlnsURI

final CharArray javolution.xml.internal.stream.NamespacesImpl._xmlnsURI = new CharArray("http://www.w3.org/2000/xmlns/")
package

◆ _xmlURI

final CharArray javolution.xml.internal.stream.NamespacesImpl._xmlURI
package
Initial value:
= new CharArray(
"http://www.w3.org/XML/1998/namespace")

Definition at line 39 of file NamespacesImpl.java.

Referenced by javolution.xml.internal.stream.NamespacesImpl.NamespacesImpl().

◆ NBR_PREDEFINED_NAMESPACES

final int javolution.xml.internal.stream.NamespacesImpl.NBR_PREDEFINED_NAMESPACES = 3
staticpackage

The documentation for this class was generated from the following file:
javolution.xml.internal.stream.NamespacesImpl.setPrefix
void setPrefix(CharArray prefix, CharArray uri)
Definition: NamespacesImpl.java:152
javolution.xml.internal.stream.NamespacesImpl.getPrefix
CharArray getPrefix(CharSequence uri)
Definition: NamespacesImpl.java:113
javolution.xml.internal.stream.NamespacesImpl._defaultNsPrefix
final CharArray _defaultNsPrefix
Definition: NamespacesImpl.java:35
javolution.xml.internal.stream.NamespacesImpl._xmlnsURI
final CharArray _xmlnsURI
Definition: NamespacesImpl.java:44
javolution.xml.internal.stream.NamespacesImpl._defaultNamespaceIndex
int _defaultNamespaceIndex
Definition: NamespacesImpl.java:79
javolution.text.CharArray.equals
boolean equals(Object that)
Definition: CharArray.java:204
javolution.xml.internal.stream.NamespacesImpl._prefixesTmp
CharArray[] _prefixesTmp
Definition: NamespacesImpl.java:198
javolution.xml.internal.stream.NamespacesImpl._prefixes
CharArray[] _prefixes
Definition: NamespacesImpl.java:54
javolution.xml.internal.stream.NamespacesImpl._namespacesTmp
CharArray[] _namespacesTmp
Definition: NamespacesImpl.java:200
javolution.xml.internal.stream.NamespacesImpl.NBR_PREDEFINED_NAMESPACES
static final int NBR_PREDEFINED_NAMESPACES
Definition: NamespacesImpl.java:27
javolution.xml.internal.stream.NamespacesImpl._namespacesCount
int[] _namespacesCount
Definition: NamespacesImpl.java:69
javolution.xml.internal.stream.NamespacesImpl._xml
final CharArray _xml
Definition: NamespacesImpl.java:37
javolution.xml.internal.stream.NamespacesImpl._nesting
int _nesting
Definition: NamespacesImpl.java:49
javolution.text.CharArray.length
int length()
Definition: CharArray.java:95
javolution.xml.internal.stream.NamespacesImpl.searchDefaultNamespace
void searchDefaultNamespace()
Definition: NamespacesImpl.java:208
javolution.text.CharArray.array
char[] array()
Definition: CharArray.java:86
javolution.xml.internal.stream.NamespacesImpl._namespaces
CharArray[] _namespaces
Definition: NamespacesImpl.java:59
javolution.xml.internal.stream.NamespacesImpl._nullNsURI
final CharArray _nullNsURI
Definition: NamespacesImpl.java:33
javolution.xml.internal.stream.NamespacesImpl._xmlns
final CharArray _xmlns
Definition: NamespacesImpl.java:42
javolution.text.CharArray.setArray
CharArray setArray(char[] array, int offset, int length)
Definition: CharArray.java:116
javolution.xml.internal.stream.NamespacesImpl._xmlURI
final CharArray _xmlURI
Definition: NamespacesImpl.java:39
javolution.xml.internal.stream.NamespacesImpl.getNamespaceURINullAllowed
CharArray getNamespaceURINullAllowed(CharSequence prefix)
Definition: NamespacesImpl.java:101
javolution.xml.internal.stream.NamespacesImpl._defaultNamespace
CharArray _defaultNamespace
Definition: NamespacesImpl.java:74
javolution.xml.internal.stream.NamespacesImpl._prefixesWritten
boolean[] _prefixesWritten
Definition: NamespacesImpl.java:64
javolution.xml.internal.stream.NamespacesImpl.resizeNamespacesCount
void resizeNamespacesCount()
Definition: NamespacesImpl.java:234
javolution.xml.internal.stream.NamespacesImpl.resizePrefixStack
void resizePrefixStack()
Definition: NamespacesImpl.java:245