scheu 02/04/10 11:49:40
Modified: java/src/javax/xml/rpc/namespace QName.java
java/src/org/apache/axis/message PrefixedQName.java
Log:
Changed QName to final, intern'd NamespaceURI and LocalPart.
Changed PrefixedQName so that it no longer extends QName.
Revision Changes Path
1.12 +31 -37 xml-axis/java/src/javax/xml/rpc/namespace/QName.java
Index: QName.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/javax/xml/rpc/namespace/QName.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- QName.java 2 Apr 2002 22:05:18 -0000 1.11
+++ QName.java 10 Apr 2002 18:49:40 -0000 1.12
@@ -63,15 +63,19 @@
* Upgraded the implementation so that the namespaceURI and localPart are
* always non-null. This simplifies the implementation, increases performance,
* and cleans up NullPointerException problems.
+ *
+ * Upgraded the implemenation to make QName a final class, changed the
+ * namespaceURI and localPart to final (and interned) Strings, changed equals()
+ * to use == comparison on interned Strings.
* @version 0.1
*/
-public class QName {
+public final class QName {
/** Field namespaceURI */
- private String namespaceURI = "";
+ private final String namespaceURI;
/** Field localPart */
- private String localPart = "";
+ private final String localPart;
/**
* Constructor for the QName.
@@ -79,8 +83,7 @@
* @param localPart - Local part of the QName
*/
public QName(String localPart) {
- setNamespaceURI("");
- setLocalPart(localPart);
+ this("", localPart);
}
/**
@@ -90,20 +93,16 @@
* @param localPart - Local part of the QName
*/
public QName(String namespaceURI, String localPart) {
- setNamespaceURI(namespaceURI);
- setLocalPart(localPart);
- }
-
- /**
- * Sets the Namespace URI for this QName
- *
- * @param namespaceURI
- */
- private void setNamespaceURI(String namespaceURI) {
- if (namespaceURI == null)
-// should throw exception, but gotta clean up first throw new
IllegalArgumentException("namespaceURI == null");
- namespaceURI = "";
- this.namespaceURI = namespaceURI;
+ if (namespaceURI == null) {
+ this.namespaceURI = "";
+ } else {
+ this.namespaceURI = namespaceURI.intern();
+ }
+ if (localPart == null) {
+ this.localPart = ""; // This should really be an
IllegalArgumentException
+ } else {
+ this.localPart = localPart.intern();
+ }
}
/**
@@ -112,19 +111,7 @@
* @return namespaceURI
*/
public String getNamespaceURI() {
- return (namespaceURI);
- }
-
- /**
- * Sets the Local part for this QName
- *
- * @param localPart
- */
- private void setLocalPart(String localPart) {
- if (localPart == null)
-// should throw exception, but gotta clean up first throw new
IllegalArgumentException("localPart == null");
- localPart = "";
- this.localPart = localPart;
+ return namespaceURI;
}
/**
@@ -133,7 +120,7 @@
* @return the Local part for this QName.
*/
public String getLocalPart() {
- return (localPart);
+ return localPart;
}
/**
@@ -146,7 +133,7 @@
if (namespaceURI.equals("")) {
return localPart;
} else {
- return namespaceURI + ":" + localPart;
+ return (namespaceURI + ":" + localPart);
}
}
@@ -165,11 +152,18 @@
if (!(p1 instanceof QName)) {
return false;
}
-
- if (namespaceURI.equals(((QName)p1).namespaceURI) &&
- localPart.equals(((QName)p1).localPart)) {
+
+ if (namespaceURI == ((QName)p1).namespaceURI &&
+ localPart == ((QName) p1).localPart) {
return true;
}
+
+ // Since the strings are interned, a direct == of the strings
+ // is all that is needed. Here is the old code.
+ // if (namespaceURI.equals(((QName)p1).namespaceURI) &&
+ // localPart.equals(((QName)p1).localPart)) {
+ // return true;
+ // }
return false;
}
1.2 +22 -5 xml-axis/java/src/org/apache/axis/message/PrefixedQName.java
Index: PrefixedQName.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/PrefixedQName.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PrefixedQName.java 25 Mar 2002 16:12:16 -0000 1.1
+++ PrefixedQName.java 10 Apr 2002 18:49:40 -0000 1.2
@@ -58,27 +58,44 @@
import javax.xml.soap.Name;
import javax.xml.rpc.namespace.QName;
-public class PrefixedQName extends QName implements Name {
+public class PrefixedQName implements Name {
private String prefix;
+ private QName qName;
public PrefixedQName(String uri, String localName, String pre) {
- super(uri, localName);
+ qName = new QName(uri, localName);
prefix = pre;
}
public String getLocalName() {
- return super.getLocalPart();
+ return qName.getLocalPart();
}
public String getQualifiedName() {
- return super.toString();
+ return qName.toString();
}
public String getURI() {
- return super.getNamespaceURI();
+ return qName.getNamespaceURI();
}
public String getPrefix() {
return prefix;
+ }
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof PrefixedQName)) {
+ return false;
+ }
+ if (!qName.equals(((PrefixedQName)obj).qName)) {
+ return false;
+ }
+ if ((prefix == null && ((PrefixedQName) obj).prefix == null) ||
+ prefix.equals(((PrefixedQName)obj).prefix)) {
+ return true;
+ }
+ return false;
}
}