Javolution 6.0.0 java
QName.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2007 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.xml;
10 
11 import java.io.ObjectStreamException;
12 import java.lang.CharSequence;
13 
17 import javolution.util.FastMap;
19 
37 public final class QName implements XMLSerializable, Immutable<QName>, CharSequence {
38 
42  private transient final CharArray _localName;
43 
47  private transient final CharArray _namespaceURI;
48 
52  private final String _toString;
53 
59 
68  private QName(String namespaceURI, String localName, String toString) {
69  _namespaceURI = (namespaceURI == null) ? null : new CharArray(
70  namespaceURI);
71  _localName = new CharArray(localName);
73  }
74 
82  public static QName valueOf(CharSequence name) {
83  QName qName = (QName) FULL_NAME_TO_QNAME.get(name);
84  return (qName != null) ? qName : QName.createNoNamespace(name
85  .toString());
86  }
87 
88  private static QName createNoNamespace(String name) {
89  String localName = name;
90  String namespaceURI = null;
91  if (name.length() > 0 && name.charAt(0) == '{') { // Namespace URI.
92  int index = name.lastIndexOf('}');
93  localName = name.substring(index + 1);
94  namespaceURI = name.substring(1, index);
95  }
96  QName qName = new QName(namespaceURI, localName, name);
97  synchronized (FULL_NAME_TO_QNAME) {
98  QName tmp = (QName) FULL_NAME_TO_QNAME.putIfAbsent(name, qName);
99  return tmp == null ? qName : tmp;
100  }
101  }
102 
109  public static QName valueOf(String name) {
110  QName qName = (QName) FULL_NAME_TO_QNAME.get(name);
111  return (qName != null) ? qName : QName.createNoNamespace(name);
112  }
113 
122  public static QName valueOf(CharSequence namespaceURI,
123  CharSequence localName) {
124  if (namespaceURI == null)
125  return QName.valueOf(localName);
126  TextBuilder tmp = new TextBuilder();
127  tmp.append('{');
128  tmp.append(namespaceURI);
129  tmp.append('}');
130  tmp.append(localName);
131  return QName.valueOf(tmp);
132  }
133 
140  public CharSequence getLocalName() {
141  return _localName;
142  }
143 
150  public CharSequence getNamespaceURI() {
151  return _namespaceURI;
152  }
153 
160  public boolean equals(Object obj) {
161  return this == obj;
162  }
163 
169  public String toString() {
170  return _toString;
171  }
172 
180  public int hashCode() {
181  return _toString.hashCode();
182  }
183 
192  public char charAt(int index) {
193  return _toString.charAt(index);
194  }
195 
202  public int length() {
203  return _toString.length();
204  }
205 
217  public CharSequence subSequence(int start, int end) {
218  return _toString.substring(start, end);
219  }
220 
221  //Maintains unicity.
222  private Object readResolve() throws ObjectStreamException {
223  return QName.valueOf(_toString);
224  }
225 
226  private static final long serialVersionUID = -6126031630693748647L;
227 
228  @Override
229  public QName value() {
230  return this;
231  }
232 
233 }
javolution.xml.QName.FULL_NAME_TO_QNAME
static final FastMap< CharSequence, QName > FULL_NAME_TO_QNAME
Definition: QName.java:57
javolution.text.CharArray
Definition: CharArray.java:36
javolution
javolution.util.FastMap
Definition: FastMap.java:98
javolution.xml.QName.QName
QName(String namespaceURI, String localName, String toString)
Definition: QName.java:68
javolution.text.TextBuilder.append
final TextBuilder append(char c)
Definition: TextBuilder.java:202
javolution.xml.QName._namespaceURI
transient final CharArray _namespaceURI
Definition: QName.java:47
javolution.text.TextBuilder
Definition: TextBuilder.java:29
javolution.xml.XMLSerializable
Definition: XMLSerializable.java:43
javolution.xml.QName.getLocalName
CharSequence getLocalName()
Definition: QName.java:140
javolution.util.function.Equalities.LEXICAL
static final Equality< CharSequence > LEXICAL
Definition: Equalities.java:57
javolution.xml.QName.valueOf
static QName valueOf(CharSequence name)
Definition: QName.java:82
javolution.xml.QName.charAt
char charAt(int index)
Definition: QName.java:192
javolution.xml.QName.subSequence
CharSequence subSequence(int start, int end)
Definition: QName.java:217
javolution.xml.QName.createNoNamespace
static QName createNoNamespace(String name)
Definition: QName.java:88
javolution.xml.QName.valueOf
static QName valueOf(CharSequence namespaceURI, CharSequence localName)
Definition: QName.java:122
javolution.xml.QName._localName
transient final CharArray _localName
Definition: QName.java:42
javolution.lang
Definition: Configurable.java:9
javolution.util.function.Equalities
Definition: Equalities.java:20
javolution.text
Definition: CharArray.java:9
javolution.xml.QName.equals
boolean equals(Object obj)
Definition: QName.java:160
javolution.xml.QName.length
int length()
Definition: QName.java:202
javolution.xml.QName.readResolve
Object readResolve()
Definition: QName.java:222
javolution.xml.QName._toString
final String _toString
Definition: QName.java:52
javolution.xml.QName.value
QName value()
Definition: QName.java:229
javolution.util.function
Definition: Consumer.java:9
javolution.xml.QName
Definition: QName.java:37
javolution.xml.QName.valueOf
static QName valueOf(String name)
Definition: QName.java:109
javolution.xml.QName.getNamespaceURI
CharSequence getNamespaceURI()
Definition: QName.java:150
javolution.xml.QName.hashCode
int hashCode()
Definition: QName.java:180
javolution.lang.Immutable
Definition: Immutable.java:38
javolution.util
Definition: FastBitSet.java:9
javolution.xml.QName.serialVersionUID
static final long serialVersionUID
Definition: QName.java:226
javolution.xml.QName.toString
String toString()
Definition: QName.java:169