Author: alexparvulescu Date: Thu Apr 4 14:14:53 2013 New Revision: 1464563
URL: http://svn.apache.org/r1464563 Log: OAK-734 Refactor indexing code to use Editors - fixed reindex Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerDiff.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerDiff.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerDiff.java?rev=1464563&r1=1464562&r2=1464563&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerDiff.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerDiff.java Thu Apr 4 14:14:53 2013 @@ -61,10 +61,11 @@ class IndexHookManagerDiff implements Ed @Override public void enter(NodeState before, NodeState after) throws CommitFailedException { - if (after != null && after.hasChildNode(INDEX_DEFINITIONS_NAME)) { + NodeState ref = node.getNodeState(); + if (ref.hasChildNode(INDEX_DEFINITIONS_NAME)) { Set<String> existingTypes = new HashSet<String>(); Set<String> reindexTypes = new HashSet<String>(); - NodeState index = after.getChildNode(INDEX_DEFINITIONS_NAME); + NodeState index = ref.getChildNode(INDEX_DEFINITIONS_NAME); for (String indexName : index.getChildNodeNames()) { NodeState indexChild = index.getChildNode(indexName); if (isIndexNodeType(indexChild.getProperty(JCR_PRIMARYTYPE))) { @@ -94,17 +95,19 @@ class IndexHookManagerDiff implements Ed for (String type : existingTypes) { List<? extends IndexHook> hooksTmp = provider.getIndexHooks( type, node); - hooks.addAll(hooksTmp); if (reindexTypes.contains(type)) { reindex.addAll(hooksTmp); + } else { + hooks.addAll(hooksTmp); } } + for (IndexHook ih : reindex) { + ih.enter(before, after); + ih.reindex(ref); + } if (!hooks.isEmpty()) { this.inner = new CompositeEditor(hooks); this.inner.enter(before, after); - for (IndexHook ih : reindex) { - ih.reindex(after); - } } } }
