You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/10/05 10:25:28 UTC

svn commit: r1004568 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: NamespaceRegistryImpl.java persistence/util/HashMapIndex.java persistence/util/HashMapIndex.java.orig

Author: jukka
Date: Tue Oct  5 08:25:28 2010
New Revision: 1004568

URL: http://svn.apache.org/viewvc?rev=1004568&view=rev
Log:
JCR-2760: Use hash codes instead of sequence numbers for string indexes

Added:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java.orig
      - copied, changed from r1004263, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java
Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NamespaceRegistryImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NamespaceRegistryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NamespaceRegistryImpl.java?rev=1004568&r1=1004567&r2=1004568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NamespaceRegistryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NamespaceRegistryImpl.java Tue Oct  5 08:25:28 2010
@@ -91,8 +91,6 @@ public class NamespaceRegistryImpl imple
     private HashMap<Integer, String> indexToURI = new HashMap<Integer, String>();
     private HashMap<String, Integer> uriToIndex = new HashMap<String, Integer>();
 
-    private int lastIndex;
-
     private final FileSystem nsRegStore;
 
     /**
@@ -143,10 +141,11 @@ public class NamespaceRegistryImpl imple
         uriToPrefix.put(uri, prefix);
         if (!uriToIndex.containsKey(uri)) {
             if (idx == null) {
-                idx = ++lastIndex;
-            } else {
-                if (idx.intValue() > lastIndex) {
-                    lastIndex = idx.intValue();
+                // Need to use only 24 bits, since that's what
+                // the BundleBinding class stores in bundles
+                idx = uri.hashCode() & 0x00ffffff;
+                while (indexToURI.containsKey(idx)) {
+                    idx = (idx + 1) & 0x00ffffff;
                 }
             }
             indexToURI.put(idx, uri);
@@ -339,7 +338,7 @@ public class NamespaceRegistryImpl imple
         if (idx == null) {
             throw new IllegalArgumentException("Namespace not registered: " + uri);
         }
-        return idx.intValue();
+        return idx;
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java?rev=1004568&r1=1004567&r2=1004568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java Tue Oct  5 08:25:28 2010
@@ -66,12 +66,17 @@ public class HashMapIndex implements Str
             idx = stringToIndex.get(nsUri);
         }
         if (idx == null) {
-            idx = Integer.valueOf(indexToString.size());
+            // Need to use only 24 bits, since that's what
+            // the BundleBinding class stores in bundles
+            idx = nsUri.hashCode() & 0x00ffffff;
+            while (indexToString.containsKey(idx)) {
+                idx = (idx + 1) & 0x00ffffff;
+            }
             stringToIndex.put(nsUri, idx);
             indexToString.put(idx, nsUri);
             save();
         }
-        return idx.intValue();
+        return idx;
     }
 
     /**

Copied: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java.orig (from r1004263, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java.orig?p2=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java.orig&p1=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/HashMapIndex.java&r1=1004263&r2=1004568&rev=1004568&view=diff
==============================================================================
    (empty)