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 re...@apache.org on 2016/10/20 13:53:07 UTC

svn commit: r1765817 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java

Author: reschke
Date: Thu Oct 20 13:53:07 2016
New Revision: 1765817

URL: http://svn.apache.org/viewvc?rev=1765817&view=rev
Log:
OAK-4964: UpdateOp.set("_id", ...) should do a sanity check on the id

(fixes also a test case which indeed did the wrong thing)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java?rev=1765817&r1=1765816&r2=1765817&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/UpdateOp.java Thu Oct 20 13:53:07 2016
@@ -34,7 +34,7 @@ import static com.google.common.base.Pre
  */
 public final class UpdateOp {
 
-    final String id;
+    private final String id;
 
     private boolean isNew;
     private boolean isDelete;
@@ -49,14 +49,14 @@ public final class UpdateOp {
      * @param id the primary key
      * @param isNew whether this is a new document
      */
-    public UpdateOp(String id, boolean isNew) {
+    public UpdateOp(@Nonnull String id, boolean isNew) {
         this(id, isNew, false, new HashMap<Key, Operation>(), null);
     }
 
     private UpdateOp(@Nonnull String id, boolean isNew, boolean isDelete,
                      @Nonnull Map<Key, Operation> changes,
                      @Nullable Map<Key, Condition> conditions) {
-        this.id = checkNotNull(id);
+        this.id = checkNotNull(id, "id must not be null");
         this.isNew = isNew;
         this.isDelete = isDelete;
         this.changes = checkNotNull(changes);
@@ -103,6 +103,7 @@ public final class UpdateOp {
                 new HashMap<Key, Operation>(changes), conditionMap);
     }
 
+    @Nonnull
     public String getId() {
         return id;
     }
@@ -339,6 +340,10 @@ public final class UpdateOp {
     }
 
     private void internalSet(String property, Object value) {
+        if (Document.ID.equals(property) && !id.equals(value.toString())) {
+            throw new IllegalArgumentException(
+                    "updateOp.id (" + id + ") and set operation on " + Document.ID + " (" + value + ") disagree");
+        }
         Operation op = new Operation(Operation.Type.SET, value);
         changes.put(new Key(property, null), op);
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java?rev=1765817&r1=1765816&r2=1765817&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ValueMapTest.java Thu Oct 20 13:53:07 2016
@@ -202,7 +202,7 @@ public class ValueMapTest {
 
         String prevId2 = Utils.getPreviousIdFor("/", range2.high, 0);
         UpdateOp prevOp2 = new UpdateOp(prevId2, true);
-        prevOp1.set(Document.ID, prevId2);
+        prevOp2.set(Document.ID, prevId2);
         NodeDocument.setRevision(prevOp2, r1, "c");
         NodeDocument.setRevision(prevOp2, r2, "c");
         NodeDocument.setRevision(prevOp2, r4, "c");