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/02/02 18:03:43 UTC

svn commit: r1239723 - in /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store: AbstractPersistenceManager.java MongoPersistenceManager.java PersistHook.java

Author: stefan
Date: Thu Feb  2 17:03:42 2012
New Revision: 1239723

URL: http://svn.apache.org/viewvc?rev=1239723&view=rev
Log:
refactoring persistence logic & cleanup

Added:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistHook.java
Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java?rev=1239723&r1=1239722&r2=1239723&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/AbstractPersistenceManager.java Thu Feb  2 17:03:42 2012
@@ -124,7 +124,18 @@ public abstract class AbstractPersistenc
     public String putNode(Node node) throws Exception {
         verifyInitialized();
 
+        PersistHook callback = null;
+        if (node instanceof PersistHook) {
+            callback = (PersistHook) node;
+            callback.prePersist(this);
+        }
+
         String id = writeNode(node);
+        
+        if (callback != null)  {
+            callback.postPersist(this);
+        }
+        
         cache.put(id, new StoredNode(id, node));
 
         return id;
@@ -133,9 +144,20 @@ public abstract class AbstractPersistenc
     public String putCNEBucket(ChildNodeEntriesBucket bucket) throws Exception {
         verifyInitialized();
 
-        String id = writeCNEBucket(bucket);
-        // todo fixme
-        //cache.put(id, new ChildNodeEntriesBucket(id, bucket));
+        PersistHook callback = null;
+        if (bucket instanceof PersistHook) {
+            callback = (PersistHook) bucket;
+            callback.prePersist(this);
+        }
+
+       String id = writeCNEBucket(bucket);
+
+        if (callback != null)  {
+            callback.postPersist(this);
+        }
+
+        // todo is it correct to cache a clone?
+        cache.put(id, bucket.clone());
 
         return id;
     }
@@ -143,7 +165,18 @@ public abstract class AbstractPersistenc
     public String putCommit(Commit commit) throws Exception {
         verifyInitialized();
 
+        PersistHook callback = null;
+        if (commit instanceof PersistHook) {
+            callback = (PersistHook) commit;
+            callback.prePersist(this);
+        }
+
         String id = writeCommit(commit);
+
+        if (callback != null)  {
+            callback.postPersist(this);
+        }
+
         cache.put(id, new StoredCommit(id, commit));
 
         return id;

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java?rev=1239723&r1=1239722&r2=1239723&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java Thu Feb  2 17:03:42 2012
@@ -20,13 +20,9 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
 
 import org.apache.jackrabbit.mk.model.ChildNodeEntriesBucket;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
 import org.apache.jackrabbit.mk.model.Commit;
 import org.apache.jackrabbit.mk.model.Node;
 import org.apache.jackrabbit.mk.model.StoredCommit;
@@ -59,8 +55,6 @@ public class MongoPersistenceManager ext
     private static final String BUCKETS_COLLECTION = "buckets";
     private static final String ID_FIELD = ":id";
     private static final String DATA_FIELD = ":data";
-    private static final String PROPERTIES_OBJECT = ":props";
-    private static final String CHILDREN_OBJECT = ":children";
 
     private Mongo con;
     private DB db;
@@ -296,61 +290,9 @@ public class MongoPersistenceManager ext
 
     //-------------------------------------------------------< implementation >
 
-    protected static Map<String, String> encodeKeys(Map<String, String> map) {
-        boolean needsEncoding = false;
-        for (String key : map.keySet()) {
-            if (needsEncoding = needsEncoding(key)) {
-                break;
-            }
-        }
-        if (!needsEncoding) {
-            return map;
-        }
-        Map<String, String> result;
-        if (map instanceof LinkedHashMap) {
-            result = new LinkedHashMap<String, String>(map.size());
-        } else {
-            result = new HashMap<String, String>(map.size());
-        }
-        for (Map.Entry<String, String> entry : map.entrySet()) {
-            result.put(encodeName(entry.getKey()), entry.getValue());
-        }
-        return result;
-    }
-
-    protected static Map<String, String> decodeKeys(Map<String, String> map) {
-        boolean needsDecoding = false;
-        for (String key : map.keySet()) {
-            if (needsDecoding = needsDecoding(key)) {
-                break;
-            }
-        }
-        if (!needsDecoding) {
-            return map;
-        }
-        Map<String, String> result;
-        if (map instanceof LinkedHashMap) {
-            result = new LinkedHashMap<String, String>(map.size());
-        } else {
-            result = new HashMap<String, String>(map.size());
-        }
-        for (Map.Entry<String, String> entry : map.entrySet()) {
-            result.put(decodeName(entry.getKey()), entry.getValue());
-        }
-        return result;
-    }
-
     protected final static String ENCODED_DOT = "_x46_";
     protected final static String ENCODED_DOLLAR_SIGN = "_x36_";
 
-    protected static boolean needsEncoding(String name) {
-        return name.startsWith("$") || name.indexOf('.') != -1;
-    }
-
-    protected static boolean needsDecoding(String name) {
-        return name.startsWith(ENCODED_DOLLAR_SIGN) || name.indexOf(ENCODED_DOT) != -1;
-    }
-
     /**
      * see http://www.mongodb.org/display/DOCS/Legal+Key+Names
      *
@@ -389,7 +331,7 @@ public class MongoPersistenceManager ext
             lastPos = ENCODED_DOLLAR_SIGN.length();
         }
 
-        int pos = -1;
+        int pos;
         while ((pos = name.indexOf(ENCODED_DOT, lastPos)) != -1) {
             if (buf == null) {
                 buf = new StringBuilder();

Added: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistHook.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistHook.java?rev=1239723&view=auto
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistHook.java (added)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistHook.java Thu Feb  2 17:03:42 2012
@@ -0,0 +1,26 @@
+/*
+ * 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.store;
+
+/**
+ * 
+ */
+public interface PersistHook {
+    
+    void prePersist(RevisionStore store) throws Exception;
+    void postPersist(RevisionStore store) throws Exception;
+}