You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2012/03/07 17:30:47 UTC

svn commit: r1298011 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk: ./ model/ store/ store/pm/

Author: stefan
Date: Wed Mar  7 16:30:46 2012
New Revision: 1298011

URL: http://svn.apache.org/viewvc?rev=1298011&view=rev
Log:
refactor String id's in Id instances

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Id.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/Repository.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/AbstractCommit.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesMap.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntry.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Commit.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/MutableCommit.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDelta.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDiffHandler.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeProxy.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredCommit.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/TraversingNodeDiffHandler.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/CopyingGC.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/DefaultRevisionStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionProvider.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/BDbPersistenceManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/FSPersistenceManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/H2PersistenceManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/InMemPersistenceManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/MongoPersistenceManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/PersistenceManager.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java Wed Mar  7 16:30:46 2012
@@ -23,6 +23,7 @@ import org.apache.jackrabbit.mk.json.Jso
 import org.apache.jackrabbit.mk.model.ChildNodeEntry;
 import org.apache.jackrabbit.mk.model.Commit;
 import org.apache.jackrabbit.mk.model.CommitBuilder;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
 import org.apache.jackrabbit.mk.model.TraversingNodeDiffHandler;
@@ -209,8 +210,8 @@ public class MicroKernelImpl implements 
             // maps (key: id of target node, value: path/to/target)
             // for tracking added/removed nodes; this allows us
             // to detect 'move' operations
