You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2012/02/10 13:29:31 UTC

svn commit: r1242753 - in /jackrabbit/sandbox/jackrabbit-microkernel/src: main/java/org/apache/jackrabbit/state/ChangeLog.java test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java test/java/org/apache/jackrabbit/state/ChangeLogTest.java

Author: mduerig
Date: Fri Feb 10 12:29:30 2012
New Revision: 1242753

URL: http://svn.apache.org/viewvc?rev=1242753&view=rev
Log:
Microkernel based prototype of JCR implementation (WIP)
- clear() method for change log
- allow null for setProperty

Modified:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogTest.java

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?rev=1242753&r1=1242752&r2=1242753&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java Fri Feb 10 12:29:30 2012
@@ -43,6 +43,13 @@ public class ChangeLog {
     private final List<Operation> operations = new ArrayList<Operation>();
 
     /**
+     * Clear this change log to its empty state
+     */
+    public void clear() {
+        operations.clear();
+    }
+
+    /**
      * Add a add node operation to this change log
      * @param path  path of the added node
      */
@@ -74,6 +81,9 @@ public class ChangeLog {
      * @param value  value of the property
      */
     public void setProperty(Path parent, String name, JsonAtom value) {
+        if (value == null) {
+            value = JsonAtom.NULL;
+        }
         addOperation(Operation.setProperty(parent, name, value));
     }
 

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java?rev=1242753&r1=1242752&r2=1242753&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogFuzzTest.java Fri Feb 10 12:29:30 2012
@@ -456,7 +456,7 @@ public class ChangeLogFuzzTest {
 
     private static class ChangeLogConsolidator {
         private final MicroKernel microkernel;
-        private ChangeLog changeLog = new ChangeLog();
+        private final ChangeLog changeLog = new ChangeLog();
 
         public ChangeLogConsolidator(MicroKernel microkernel) {
             this.microkernel = microkernel;
@@ -482,7 +482,7 @@ public class ChangeLogFuzzTest {
             String jsop = changeLog.toJsop();
             log.info("jsop = {}", jsop);
             microkernel.commit("", jsop, microkernel.getHeadRevision(), "");
-            changeLog = new ChangeLog();
+            changeLog.clear();
         }
     }
 }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogTest.java?rev=1242753&r1=1242752&r2=1242753&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/state/ChangeLogTest.java Fri Feb 10 12:29:30 2012
@@ -27,52 +27,52 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertTrue;
 
 public class ChangeLogTest {
+    private final ChangeLog changeLog = new ChangeLog();
 
     @Test
     public void empty() {
-        ChangeLog changeLog = new ChangeLog();
         assertTrue(changeLog.toJsop().isEmpty());
     }
     
     @Test
     public void singleton() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/foo"));
         assertEquals("+\"//foo\":{}", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
     }
 
     @Test
     public void tuples() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/d"));
         assertEquals(">\"//c\":\"//d\">\"//a\":\"//b\"", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/b"), path("/c"));
         assertEquals(">\"//a\":\"//c\"", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/b"), path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.moveNode(path("/a"), path("/b"));
         assertEquals("+\"//b\":{}", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.removeNode(path("/b"));
         assertEquals("-\"//a\"", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.removeNode(path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
@@ -80,13 +80,13 @@ public class ChangeLogTest {
 
     @Test
     public void triple() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/b"), path("/c"));
         changeLog.moveNode(path("/c"), path("/d"));
         assertEquals(">\"//a\":\"//d\"", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/x"), path("/y"));
         changeLog.moveNode(path("/b"), path("/c"));
@@ -95,7 +95,7 @@ public class ChangeLogTest {
     
     @Test
     public void remove() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.removeNode(path("/a/b"));
         changeLog.removeNode(path("/a"));
         assertEquals("-\"//a\"", changeLog.toJsop());
@@ -103,13 +103,13 @@ public class ChangeLogTest {
 
     @Test
     public void removeAdded() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.addNode(path("/a/b"));
         changeLog.removeNode(path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.addNode(path("/a/b"));
         changeLog.addNode(path("/a/c"));
@@ -119,29 +119,29 @@ public class ChangeLogTest {
     
     @Test
     public void properties() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.setProperty(path("/"), "a", JsonAtom.number(42));
         assertEquals("^\"//a\":42", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.setProperty(path("/"), "a", JsonAtom.number(42));
         changeLog.setProperty(path("/"), "a", JsonAtom.number(43));
         assertEquals("^\"//a\":43", changeLog.toJsop());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.setProperty(path("/a"), "a", JsonAtom.number(42));
         changeLog.removeNode(path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/a"));
         changeLog.setProperty(path("/a"), "a", JsonAtom.number(42));
         changeLog.setProperty(path("/a"), "b", JsonAtom.number(42));
         changeLog.removeNode(path("/a"));
         assertTrue(changeLog.toJsop().isEmpty());
 
-        changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.setProperty(path("/"), "a", JsonAtom.number(42));
         changeLog.removeProperty(path("/"), "a");
         assertEquals("^\"//a\":null", changeLog.toJsop());
@@ -155,7 +155,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule1_5_9_13() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/d"));
         assertEquals(">\"//c\":\"//d\">\"//a\":\"//b\"", changeLog.toJsop());
@@ -166,7 +166,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule2() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/a/b"), path("/c"));
     }
@@ -176,7 +176,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule3() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/a"), path("/c"));
     }
@@ -186,7 +186,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule4() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a/b"), path("/c"));
         changeLog.moveNode(path("/a"), path("/d"));
         assertEquals(">\"//a\":\"//d\">\"//d/b\":\"//c\"", changeLog.toJsop());
@@ -198,7 +198,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule4a() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a/b"), path("/c"));
         changeLog.moveNode(path("/a"), path("/c/d"));
         assertEquals(">\"//a/b\":\"//c\">\"//a\":\"//c/d\"", changeLog.toJsop());
@@ -210,7 +210,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule4b() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.removeNode(path("/a/b"));
         changeLog.removeNode(path("/a"));
         assertEquals("-\"//a\"", changeLog.toJsop());
@@ -222,7 +222,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule4c() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a/b"), path("/c"));
         changeLog.removeNode(path("/a"));
         assertEquals(">\"//a/b\":\"//c\"-\"//a\"", changeLog.toJsop());
@@ -234,7 +234,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule6() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/a/d"));
     }
@@ -244,7 +244,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule7() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/a"));
         assertEquals(">\"//a\":\"//b\">\"//c\":\"//a\"", changeLog.toJsop());
@@ -255,7 +255,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule8() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a/d"), path("/b"));
         changeLog.moveNode(path("/c"), path("/a"));
     }
@@ -265,7 +265,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule10() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/b/c"), path("/d"));
         assertEquals(">\"//a/c\":\"//d\">\"//a\":\"//b\"", changeLog.toJsop());
@@ -276,7 +276,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule10a() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/b"));
         changeLog.moveNode(path("/b/c"), path("/d"));
     }
@@ -286,7 +286,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule11() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/b"), path("/c"));
         assertEquals(">\"//a\":\"//c\"", changeLog.toJsop());
@@ -297,7 +297,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule12() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b/c"));
         changeLog.moveNode(path("/b"), path("/d"));
         assertEquals(">\"//b\":\"//d\">\"//a\":\"//d/c\"", changeLog.toJsop());
@@ -308,7 +308,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule12a() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b/c"));
         changeLog.removeNode(path("/b"));
         assertEquals("-\"//a\"-\"//b\"", changeLog.toJsop());
@@ -319,7 +319,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule14() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/b/d"));
         assertEquals(">\"//c\":\"//a/d\">\"//a\":\"//b\"", changeLog.toJsop());
@@ -330,7 +330,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule14a() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a/b"), path("/b"));
         changeLog.moveNode(path("/a"), path("/b/d"));
         assertEquals(">\"//a/b\":\"//b\">\"//a\":\"//b/d\"", changeLog.toJsop());
@@ -341,7 +341,7 @@ public class ChangeLogTest {
      */
     @Test
     public void testRule14b() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/b"));
         changeLog.moveNode(path("/c"), path("/b/c"));
         assertEquals("+\"//b\":{}>\"//c\":\"//b/c\"", changeLog.toJsop());
@@ -352,7 +352,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule14c() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.addNode(path("/b"));
         changeLog.moveNode(path("/c"), path("/b/c/d"));
     }
@@ -362,7 +362,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule15() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b"));
         changeLog.moveNode(path("/c"), path("/b"));
     }
@@ -372,7 +372,7 @@ public class ChangeLogTest {
      */
     @Test(expected = IllegalArgumentException.class)
     public void testRule16() {
-        ChangeLog changeLog = new ChangeLog();
+        changeLog.clear();
         changeLog.moveNode(path("/a"), path("/b/d"));
         changeLog.moveNode(path("/c"), path("/b"));
     }