You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2012/03/23 19:05:01 UTC

svn commit: r1304530 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state: ChangeTree.java TransientNodeState.java

Author: mduerig
Date: Fri Mar 23 18:05:01 2012
New Revision: 1304530

URL: http://svn.apache.org/viewvc?rev=1304530&view=rev
Log:
OAK-15: Clean up oak-jcr
Use Scalar instead of JsonValue (WIP)

Modified:
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/ChangeTree.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/TransientNodeState.java

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/ChangeTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/ChangeTree.java?rev=1304530&r1=1304529&r2=1304530&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/ChangeTree.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/ChangeTree.java Fri Mar 23 18:05:01 2012
@@ -23,7 +23,6 @@ import org.apache.commons.collections.ma
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.ScalarImpl;
 import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.oak.api.Scalar;
 import org.apache.jackrabbit.oak.jcr.util.Iterators;
 import org.apache.jackrabbit.oak.jcr.util.Path;
 import org.apache.jackrabbit.oak.jcr.util.Predicate;
@@ -34,7 +33,6 @@ import javax.jcr.ItemNotFoundException;
 import javax.jcr.PathNotFoundException;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 
 import static org.apache.jackrabbit.oak.jcr.util.Unchecked.cast;
@@ -333,40 +331,30 @@ public class ChangeTree {
         }
 
         /**
-         * Set the property with the given {@code name} to {@code value} or remove the
-         * property if {@code value} is {@code null}.
-         * @param name
-         * @param value
+         * Set the given property {@code state}
+         * @param state
          */
-        public void setValue(String name, Scalar value) {
-            if (value == null) {
-                value = ScalarImpl.nullScalar();
-            }
-
-            if (value.equals(ScalarImpl.nullScalar()) && properties.containsKey(name) &&
-                    !properties.get(name).equals(ScalarImpl.nullScalar())) {
-
-                properties.remove(name);
-                notifyRemoveProperty(this, name);
-            }
-            else {
-                KernelPropertyState state = new KernelPropertyState(name, value);
-                properties.put(name, state);
-                touch();
-                notifySetProperty(this, state);
-            }
+        public void setProperty(PropertyState state) {
+            properties.put(state.getName(), state);
+            touch();
+            notifySetProperty(this, state);
         }
 
         /**
-         * Set the property with the given {@code name} to {@code values}.
+         * Remove the property with the given {@code name}
          * @param name
-         * @param values
          */
-        public void setValue(String name, List<Scalar> values) {
-            KernelPropertyState state = new KernelPropertyState(name, values);
-            properties.put(name, state);
-            touch();
-            notifySetProperty(this, state);
+        public void removeProperty(String name)  {
+            KernelPropertyState state = (KernelPropertyState) properties.get(name);  // fixme don't cast
+            if (state != null && !state.isMultiValued() && !state.getValue().equals(ScalarImpl.nullScalar())) {
+                // remove transiently added property
+                properties.remove(name);
+            }
+            else {
+                // mark property as removed
+                properties.put(name, new KernelPropertyState(name, ScalarImpl.nullScalar()));
+                notifyRemoveProperty(this, name);
+            }
         }
 
         //------------------------------------------< internal >---
@@ -617,7 +605,12 @@ public class ChangeTree {
         }
 
         @Override
-        public void setValue(String name, Scalar value) {
+        public void removeProperty(String name) {
+            throw new IllegalStateException("Removed");
+        }
+
+        @Override
+        public void setProperty(PropertyState state) {
             throw new IllegalStateException("Removed");
         }
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/TransientNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/TransientNodeState.java?rev=1304530&r1=1304529&r2=1304530&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/TransientNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/state/TransientNodeState.java Fri Mar 23 18:05:01 2012
@@ -142,7 +142,7 @@ public class TransientNodeState {
      *               to remove the property.
      */
     public void setProperty(String name, Scalar value) {
-        getNodeDelta().setValue(name, value);
+        getNodeDelta().setProperty(new KernelPropertyState(name, value));
     }
 
     /**
@@ -151,7 +151,7 @@ public class TransientNodeState {
      * @param values  Values of the property.
      */
     public void setProperty(String name, List<Scalar> values) {
-        getNodeDelta().setValue(name, values);
+        getNodeDelta().setProperty(new KernelPropertyState(name, values));
     }
 
     /**
@@ -159,7 +159,7 @@ public class TransientNodeState {
      * @param name  name of the property to remove.
      */
     public void removeProperty(String name) {
-        getNodeDelta().setValue(name, (Scalar) null);
+        getNodeDelta().removeProperty(name);
     }
 
     /**
@@ -270,7 +270,7 @@ public class TransientNodeState {
         }
 
         if (state.isMultiValued()) {
-            return true;
+            return getPersistedPropertyState(name) == null;
         }
         else {
             Scalar value = state.getValue();