Author: chetanm
Date: Fri Apr 8 04:50:00 2016
New Revision: 1738207
URL: http://svn.apache.org/viewvc?rev=1738207&view=rev
Log:
OAK-4152 - Expose the index path to IndexEditor
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java?rev=1738207&r1=1738206&r2=1738207&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
Fri Apr 8 04:50:00 2016
@@ -67,4 +67,10 @@ public interface IndexConstants {
* queries. Defaults to ['/'].
*/
String QUERY_PATHS = "queryPaths";
+
+ /**
+ * Hidden property which stores the indexPath which can be used by
+ * IndexEditors
+ */
+ String INDEX_PATH = ":indexPath";
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java?rev=1738207&r1=1738206&r2=1738207&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
Fri Apr 8 04:50:00 2016
@@ -25,6 +25,7 @@ import static org.apache.jackrabbit.oak.
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_PROPERTY_NAME;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_REINDEX_VALUE;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_ASYNC_PROPERTY_NAME;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_COUNT;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
@@ -195,6 +196,7 @@ public class IndexUpdate implements Edit
// probably not an index def
continue;
}
+ manageIndexPath(definition, name);
boolean shouldReindex = shouldReindex(definition,
before, name);
String indexPath = getIndexPath(getPath(), name);
@@ -227,6 +229,13 @@ public class IndexUpdate implements Edit
}
}
+ private void manageIndexPath(NodeBuilder definition, String name) {
+ String path = definition.getString(INDEX_PATH);
+ if (path == null){
+ definition.setProperty(INDEX_PATH, PathUtils.concat(getPath(),
INDEX_DEFINITIONS_NAME, name));
+ }
+ }
+
private void incrementReIndexCount(NodeBuilder definition) {
long count = 0;
if(definition.hasProperty(REINDEX_COUNT)){
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java?rev=1738207&r1=1738206&r2=1738207&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java
Fri Apr 8 04:50:00 2016
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.JcrC
import static org.apache.jackrabbit.JcrConstants.NT_FILE;
import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_PATH;
import static
org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefinition;
import static
org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_EXCLUDED_PATHS;
import static
org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_INCLUDED_PATHS;
@@ -66,6 +67,7 @@ import org.apache.jackrabbit.oak.spi.que
import org.apache.jackrabbit.oak.spi.query.PropertyValues;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
import org.junit.Test;
import com.google.common.collect.ImmutableSet;
@@ -733,6 +735,20 @@ public class PropertyIndexTest {
assertTrue(Double.POSITIVE_INFINITY == plan.getCost());
}
+ @Test
+ public void indexPath() throws Exception{
+ NodeState root = INITIAL_CONTENT;
+
+ // Add index definition
+ NodeBuilder builder = root.builder();
+ createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo",
+ true, false, ImmutableSet.of("foo"), null);
+ NodeState after = builder.getNodeState();
+ NodeState indexed = HOOK.processCommit(root, after, CommitInfo.EMPTY);
+ NodeState idxDefn = NodeStateUtils.getNode(indexed, "/oak:index/foo");
+ assertEquals("/oak:index/foo", idxDefn.getString(INDEX_PATH));
+ }
+
private int getResultSize(NodeState indexed, String name, String value){
FilterImpl f = createFilter(indexed, NT_BASE);