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 al...@apache.org on 2013/11/13 10:37:59 UTC
svn commit: r1541439 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
Author: alexparvulescu
Date: Wed Nov 13 09:37:59 2013
New Revision: 1541439
URL: http://svn.apache.org/r1541439
Log:
OAK-685 Enforce referential integrity for referenceable nodes
- keep track of references stored in multiple valued properties too
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java?rev=1541439&r1=1541438&r2=1541439&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditor.java Wed Nov 13 09:37:59 2013
@@ -259,10 +259,10 @@ class ReferenceEditor extends DefaultEdi
public void propertyChanged(PropertyState before, PropertyState after) {
if (before != null) {
if (before.getType() == REFERENCE) {
- put(rmRefs, before.getValue(STRING), getPath());
+ put(rmRefs, before.getValue(STRINGS), getPath());
}
if (before.getType() == WEAKREFERENCE) {
- put(rmWeakRefs, before.getValue(STRING), getPath());
+ put(rmWeakRefs, before.getValue(STRINGS), getPath());
}
if (JCR_UUID.equals(before.getName())) {
// node remove + add -> changed uuid
@@ -274,10 +274,10 @@ class ReferenceEditor extends DefaultEdi
}
if (after != null) {
if (after.getType() == REFERENCE) {
- put(newRefs, after.getValue(STRING), getPath());
+ put(newRefs, after.getValue(STRINGS), getPath());
}
if (after.getType() == WEAKREFERENCE) {
- put(newWeakRefs, after.getValue(STRING), getPath());
+ put(newWeakRefs, after.getValue(STRINGS), getPath());
}
}
}
@@ -361,14 +361,16 @@ class ReferenceEditor extends DefaultEdi
return false;
}
- private static void put(Map<String, Set<String>> map, String key,
- String value) {
- Set<String> values = map.get(key);
- if (values == null) {
- values = newHashSet();
+ private static void put(Map<String, Set<String>> map,
+ Iterable<String> keys, String value) {
+ for (String key : keys) {
+ Set<String> values = map.get(key);
+ if (values == null) {
+ values = newHashSet();
+ }
+ values.add(value);
+ map.put(key, values);
}
- values.add(value);
- map.put(key, values);
}
private static void set(NodeBuilder child, String name, Set<String> add,