blob: 8f8d22ace5388024cef16c3b549233232003ff12 [file] [log] [blame]
/*
* Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*
* THIS FILE WAS MODIFIED BY SUN MICROSYSTEMS, INC.
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*
* THIS FILE WAS MODIFIED BY SUN MICROSYSTEMS, INC.
*
*/
package com.sun.xml.internal.fastinfoset;
import javax.xml.namespace.QName;
public class QualifiedName {
public final String prefix;
public final String namespaceName;
public final String localName;
public String qName;
public final int index;
public final int prefixIndex;
public final int namespaceNameIndex;
public final int localNameIndex;
public int attributeId;
public int attributeHash;
private QName qNameObject;
public QualifiedName(String prefix, String namespaceName, String localName, String qName) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = qName;
this.index = -1;
this.prefixIndex = 0;
this.namespaceNameIndex = 0;
this.localNameIndex = -1;
}
public QualifiedName(String prefix, String namespaceName, String localName, String qName, int index) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = qName;
this.index = index;
this.prefixIndex = 0;
this.namespaceNameIndex = 0;
this.localNameIndex = -1;
}
public QualifiedName(String prefix, String namespaceName, String localName, String qName, int index,
int prefixIndex, int namespaceNameIndex, int localNameIndex) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = qName;
this.index = index;
this.prefixIndex = prefixIndex + 1;
this.namespaceNameIndex = namespaceNameIndex + 1;
this.localNameIndex = localNameIndex;
}
public QualifiedName(String prefix, String namespaceName, String localName) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = createQNameString(prefix, localName);
this.index = -1;
this.prefixIndex = 0;
this.namespaceNameIndex = 0;
this.localNameIndex = -1;
}
public QualifiedName(String prefix, String namespaceName, String localName,
int prefixIndex, int namespaceNameIndex, int localNameIndex,
char[] charBuffer) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
if (charBuffer != null) {
final int l1 = prefix.length();
final int l2 = localName.length();
final int total = l1 + l2 + 1;
if (total < charBuffer.length) {
prefix.getChars(0, l1, charBuffer, 0);
charBuffer[l1] = ':';
localName.getChars(0, l2, charBuffer, l1 + 1);
this.qName = new String(charBuffer, 0, total);
} else {
this.qName = createQNameString(prefix, localName);
}
} else {
this.qName = this.localName;
}
this.prefixIndex = prefixIndex + 1;
this.namespaceNameIndex = namespaceNameIndex + 1;
this.localNameIndex = localNameIndex;
this.index = -1;
}
public QualifiedName(String prefix, String namespaceName, String localName, int index) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = createQNameString(prefix, localName);
this.index = index;
this.prefixIndex = 0;
this.namespaceNameIndex = 0;
this.localNameIndex = -1;
}
public QualifiedName(String prefix, String namespaceName, String localName, int index,
int prefixIndex, int namespaceNameIndex, int localNameIndex) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = localName;
this.qName = createQNameString(prefix, localName);
this.index = index;
this.prefixIndex = prefixIndex + 1;
this.namespaceNameIndex = namespaceNameIndex + 1;
this.localNameIndex = localNameIndex;
}
// Qualified Name as a Namespace Name
public QualifiedName(String prefix, String namespaceName) {
this.prefix = prefix;
this.namespaceName = namespaceName;
this.localName = "";
this.qName = "";
this.index = -1;
this.prefixIndex = 0;
this.namespaceNameIndex = 0;
this.localNameIndex = -1;
}
public final QName getQName() {
if (qNameObject == null) {
qNameObject = new QName(namespaceName, localName, prefix);
}
return qNameObject;
}
public final String getQNameString() {
if (this.qName != "") {
return this.qName;
}
return this.qName = createQNameString(prefix, localName);
}
public final void createAttributeValues(int size) {
attributeId = localNameIndex | (namespaceNameIndex << 20);
attributeHash = localNameIndex % size;
}
private final String createQNameString(String p, String l) {
if (p != null && p != "") {
final StringBuffer b = new StringBuffer(p);
b.append(':');
b.append(l);
return b.toString();
} else {
return l;
}
}
}