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,