-            final HashMap<String, String> addedNodes = new HashMap<String, String>();
-            final HashMap<String, String> removedNodes = new HashMap<String, String>();
+            final HashMap<Id, String> addedNodes = new HashMap<Id, String>();
+            final HashMap<Id, String> removedNodes = new HashMap<Id, String>();
             StoredNode node1, node2;
             try {
                 node1 = rep.getNode(fromRevisionId, path);
@@ -361,7 +362,7 @@ public class MicroKernelImpl implements 
                 diffHandler.start(node1, node2, path);
 
                 // finally process moved nodes
-                for (Map.Entry<String, String> entry : addedNodes.entrySet()) {
+                for (Map.Entry<Id, String> entry : addedNodes.entrySet()) {
                     buff.tag('>').
                             // path/to/deleted/node
                             key(removedNodes.get(entry.getKey())).

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/Repository.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/Repository.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/Repository.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/Repository.java Wed Mar  7 16:30:46 2012
@@ -22,6 +22,7 @@ import java.io.File;
 import org.apache.jackrabbit.mk.model.ChildNodeEntry;
 import org.apache.jackrabbit.mk.model.Commit;
 import org.apache.jackrabbit.mk.model.CommitBuilder;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
@@ -134,7 +135,7 @@ public class Repository {
         }
 
         //return root.getNode(path.substring(1), pm);
-        String[] ids = resolvePath(revId, path);
+        Id[] ids = resolvePath(revId, path);
         return rs.getNode(ids[ids.length - 1]);
     }
 
@@ -177,7 +178,7 @@ public class Repository {
      * @throws NotFoundException if either path or revision doesn't exist
      * @throws Exception if another error occurs
      */
-    String[] /* array of node id's */ resolvePath(String revId, String nodePath) throws Exception {
+    Id[] /* array of node id's */ resolvePath(String revId, String nodePath) throws Exception {
         if (!PathUtils.isAbsolute(nodePath)) {
             throw new IllegalArgumentException("illegal path");
         }
@@ -185,10 +186,10 @@ public class Repository {
         Commit commit = rs.getCommit(revId);
 
         if (PathUtils.denotesRoot(nodePath)) {
-            return new String[]{commit.getRootNodeId()};
+            return new Id[]{commit.getRootNodeId()};
         }
         String[] names = PathUtils.split(nodePath);
-        String[] ids = new String[names.length + 1];
+        Id[] ids = new Id[names.length + 1];
 
         // get root node
         ids[0] = commit.getRootNodeId();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/AbstractCommit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/AbstractCommit.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/AbstractCommit.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/AbstractCommit.java Wed Mar  7 16:30:46 2012
@@ -24,7 +24,7 @@ import org.apache.jackrabbit.mk.store.Bi
 public abstract class AbstractCommit implements Commit {
 
     // id of root node associated with this commit
-    protected String rootNodeId;
+    protected Id rootNodeId;
 
     // commit timestamp
     protected long commitTS;
@@ -49,7 +49,7 @@ public abstract class AbstractCommit imp
         return parentId;
     }
 
-    public String getRootNodeId() {
+    public Id getRootNodeId() {
         return rootNodeId;
     }
 
@@ -62,7 +62,7 @@ public abstract class AbstractCommit imp
     }
 
     public void serialize(Binding binding) throws Exception {
-        binding.write("rootNodeId", rootNodeId);
+        binding.write("rootNodeId", rootNodeId.getBytes());
         binding.write("commitTS", commitTS);
         binding.write("msg", msg == null ? "" : msg);
         binding.write("parentId", parentId == null ? "" : parentId);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesMap.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesMap.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesMap.java Wed Mar  7 16:30:46 2012
@@ -20,7 +20,6 @@ import org.apache.jackrabbit.mk.store.Bi
 import org.apache.jackrabbit.mk.util.AbstractFilteringIterator;
 import org.apache.jackrabbit.mk.util.EmptyIterator;
 import org.apache.jackrabbit.mk.util.RangeIterator;
-import org.apache.jackrabbit.mk.util.StringUtils;
 
 import java.util.HashMap;
 import java.util.Iterator;
@@ -230,7 +229,7 @@ public class ChildNodeEntriesMap impleme
                     @Override
                     public Binding.BytesEntry next() {
                         ChildNodeEntry cne = iter.next();
-                        return new Binding.BytesEntry(cne.getName(), StringUtils.convertHexToBytes(cne.getId()));
+                        return new Binding.BytesEntry(cne.getName(), cne.getId().getBytes());
                     }
                     @Override
                     public void remove() {
@@ -245,7 +244,7 @@ public class ChildNodeEntriesMap impleme
         Binding.BytesEntryIterator iter = binding.readBytesMap(":children");
         while (iter.hasNext()) {
             Binding.BytesEntry entry = iter.next();
-            newInstance.add(new ChildNodeEntry(entry.getKey(), StringUtils.convertBytesToHex(entry.getValue())));
+            newInstance.add(new ChildNodeEntry(entry.getKey(), new Id(entry.getValue())));
         }
         return newInstance;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java Wed Mar  7 16:30:46 2012
@@ -515,7 +515,7 @@ public class ChildNodeEntriesTree implem
             if (index[i] instanceof Bucket) {
                 // dirty bucket
                 Bucket bucket = (Bucket) index[i];
-                String id = store.putCNEMap(bucket);
+                Id id = store.putCNEMap(bucket);
                 index[i] = new BucketInfo(id, bucket.getSize());
             }
         }
@@ -527,7 +527,7 @@ public class ChildNodeEntriesTree implem
         return (hash & 0x7FFFFFFF) % index.length;
     }
 
-    protected ChildNodeEntriesMap retrieveBucket(String id) {
+    protected ChildNodeEntriesMap retrieveBucket(Id id) {
         try {
             return revProvider.getCNEMap(id);
         } catch (Exception e) {
@@ -539,6 +539,7 @@ public class ChildNodeEntriesTree implem
     //------------------------------------------------< serialization support >
 
     public void serialize(Binding binding) throws Exception {
+        // TODO use binary instead of string serialization
         binding.write(":count", count);
         binding.writeMap(":index", index.length, new Binding.StringEntryIterator() {
             int pos = -1;
@@ -578,6 +579,7 @@ public class ChildNodeEntriesTree implem
     }
 
     static ChildNodeEntriesTree deserialize(RevisionProvider provider, Binding binding) throws Exception {
+        // TODO use binary instead of string serialization
         ChildNodeEntriesTree newInstance = new ChildNodeEntriesTree(provider);
         newInstance.count = binding.readIntValue(":count");
         Binding.StringEntryIterator iter = binding.readStringMap(":index");
@@ -596,14 +598,14 @@ public class ChildNodeEntriesTree implem
                 int i = value.indexOf(':');
                 String id = value.substring(0, i);
                 String name = value.substring(i + 1);
-                newInstance.index[pos] = new NodeInfo(name, id);
+                newInstance.index[pos] = new NodeInfo(name, Id.fromString(id));
             } else {
                 // "b<id>:<count>"
                 String value = entry.getValue().substring(1);
                 int i = value.indexOf(':');
                 String id = value.substring(0, i);
                 int count = Integer.parseInt(value.substring(i + 1));
-                newInstance.index[pos] = new BucketInfo(id, count);
+                newInstance.index[pos] = new BucketInfo(Id.fromString(id), count);
             }
         }
         return newInstance;
@@ -619,17 +621,17 @@ public class ChildNodeEntriesTree implem
     protected static class BucketInfo implements IndexEntry {
 
         // bucket id
-        private final String id;
+        private final Id id;
 
         // number of bucket entries
         private final int size;
 
-        protected BucketInfo(String id, int size) {
+        protected BucketInfo(Id id, int size) {
             this.id = id;
             this.size = size;
         }
 
-        public String getId() {
+        public Id getId() {
             return id;
         }
 
@@ -679,7 +681,7 @@ public class ChildNodeEntriesTree implem
 
     protected static class NodeInfo extends ChildNodeEntry implements IndexEntry {
 
-        public NodeInfo(String name, String id) {
+        public NodeInfo(String name, Id id) {
             super(name, id);
         }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntry.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntry.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntry.java Wed Mar  7 16:30:46 2012
@@ -22,9 +22,9 @@ package org.apache.jackrabbit.mk.model;
 public class ChildNodeEntry {
 
     private final String name;
-    private final String id;
+    private final Id id;
 
-    public ChildNodeEntry(String name, String id) {
+    public ChildNodeEntry(String name, Id id) {
         this.name = name;
         this.id = id;
     }
@@ -33,7 +33,7 @@ public class ChildNodeEntry {
         return name;
     }
 
-    public String getId() {
+    public Id getId() {
         return id;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Commit.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Commit.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Commit.java Wed Mar  7 16:30:46 2012
@@ -23,7 +23,7 @@ import org.apache.jackrabbit.mk.store.Bi
  */
 public interface Commit {
     
-    String getRootNodeId();
+    Id getRootNodeId();
 
     public String getParentId();
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java Wed Mar  7 16:30:46 2012
@@ -64,7 +64,7 @@ public class CommitBuilder {
         newChild.getProperties().putAll(properties);
 
         // id will be computed on commit
-        modParent.add(new ChildNodeEntry(nodeName, ""));
+        modParent.add(new ChildNodeEntry(nodeName, null));
         String newPath = PathUtils.concat(parentNodePath, nodeName);
         staged.put(newPath, newChild);
         // update change log
@@ -191,7 +191,7 @@ public class CommitBuilder {
             }
         }
 
-        String rootNodeId = persistStagedNodes();
+        Id rootNodeId = persistStagedNodes();
 
         String newRevId;
         store.lockHead();
@@ -283,7 +283,7 @@ public class CommitBuilder {
         }
     }
 
-    String /* new id of root node */ persistStagedNodes() throws Exception {
+    Id /* new id of root node */ persistStagedNodes() throws Exception {
         // sort paths in in depth-descending order
         ArrayList<String> orderedPaths = new ArrayList<String>(staged.keySet());
         Collections.sort(orderedPaths, new Comparator<String>() {
@@ -298,10 +298,10 @@ public class CommitBuilder {
             }
         });
         // iterate over staged entries in depth-descending order
-        String rootNodeId = null;
+        Id rootNodeId = null;
         for (String path : orderedPaths) {
             // persist node
-            String id = store.putNode(staged.get(path));
+            Id id = store.putNode(staged.get(path));
             if (PathUtils.denotesRoot(path)) {
                 rootNodeId = id;
             } else {
@@ -324,7 +324,7 @@ public class CommitBuilder {
      * @return id of merged root node
      * @throws Exception
      */
-    String /* id of merged root node */ mergeTree(StoredNode baseRoot, StoredNode ourRoot, StoredNode theirRoot) throws Exception {
+    Id /* id of merged root node */ mergeTree(StoredNode baseRoot, StoredNode ourRoot, StoredNode theirRoot) throws Exception {
         // as we're going to use the staging area for the merge process,
         // we need to clear it first
         staged.clear();
@@ -349,10 +349,10 @@ public class CommitBuilder {
             mergedNode.getProperties().remove(name);
         }
 
-        for (Map.Entry<String, String> entry : ourChanges.getAddedChildNodes ().entrySet()) {
+        for (Map.Entry<String, Id> entry : ourChanges.getAddedChildNodes ().entrySet()) {
             mergedNode.add(new ChildNodeEntry(entry.getKey(), entry.getValue()));
         }
-        for (Map.Entry<String, String> entry : ourChanges.getChangedChildNodes ().entrySet()) {
+        for (Map.Entry<String, Id> entry : ourChanges.getChangedChildNodes ().entrySet()) {
             mergedNode.add(new ChildNodeEntry(entry.getKey(), entry.getValue()));
         }
         for (String name : ourChanges.getRemovedChildNodes().keySet()) {

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Id.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Id.java?rev=1298011&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Id.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/Id.java Wed Mar  7 16:30:46 2012
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.mk.model;
+
+import org.apache.jackrabbit.mk.util.StringUtils;
+
+import java.util.Arrays;
+
+/**
+ *
+ */
+public class Id {
+
+    private final byte[] raw;
+
+    public Id(byte[] raw) {
+        this.raw = raw;
+    }
+
+    /**
+     * Creates an <code>Id</code> instance from its
+     * string representation as returned by {@link #toString()}.
+     * <p/>
+     * The following condition holds true:
+     * <pre>
+     * Id someId = ...;
+     * assert(Id.fromString(someId.toString()).equals(someId));
+     * </pre>
+     *
+     * @param s a string representation of an <code>Id</code>
+     * @return an <code>Id</code> instance
+     */
+    public static Id fromString(String s) {
+        return new Id(StringUtils.convertHexToBytes(s));
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(raw);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Id) {
+            Id other = (Id) obj;
+            return Arrays.equals(raw, other.raw);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return StringUtils.convertBytesToHex(raw);
+    }
+
+    public byte[] getBytes() {
+        return raw;
+    }
+}

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/MutableCommit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/MutableCommit.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/MutableCommit.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/MutableCommit.java Wed Mar  7 16:30:46 2012
@@ -46,7 +46,7 @@ public class MutableCommit extends Abstr
         this.parentId = parentId;
     }
 
-    public void setRootNodeId(String rootNodeId) {
+    public void setRootNodeId(Id rootNodeId) {
         this.rootNodeId = rootNodeId;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDelta.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDelta.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDelta.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDelta.java Wed Mar  7 16:30:46 2012
@@ -54,9 +54,9 @@ public class NodeDelta implements NodeDi
     Map<String, String> removedProperties = new HashMap<String, String>();
     Map<String, String> changedProperties = new HashMap<String, String>();
 
-    Map<String, String> addedChildNodes = new HashMap<String, String>();
-    Map<String, String> removedChildNodes = new HashMap<String, String>();
-    Map<String, String> changedChildNodes = new HashMap<String, String>();
+    Map<String, Id> addedChildNodes = new HashMap<String, Id>();
+    Map<String, Id> removedChildNodes = new HashMap<String, Id>();
+    Map<String, Id> changedChildNodes = new HashMap<String, Id>();
 
     public NodeDelta(StoredNode node1, StoredNode node2) throws Exception {
         this.node1 = node1;
@@ -77,15 +77,15 @@ public class NodeDelta implements NodeDi
         return changedProperties;
     }
 
-    public Map<String, String> getAddedChildNodes() {
+    public Map<String, Id> getAddedChildNodes() {
         return addedChildNodes;
     }
 
-    public Map<String, String> getRemovedChildNodes() {
+    public Map<String, Id> getRemovedChildNodes() {
         return removedChildNodes;
     }
 
-    public Map<String, String> getChangedChildNodes() {
+    public Map<String, Id> getChangedChildNodes() {
         return changedChildNodes;
     }
 
@@ -103,31 +103,31 @@ public class NodeDelta implements NodeDi
 
         // properties
 
-        Map<String, String> otherAdded = other.getAddedProperties();
+        Map<String, String> otherAddedProps = other.getAddedProperties();
         for (Map.Entry<String, String> added : addedProperties.entrySet()) {
-            String otherValue = otherAdded.get(added.getKey());
+            String otherValue = otherAddedProps.get(added.getKey());
             if (otherValue != null && !added.getValue().equals(otherValue)) {
                 // same property added with conflicting values
                 conflicts.add(new Conflict(ConflictType.PROPERTY_VALUE_CONFLICT, added.getKey()));
             }
         }
 
-        Map<String, String> otherChanged = other.getChangedProperties();
-        Map<String, String> otherRemoved = other.getRemovedProperties();
+        Map<String, String> otherChangedProps = other.getChangedProperties();
+        Map<String, String> otherRemovedProps = other.getRemovedProperties();
         for (Map.Entry<String, String> changed : changedProperties.entrySet()) {
-            String otherValue = otherChanged.get(changed.getKey());
+            String otherValue = otherChangedProps.get(changed.getKey());
             if (otherValue != null && !changed.getValue().equals(otherValue)) {
                 // same property changed with conflicting values
                 conflicts.add(new Conflict(ConflictType.PROPERTY_VALUE_CONFLICT, changed.getKey()));
             }
-            if (otherRemoved.containsKey(changed.getKey())) {
+            if (otherRemovedProps.containsKey(changed.getKey())) {
                 // changed property has been removed
                 conflicts.add(new Conflict(ConflictType.REMOVED_DIRTY_PROPERTY_CONFLICT, changed.getKey()));
             }
         }
 
         for (Map.Entry<String, String> removed : removedProperties.entrySet()) {
-            if (otherChanged.containsKey(removed.getKey())) {
+            if (otherChangedProps.containsKey(removed.getKey())) {
                 // removed property has been changed
                 conflicts.add(new Conflict(ConflictType.REMOVED_DIRTY_PROPERTY_CONFLICT, removed.getKey()));
             }
@@ -135,31 +135,31 @@ public class NodeDelta implements NodeDi
 
         // child node entries
 
-        otherAdded = other.getAddedChildNodes();
-        for (Map.Entry<String, String> added : addedChildNodes.entrySet()) {
-            String otherValue = otherAdded.get(added.getKey());
+        Map<String, Id> otherAddedChildNodes = other.getAddedChildNodes();
+        for (Map.Entry<String, Id> added : addedChildNodes.entrySet()) {
+            Id otherValue = otherAddedChildNodes.get(added.getKey());
             if (otherValue != null && !added.getValue().equals(otherValue)) {
                 // same child node entry added with different target id's
                 conflicts.add(new Conflict(ConflictType.NODE_CONTENT_CONFLICT, added.getKey()));
             }
         }
 
-        otherChanged = other.getChangedChildNodes();
-        otherRemoved = other.getRemovedChildNodes();
-        for (Map.Entry<String, String> changed : changedChildNodes.entrySet()) {
-            String otherValue = otherChanged.get(changed.getKey());
+        Map<String, Id> otherChangedChildNodes = other.getChangedChildNodes();
+        Map<String, Id> otherRemovedChildNodes = other.getRemovedChildNodes();
+        for (Map.Entry<String, Id> changed : changedChildNodes.entrySet()) {
+            Id otherValue = otherChangedChildNodes.get(changed.getKey());
             if (otherValue != null && !changed.getValue().equals(otherValue)) {
                 // same child node entry changed with different target id's
                 conflicts.add(new Conflict(ConflictType.NODE_CONTENT_CONFLICT, changed.getKey()));
             }
-            if (otherRemoved.containsKey(changed.getKey())) {
+            if (otherRemovedChildNodes.containsKey(changed.getKey())) {
                 // changed child node entry has been removed
                 conflicts.add(new Conflict(ConflictType.REMOVED_DIRTY_NODE_CONFLICT, changed.getKey()));
             }
         }
 
-        for (Map.Entry<String, String> removed : removedChildNodes.entrySet()) {
-            if (otherChanged.containsKey(removed.getKey())) {
+        for (Map.Entry<String, Id> removed : removedChildNodes.entrySet()) {
+            if (otherChangedChildNodes.containsKey(removed.getKey())) {
                 // removed child node entry has been changed
                 conflicts.add(new Conflict(ConflictType.REMOVED_DIRTY_NODE_CONFLICT, removed.getKey()));
             }
@@ -190,7 +190,7 @@ public class NodeDelta implements NodeDi
         removedChildNodes.put(deleted.getName(), deleted.getId());
     }
 
-    public void childNodeChanged(ChildNodeEntry changed, String newId) {
+    public void childNodeChanged(ChildNodeEntry changed, Id newId) {
         changedChildNodes.put(changed.getName(), newId);
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDiffHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDiffHandler.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDiffHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeDiffHandler.java Wed Mar  7 16:30:46 2012
@@ -31,5 +31,5 @@ public interface NodeDiffHandler {
 
     void childNodeDeleted(ChildNodeEntry deleted);
 
-    void childNodeChanged(ChildNodeEntry changed, String newId);
+    void childNodeChanged(ChildNodeEntry changed, Id newId);
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeProxy.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeProxy.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeProxy.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/NodeProxy.java Wed Mar  7 16:30:46 2012
@@ -24,10 +24,10 @@ import org.apache.jackrabbit.mk.store.No
  */
 public final class NodeProxy {
 
-    private final String id;
+    private final Id id;
     private final Node node;
 
-    public NodeProxy(String id) {
+    public NodeProxy(Id id) {
         this.id = id;
         this.node = null;
     }
@@ -37,7 +37,7 @@ public final class NodeProxy {
         this.id = null;
     }
 
-    public String getId() {
+    public Id getId() {
         return id;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredCommit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredCommit.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredCommit.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredCommit.java Wed Mar  7 16:30:46 2012
@@ -26,14 +26,14 @@ public class StoredCommit extends Abstra
     private final String id;
 
     public static StoredCommit deserialize(String id, Binding binding) throws Exception {
-        String rootNodeId = binding.readStringValue("rootNodeId");
+        Id rootNodeId = new Id(binding.readBytesValue("rootNodeId"));
         long commitTS = binding.readLongValue("commitTS");
         String msg = binding.readStringValue("msg");
         String parentId = binding.readStringValue("parentId");
         return new StoredCommit(id, "".equals(parentId) ? null : parentId, commitTS, rootNodeId, "".equals(msg) ? null : msg);
     }
 
-    public StoredCommit(String id, String parentId, long commitTS, String rootNodeId, String msg) {
+    public StoredCommit(String id, String parentId, long commitTS, Id rootNodeId, String msg) {
         this.id = id;
         this.parentId = parentId;
         this.commitTS = commitTS;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java Wed Mar  7 16:30:46 2012
@@ -30,9 +30,9 @@ import java.util.Map;
  */
 public class StoredNode extends AbstractNode {
 
-    private final String id;
+    private final Id id;
 
-    public static StoredNode deserialize(String id, RevisionProvider provider, Binding binding) throws Exception {
+    public static StoredNode deserialize(Id id, RevisionProvider provider, Binding binding) throws Exception {
         StoredNode newInstance = new StoredNode(id, provider);
         Binding.StringEntryIterator iter = binding.readStringMap(":props");
         while (iter.hasNext()) {
@@ -48,12 +48,12 @@ public class StoredNode extends Abstract
         return newInstance;
     }
 
-    private StoredNode(String id, RevisionProvider provider) {
+    private StoredNode(Id id, RevisionProvider provider) {
         super(provider);
         this.id = id;
     }
     
-    public StoredNode(String id, RevisionProvider provider, Map<String, String> properties, Iterator<ChildNodeEntry> cneIt) {
+    public StoredNode(Id id, RevisionProvider provider, Map<String, String> properties, Iterator<ChildNodeEntry> cneIt) {
         super(provider);
         this.id = id;
         this.properties.putAll(properties);
@@ -62,12 +62,12 @@ public class StoredNode extends Abstract
         }
     }
 
-    public StoredNode(String id, Node node, RevisionProvider provider) {
+    public StoredNode(Id id, Node node, RevisionProvider provider) {
         super(node, provider);
         this.id = id;
     }
 
-    public String getId() {
+    public Id getId() {
         return id;
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/TraversingNodeDiffHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/TraversingNodeDiffHandler.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/TraversingNodeDiffHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/model/TraversingNodeDiffHandler.java Wed Mar  7 16:30:46 2012
@@ -71,7 +71,7 @@ public abstract class TraversingNodeDiff
     public void childNodeDeleted(ChildNodeEntry deleted) {
     }
 
-    public void childNodeChanged(ChildNodeEntry changed, String newId) {
+    public void childNodeChanged(ChildNodeEntry changed, Id newId) {
         paths.push(PathUtils.concat(getCurrentPath(), changed.getName()));
         try {
             store.getNode(changed.getId()).diff(store.getNode(newId), this);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/CopyingGC.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/CopyingGC.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/CopyingGC.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/CopyingGC.java Wed Mar  7 16:30:46 2012
@@ -22,6 +22,7 @@ import java.util.Iterator;
 
 import org.apache.jackrabbit.mk.model.ChildNode;
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.MutableCommit;
 import org.apache.jackrabbit.mk.model.MutableNode;
 import org.apache.jackrabbit.mk.model.StoredCommit;
@@ -99,8 +100,7 @@ public class CopyingGC implements Revisi
     /**
      * Copy a commit and all the nodes belonging to it, starting at the root node.
      * 
-     * @param from source provider
-     * @param to target store
+     * @param commit commit to be copied
      * @throws Exception if an error occurs
      */
     public void copy(StoredCommit commit) throws Exception {
@@ -117,7 +117,6 @@ public class CopyingGC implements Revisi
     /**
      * Copy a node and all its descendants into a target store
      * @param node source node
-     * @param store target store
      * @throws Exception if an error occurs
      */
     private void copy(StoredNode node) throws Exception {
@@ -142,7 +141,7 @@ public class CopyingGC implements Revisi
         return new StoredNodeAsState(node, this);
     }
 
-    public StoredNode getNode(String id) throws NotFoundException, Exception {
+    public StoredNode getNode(Id id) throws NotFoundException, Exception {
         if (running) {
             try {
                 return rsTo.getNode(id);
@@ -172,7 +171,7 @@ public class CopyingGC implements Revisi
         return rsTo.getCommit(id);
     }
 
-    public ChildNodeEntriesMap getCNEMap(String id) throws NotFoundException,
+    public ChildNodeEntriesMap getCNEMap(Id id) throws NotFoundException,
             Exception {
         
         if (running) {
@@ -206,7 +205,7 @@ public class CopyingGC implements Revisi
         return running ? rsTo.getHeadCommitId() : rsFrom.getHeadCommitId();
     }
 
-    public String putNode(MutableNode node) throws Exception {
+    public Id putNode(MutableNode node) throws Exception {
         return running ? rsTo.putNode(node) : rsFrom.putNode(node);
     }
 
@@ -214,7 +213,7 @@ public class CopyingGC implements Revisi
         return running ? rsTo.putCommit(commit) : rsFrom.putCommit(commit);
     }
 
-    public String putCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id putCNEMap(ChildNodeEntriesMap map) throws Exception {
         return running ? rsTo.putCNEMap(map) : rsFrom.putCNEMap(map);
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/DefaultRevisionStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/DefaultRevisionStore.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/DefaultRevisionStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/DefaultRevisionStore.java Wed Mar  7 16:30:46 2012
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.mk.store;
 import org.apache.jackrabbit.mk.blobs.BlobStore;
 import org.apache.jackrabbit.mk.blobs.FileBlobStore;
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.MutableCommit;
 import org.apache.jackrabbit.mk.model.MutableNode;
 import org.apache.jackrabbit.mk.model.StoredCommit;
@@ -54,14 +55,14 @@ public class DefaultRevisionStore implem
     private BlobStore blobStore;
     private boolean blobStoreNeedsClose;
 
-    private Map<String, Object> cache;
+    private Map<Id, Object> cache;
 
     public void initialize(File homeDir) throws Exception {
         if (initialized) {
             throw new IllegalStateException("already initialized");
         }
 
-        cache = Collections.synchronizedMap(SimpleLRUCache.<String, Object>newInstance(determineInitialCacheSize()));
+        cache = Collections.synchronizedMap(SimpleLRUCache.<Id, Object>newInstance(determineInitialCacheSize()));
 
         pm = new H2PersistenceManager();
         //pm = new InMemPersistenceManager();
@@ -84,7 +85,7 @@ public class DefaultRevisionStore implem
             byte[] rawHeadId = longToBytes(++headCounter);
             headId = StringUtils.convertBytesToHex(rawHeadId);
             
-            String rootNodeId = pm.writeNode(new MutableNode(this));
+            Id rootNodeId = pm.writeNode(new MutableNode(this));
             MutableCommit initialCommit = new MutableCommit();
             initialCommit.setCommitTS(System.currentTimeMillis());
             initialCommit.setRootNodeId(rootNodeId);
@@ -158,7 +159,7 @@ public class DefaultRevisionStore implem
     
     //--------------------------------------------------------< RevisionStore >
 
-    public String putNode(MutableNode node) throws Exception {
+    public Id putNode(MutableNode node) throws Exception {
         verifyInitialized();
 
         PersistHook callback = null;
@@ -167,7 +168,7 @@ public class DefaultRevisionStore implem
             callback.prePersist(this);
         }
 
-        String id = pm.writeNode(node);
+        Id id = pm.writeNode(node);
         
         if (callback != null)  {
             callback.postPersist(this);
@@ -178,7 +179,7 @@ public class DefaultRevisionStore implem
         return id;
     }
 
-    public String putCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id putCNEMap(ChildNodeEntriesMap map) throws Exception {
         verifyInitialized();
 
         PersistHook callback = null;
@@ -187,7 +188,7 @@ public class DefaultRevisionStore implem
             callback.prePersist(this);
         }
 
-       String id = pm.writeCNEMap(map);
+       Id id = pm.writeCNEMap(map);
 
         if (callback != null)  {
             callback.postPersist(this);
@@ -223,7 +224,8 @@ public class DefaultRevisionStore implem
             callback.postPersist(this);
         }
 
-        cache.put(id, new StoredCommit(id, commit));
+        // TODO fixme, String -> Id
+        cache.put(Id.fromString(id), new StoredCommit(id, commit));
 
         return id;
     }
@@ -260,7 +262,7 @@ public class DefaultRevisionStore implem
         return new StoredNodeAsState(node, this);
     }
 
-    public StoredNode getNode(String id) throws NotFoundException, Exception {
+    public StoredNode getNode(Id id) throws NotFoundException, Exception {
         verifyInitialized();
 
         StoredNode node = (StoredNode) cache.get(id);
@@ -276,7 +278,7 @@ public class DefaultRevisionStore implem
         return node;
     }
 
-    public ChildNodeEntriesMap getCNEMap(String id) throws NotFoundException, Exception {
+    public ChildNodeEntriesMap getCNEMap(Id id) throws NotFoundException, Exception {
         verifyInitialized();
 
         ChildNodeEntriesMap map = (ChildNodeEntriesMap) cache.get(id);
@@ -294,13 +296,14 @@ public class DefaultRevisionStore implem
     public StoredCommit getCommit(String id) throws NotFoundException, Exception {
         verifyInitialized();
 
-        StoredCommit commit = (StoredCommit) cache.get(id);
+        // TODO fixme, String -> Id
+        StoredCommit commit = (StoredCommit) cache.get(Id.fromString(id));
         if (commit != null) {
             return commit;
         }
 
         commit = pm.readCommit(id);
-        cache.put(id, commit);
+        cache.put(Id.fromString(id), commit);
 
         return commit;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionProvider.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionProvider.java Wed Mar  7 16:30:46 2012
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.mk.store;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.StoredNode;
 import org.apache.jackrabbit.oak.model.NodeState;
@@ -35,9 +36,9 @@ public interface RevisionProvider {
      */
     NodeState getNodeState(StoredNode node);
 
-    StoredNode getNode(String id) throws NotFoundException, Exception;
+    StoredNode getNode(Id id) throws NotFoundException, Exception;
     StoredCommit getCommit(String id) throws NotFoundException, Exception;
-    ChildNodeEntriesMap getCNEMap(String id) throws NotFoundException, Exception;
+    ChildNodeEntriesMap getCNEMap(Id id) throws NotFoundException, Exception;
     StoredNode getRootNode(String commitId) throws NotFoundException, Exception;
     StoredCommit getHeadCommit() throws Exception;
     String getHeadCommitId() throws Exception;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionStore.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/RevisionStore.java Wed Mar  7 16:30:46 2012
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.mk.store;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.MutableCommit;
 import org.apache.jackrabbit.mk.model.MutableNode;
 
@@ -27,9 +28,9 @@ import java.io.InputStream;
  */
 public interface RevisionStore extends RevisionProvider {
 
-    String /*id*/ putNode(MutableNode node) throws Exception;
+    Id /*id*/ putNode(MutableNode node) throws Exception;
     String /*id*/ putCommit(MutableCommit commit) throws Exception;
-    String /*id*/ putCNEMap(ChildNodeEntriesMap map) throws Exception;
+    Id /*id*/ putCNEMap(ChildNodeEntriesMap map) throws Exception;
     void setHeadCommitId(String commitId) throws Exception;
     void lockHead();
     void unlockHead();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/BDbPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/BDbPersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/BDbPersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/BDbPersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -22,6 +22,7 @@ import java.io.File;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.BinaryBinding;
@@ -119,24 +120,25 @@ public class BDbPersistenceManager imple
         head.put(null, key, data);
     }
 
-    public Binding readNodeBinding(String id) throws NotFoundException, Exception {
-        DatabaseEntry key = new DatabaseEntry(StringUtils.convertHexToBytes(id));
+    public Binding readNodeBinding(Id id) throws NotFoundException, Exception {
+        DatabaseEntry key = new DatabaseEntry(id.getBytes());
         DatabaseEntry data = new DatabaseEntry();
 
         if (db.get(null, key, data, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
             ByteArrayInputStream in = new ByteArrayInputStream(data.getData());
             return new BinaryBinding(in);
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeNode(Node node) throws Exception {
+    public Id writeNode(Node node) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] rawId = idFactory.createContentId(bytes);
-        return persist(bytes, rawId);
+        Id id = new Id(idFactory.createContentId(bytes));
+        persist(id.getBytes(), bytes);
+        return id;
     }
 
     public StoredCommit readCommit(String id) throws NotFoundException, Exception {
@@ -155,39 +157,36 @@ public class BDbPersistenceManager imple
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         commit.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        persist(bytes, rawId);
+        persist(rawId, bytes);
     }
 
-    public ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception {
-        DatabaseEntry key = new DatabaseEntry(StringUtils.convertHexToBytes(id));
+    public ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception {
+        DatabaseEntry key = new DatabaseEntry(id.getBytes());
         DatabaseEntry data = new DatabaseEntry();
 
         if (db.get(null, key, data, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
             ByteArrayInputStream in = new ByteArrayInputStream(data.getData());
             return ChildNodeEntriesMap.deserialize(new BinaryBinding(in));
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id writeCNEMap(ChildNodeEntriesMap map) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         map.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] rawId = idFactory.createContentId(bytes);
-        return persist(bytes, rawId);
+        Id id = new Id(idFactory.createContentId(bytes));
+        persist(id.getBytes(), bytes);
+        return id;
     }
 
     //-------------------------------------------------------< implementation >
 
-    protected String persist(byte[] bytes, byte[] rawId) throws Exception {
-        String id = StringUtils.convertBytesToHex(rawId);
-
+    protected void persist(byte[] rawId, byte[] bytes) throws Exception {
         DatabaseEntry key = new DatabaseEntry(rawId);
         DatabaseEntry data = new DatabaseEntry(bytes);
 
         db.put(null, key, data);
-
-        return id;
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/FSPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/FSPersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/FSPersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/FSPersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -24,6 +24,7 @@ import java.io.FileOutputStream;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.BinaryBinding;
@@ -76,7 +77,7 @@ public class FSPersistenceManager implem
         }
     }
 
-    public Binding readNodeBinding(String id) throws NotFoundException, Exception {
+    public Binding readNodeBinding(Id id) throws NotFoundException, Exception {
         File f = getFile(id);
         if (f.exists()) {
             BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
@@ -86,20 +87,21 @@ public class FSPersistenceManager implem
                 in.close();
             }
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeNode(Node node) throws Exception {
+    public Id writeNode(Node node) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] rawId = idFactory.createContentId(bytes);
-        return writeFile(bytes, rawId);
+        Id id = new Id(idFactory.createContentId(bytes));
+        writeFile(id, bytes);
+        return id;
     }
 
     public StoredCommit readCommit(String id) throws NotFoundException, Exception {
-        File f = getFile(id);
+        File f = getFile(Id.fromString(id));
         if (f.exists()) {
             BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
             try {
@@ -116,10 +118,10 @@ public class FSPersistenceManager implem
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         commit.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        writeFile(bytes, rawId);
+        writeFile(new Id(rawId), bytes);
     }
 
-    public ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception {
+    public ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception {
         File f = getFile(id);
         if (f.exists()) {
             BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
@@ -129,28 +131,30 @@ public class FSPersistenceManager implem
                 in.close();
             }
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id writeCNEMap(ChildNodeEntriesMap map) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         map.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] rawId = idFactory.createContentId(bytes);
-        return writeFile(bytes, rawId);
+        Id id = new Id(idFactory.createContentId(bytes));
+        writeFile(id, bytes);
+        return id;
     }
 
     //-------------------------------------------------------< implementation >
 
-    private File getFile(String id) {
-        StringBuilder buf = new StringBuilder(id.substring(0, 2));
+    private File getFile(Id id) {
+        String sId = id.toString();
+        StringBuilder buf = new StringBuilder(sId.substring(0, 2));
         buf.append('/');
-        buf.append(id.substring(2));
+        buf.append(sId.substring(2));
         return new File(dataDir, buf.toString());
     }
 
-    private String writeFile(byte[] data, byte[] rawId) throws Exception {
+    private void writeFile(Id id, byte[] data) throws Exception {
         File tmp = File.createTempFile("tmp", null, dataDir);
 
         try {
@@ -163,21 +167,20 @@ public class FSPersistenceManager implem
                 fos.close();
             }
 
-            String id = StringUtils.convertBytesToHex(rawId);
             File dst = getFile(id);
             if (dst.exists()) {
                 // already exists
-                return id;
+                return;
             }
             // move tmp file
             tmp.setReadOnly();
             if (tmp.renameTo(dst)) {
-                return id;
+                return;
             }
             // make sure parent dir exists and try again
             dst.getParentFile().mkdir();
             if (tmp.renameTo(dst)) {
-                return id;
+                return;
             }
             throw new Exception("failed to create " + dst);
         } finally {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/H2PersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/H2PersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/H2PersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/H2PersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.mk.store.p
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.BinaryBinding;
@@ -110,18 +111,18 @@ public class H2PersistenceManager implem
         }
     }
 
-    public Binding readNodeBinding(String id) throws NotFoundException, Exception {
+    public Binding readNodeBinding(Id id) throws NotFoundException, Exception {
         Connection con = cp.getConnection();
         try {
             PreparedStatement stmt = con.prepareStatement("select DATA from REVS where ID = ?");
             try {
-                stmt.setBytes(1, StringUtils.convertHexToBytes(id));
+                stmt.setBytes(1, id.getBytes());
                 ResultSet rs = stmt.executeQuery();
                 if (rs.next()) {
                     ByteArrayInputStream in = new ByteArrayInputStream(rs.getBytes(1));
                     return new BinaryBinding(in);
                 } else {
-                    throw new NotFoundException(id);
+                    throw new NotFoundException(id.toString());
                 }
             } finally {
                 stmt.close();
@@ -131,12 +132,12 @@ public class H2PersistenceManager implem
         }
     }
 
-    public String writeNode(Node node) throws Exception {
+    public Id writeNode(Node node) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
         byte[] rawId = idFactory.createContentId(bytes);
-        String id = StringUtils.convertBytesToHex(rawId);
+        //String id = StringUtils.convertBytesToHex(rawId);
 
         Connection con = cp.getConnection();
         try {
@@ -154,7 +155,7 @@ public class H2PersistenceManager implem
         } finally {
             con.close();
         }
-        return id;
+        return new Id(rawId);
     }
 
     public StoredCommit readCommit(String id) throws NotFoundException, Exception {
@@ -201,18 +202,18 @@ public class H2PersistenceManager implem
         }
     }
 
-    public ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception {
+    public ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception {
         Connection con = cp.getConnection();
         try {
             PreparedStatement stmt = con.prepareStatement("select DATA from REVS where ID = ?");
             try {
-                stmt.setBytes(1, StringUtils.convertHexToBytes(id));
+                stmt.setBytes(1, id.getBytes());
                 ResultSet rs = stmt.executeQuery();
                 if (rs.next()) {
                     ByteArrayInputStream in = new ByteArrayInputStream(rs.getBytes(1));
                     return ChildNodeEntriesMap.deserialize(new BinaryBinding(in));
                 } else {
-                    throw new NotFoundException(id);
+                    throw new NotFoundException(id.toString());
                 }
             } finally {
                 stmt.close();
@@ -222,12 +223,11 @@ public class H2PersistenceManager implem
         }
     }
 
-    public String writeCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id writeCNEMap(ChildNodeEntriesMap map) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         map.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
         byte[] rawId = idFactory.createContentId(bytes);
-        String id = StringUtils.convertBytesToHex(rawId);
 
         Connection con = cp.getConnection();
         try {
@@ -245,6 +245,6 @@ public class H2PersistenceManager implem
         } finally {
             con.close();
         }
-        return id;
+        return new Id(rawId);
     }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/InMemPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/InMemPersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/InMemPersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/InMemPersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -28,6 +28,7 @@ import org.apache.jackrabbit.mk.blobs.Bl
 import org.apache.jackrabbit.mk.blobs.MemoryBlobStore;
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.BinaryBinding;
@@ -41,9 +42,9 @@ import org.apache.jackrabbit.mk.util.Str
  */
 public class InMemPersistenceManager implements PersistenceManager, BlobStore {
 
-    private final Map<String, byte[]> nodes = Collections.synchronizedMap(new HashMap<String, byte[]>());
+    private final Map<Id, byte[]> nodes = Collections.synchronizedMap(new HashMap<Id, byte[]>());
     private final Map<String, StoredCommit> commits = Collections.synchronizedMap(new HashMap<String, StoredCommit>());
-    private final Map<String, ChildNodeEntriesMap> cneMaps = Collections.synchronizedMap(new HashMap<String, ChildNodeEntriesMap>());
+    private final Map<Id, ChildNodeEntriesMap> cneMaps = Collections.synchronizedMap(new HashMap<Id, ChildNodeEntriesMap>());
     private final BlobStore blobs = new MemoryBlobStore();
 
     private String head;
@@ -66,20 +67,20 @@ public class InMemPersistenceManager imp
         head = id;
     }
 
-    public Binding readNodeBinding(String id) throws NotFoundException, Exception {
+    public Binding readNodeBinding(Id id) throws NotFoundException, Exception {
         byte[] bytes = nodes.get(id);
         if (bytes != null) {
             return new BinaryBinding(new ByteArrayInputStream(bytes));
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeNode(Node node) throws Exception {
+    public Id writeNode(Node node) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        String id = StringUtils.convertBytesToHex(idFactory.createContentId(bytes));
+        Id id = new Id(idFactory.createContentId(bytes));
 
         if (!nodes.containsKey(id)) {
             nodes.put(id, bytes);
@@ -108,20 +109,20 @@ public class InMemPersistenceManager imp
         }
     }
 
-    public ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception {
+    public ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception {
         ChildNodeEntriesMap map = cneMaps.get(id);
         if (map != null) {
             return map;
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id writeCNEMap(ChildNodeEntriesMap map) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         map.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        String id = StringUtils.convertBytesToHex(idFactory.createContentId(bytes));
+        Id id = new Id(idFactory.createContentId(bytes));
 
         if (!cneMaps.containsKey(id)) {
             cneMaps.put(id, ChildNodeEntriesMap.deserialize(new BinaryBinding(new ByteArrayInputStream(bytes))));

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/MongoPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/MongoPersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/MongoPersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/MongoPersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.mk.blobs.Bl
 import org.apache.jackrabbit.mk.fs.FilePath;
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.BinaryBinding;
@@ -121,16 +122,15 @@ public class MongoPersistenceManager imp
         db.getCollection(HEAD_COLLECTION).insert(new BasicDBObject(ID_FIELD, id));
     }
 
-    public Binding readNodeBinding(String id) throws NotFoundException, Exception {
+    public Binding readNodeBinding(Id id) throws NotFoundException, Exception {
         BasicDBObject key = new BasicDBObject();
         if (BINARY_FORMAT) {
-            key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
+            key.put(ID_FIELD, id.getBytes());
         } else {
-            key.put(ID_FIELD, id);
+            key.put(ID_FIELD, id.toString());
         }
         final BasicDBObject nodeObject = (BasicDBObject) nodes.findOne(key);
         if (nodeObject != null) {
-            // todo support partitioned child node lists
             if (BINARY_FORMAT) {
                 byte[] bytes = (byte[]) nodeObject.get(DATA_FIELD);
                 return new BinaryBinding(new ByteArrayInputStream(bytes));
@@ -138,23 +138,21 @@ public class MongoPersistenceManager imp
                 return new DBObjectBinding(nodeObject);
             }
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
     
-    public String writeNode(Node node) throws Exception {
+    public Id writeNode(Node node) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         node.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] key = idFactory.createContentId(bytes);
-        String id = StringUtils.convertBytesToHex(key);
+        Id id = new Id(idFactory.createContentId(bytes));
 
-        // todo support partitioned child node lists
         BasicDBObject nodeObject;
         if (BINARY_FORMAT) {
-            nodeObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
+            nodeObject = new BasicDBObject(ID_FIELD, id.getBytes()).append(DATA_FIELD, bytes);
         } else {
-            nodeObject = new BasicDBObject(ID_FIELD, id);
+            nodeObject = new BasicDBObject(ID_FIELD, id.toString());
             node.serialize(new DBObjectBinding(nodeObject));
         }
         try {
@@ -206,12 +204,12 @@ public class MongoPersistenceManager imp
         }
     }
 
-    public ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception {
+    public ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception {
         BasicDBObject key = new BasicDBObject();
         if (BINARY_FORMAT) {
-            key.put(ID_FIELD, StringUtils.convertHexToBytes(id));
+            key.put(ID_FIELD, id.getBytes());
         } else {
-            key.put(ID_FIELD, id);
+            key.put(ID_FIELD, id.toString());
         }
         BasicDBObject mapObject = (BasicDBObject) cneMaps.findOne(key);
         if (mapObject != null) {
@@ -222,22 +220,21 @@ public class MongoPersistenceManager imp
                 return ChildNodeEntriesMap.deserialize(new DBObjectBinding(mapObject));
             }
         } else {
-            throw new NotFoundException(id);
+            throw new NotFoundException(id.toString());
         }
     }
 
-    public String writeCNEMap(ChildNodeEntriesMap map) throws Exception {
+    public Id writeCNEMap(ChildNodeEntriesMap map) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         map.serialize(new BinaryBinding(out));
         byte[] bytes = out.toByteArray();
-        byte[] key = idFactory.createContentId(bytes);
-        String id = StringUtils.convertBytesToHex(key);
+        Id id = new Id(idFactory.createContentId(bytes));
 
         BasicDBObject mapObject;
         if (BINARY_FORMAT) {
-            mapObject = new BasicDBObject(ID_FIELD, key).append(DATA_FIELD, bytes);
+            mapObject = new BasicDBObject(ID_FIELD, id.getBytes()).append(DATA_FIELD, bytes);
         } else {
-            mapObject = new BasicDBObject(ID_FIELD, id);
+            mapObject = new BasicDBObject(ID_FIELD, id.toString());
             map.serialize(new DBObjectBinding(mapObject));
         }
         try {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/PersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/PersistenceManager.java?rev=1298011&r1=1298010&r2=1298011&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/PersistenceManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/store/pm/PersistenceManager.java Wed Mar  7 16:30:46 2012
@@ -20,6 +20,7 @@ import java.io.File;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesMap;
 import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Id;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.store.Binding;
@@ -42,13 +43,13 @@ public interface PersistenceManager {
 
     void writeHead(String id) throws Exception;
 
-    Binding readNodeBinding(String id) throws NotFoundException, Exception;
+    Binding readNodeBinding(Id id) throws NotFoundException, Exception;
 
-    String writeNode(Node node) throws Exception;
+    Id writeNode(Node node) throws Exception;
 
-    ChildNodeEntriesMap readCNEMap(String id) throws NotFoundException, Exception;
+    ChildNodeEntriesMap readCNEMap(Id id) throws NotFoundException, Exception;
 
-    String writeCNEMap(ChildNodeEntriesMap map) throws Exception;
+    Id writeCNEMap(ChildNodeEntriesMap map) throws Exception;
 
     StoredCommit readCommit(String id) throws NotFoundException, Exception;