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");