Author: chetanm
Date: Tue Jul 25 07:00:00 2017
New Revision: 1802890

URL: http://svn.apache.org/viewvc?rev=1802890&view=rev
Log:
OAK-6471 - Support adding or updating index definitions via oak-run

Check if the index path is valid

Removed:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/NodeStoreUtils.java
Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java?rev=1802890&r1=1802889&r2=1802890&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java
 Tue Jul 25 07:00:00 2017
@@ -26,6 +26,7 @@ import java.io.IOException;
 import com.codahale.metrics.MetricRegistry;
 import com.google.common.io.Closer;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.CorruptIndexHandler;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
@@ -53,6 +54,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
 import static java.util.Arrays.asList;
 
 public class OutOfBandIndexer implements Closeable, IndexUpdateCallback, 
NodeTraversalCallback {
@@ -168,7 +170,9 @@ public class OutOfBandIndexer implements
 
         for (String indexPath : indexHelper.getIndexPaths()) {
             //TODO Do it only for lucene indexes for now
-            NodeBuilder idxBuilder = NodeStoreUtils.childBuilder(builder, 
indexPath);
+            NodeBuilder idxBuilder = childBuilder(builder, indexPath, false);
+            checkState(idxBuilder.exists(), "No index definition found at path 
[%s]", indexPath);
+
             idxBuilder.setProperty(IndexConstants.REINDEX_PROPERTY_NAME, true);
             AsyncLaneSwitcher.switchLane(idxBuilder, REINDEX_LANE);
         }
@@ -182,7 +186,7 @@ public class OutOfBandIndexer implements
         NodeBuilder builder = root.builder();
 
         for (String indexPath : indexHelper.getIndexPaths()) {
-            NodeBuilder idxBuilder = NodeStoreUtils.childBuilder(builder, 
indexPath);
+            NodeBuilder idxBuilder = childBuilder(builder, indexPath, false);
             AsyncLaneSwitcher.revertSwitch(idxBuilder, indexPath);
         }
 
@@ -200,4 +204,11 @@ public class OutOfBandIndexer implements
         NodeCounterMBeanEstimator estimator = new 
NodeCounterMBeanEstimator(indexHelper.getNodeStore());
         indexUpdate.setNodeCountEstimator(estimator);
     }
+
+    private static NodeBuilder childBuilder(NodeBuilder nb, String path, 
boolean createNew) {
+        for (String name : PathUtils.elements(checkNotNull(path))) {
+            nb = createNew ? nb.child(name) : nb.getChildNode(name);
+        }
+        return nb;
+    }
 }


Reply via email to