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;
       }
   }
  
  
  


Reply via email to