Index: jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/name/NameFactoryImpl.java
===================================================================
--- jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/name/NameFactoryImpl.java	(revision 656626)
+++ jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/name/NameFactoryImpl.java	(working copy)
@@ -74,12 +74,6 @@
      */
     private static class NameImpl implements Name {
 
-        /** The memorized hash code of this qualified name. */
-        private transient int hash;
-
-        /** The memorized string representation of this qualified name. */
-        private transient String string;
-
         /** The internalized namespace URI of this qualified name. */
         private final String namespaceURI;
 
@@ -87,12 +81,8 @@
         private final String localName;
 
         private NameImpl(String namespaceURI, String localName) {
-            // internalize namespaceURI to improve performance of comparisons.
-            this.namespaceURI = namespaceURI.intern();
-            // localName is not internalized in order not to risk huge perm
-            // space for large repositories
+            this.namespaceURI = namespaceURI;
             this.localName = localName;
-            hash = 0;
         }
 
         //-----------------------------------------------------------< Name >---
@@ -122,11 +112,7 @@
          * @see Object#toString()
          */
         public String toString() {
-            // Name is immutable, we can store the string representation
-            if (string == null) {
-                string = '{' + namespaceURI + '}' + localName;
-            }
-            return string;
+            return '{' + namespaceURI + '}' + localName;
         }
 
         /**
@@ -142,37 +128,27 @@
         public boolean equals(Object obj) {
             if (this == obj) {
                 return true;
-            }
-            if (obj instanceof NameImpl) {
-                NameImpl other = (NameImpl) obj;
-                // we can use == operator for namespaceURI since it is internalized
-                return namespaceURI == other.namespaceURI && localName.equals(other.localName);
-            }
-            // some other Name implementation
-            if (obj instanceof Name) {
+            } else if (obj instanceof Name) {
                 Name other = (Name) obj;
-                return namespaceURI.equals(other.getNamespaceURI()) && localName.equals(other.getLocalName());
+                return namespaceURI.equals(other.getNamespaceURI())
+                    && localName.equals(other.getLocalName());
+            } else {
+                return false;
             }
-            return false;
         }
 
         /**
          * Returns the hash code of this qualified name. The hash code is
          * computed from the namespace URI and local part of the qualified
-         * name and memorized for better performance.
+         * name.
          *
          * @return hash code
          * @see Object#hashCode()
          */
         public int hashCode() {
-            // Name is immutable, we can store the computed hash code value
-            int h = hash;
-            if (h == 0) {
-                h = 17;
-                h = 37 * h + namespaceURI.hashCode();
-                h = 37 * h + localName.hashCode();
-                hash = h;
-            }
+            int h = 17;
+            h = 37 * h + namespaceURI.hashCode();
+            h = 37 * h + localName.hashCode();
             return h;
         }
 
