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 ch...@apache.org on 2014/10/13 07:08:15 UTC
svn commit: r1631283 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java
Author: chetanm
Date: Mon Oct 13 05:08:14 2014
New Revision: 1631283
URL: http://svn.apache.org/r1631283
Log:
OAK-2173 - Allow specifying custom attributes in IndexPlan
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java?rev=1631283&r1=1631282&r2=1631283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java Mon Oct 13 05:08:14 2014
@@ -20,9 +20,11 @@ package org.apache.jackrabbit.oak.spi.qu
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import javax.annotation.CheckForNull;
+import com.google.common.collect.Maps;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -285,6 +287,19 @@ public interface QueryIndex {
* @return clone of current plan
*/
IndexPlan copy();
+
+ /**
+ * Returns the value of the named attribute as an <code>Object</code>,
+ * or <code>null</code> if no attribute of the given name exists.
+ *
+ * @param name <code>String</code> specifying the name of
+ * the attribute
+ *
+ * @return an <code>Object</code> containing the value
+ * of the attribute, or <code>null</code> if the attribute does not exist
+ */
+ @CheckForNull
+ Object getAttribute(String name);
/**
* A builder for index plans.
@@ -302,6 +317,7 @@ public interface QueryIndex {
protected NodeState definition;
protected PropertyRestriction propRestriction;
protected String pathPrefix = "/";
+ protected Map<String, Object> attributes = Maps.newHashMap();
public Builder setCostPerExecution(double costPerExecution) {
this.costPerExecution = costPerExecution;
@@ -358,6 +374,11 @@ public interface QueryIndex {
return this;
}
+ public Builder setAttribute(String key, Object value){
+ this.attributes.put(key, value);
+ return this;
+ }
+
public IndexPlan build() {
return new IndexPlan() {
@@ -386,6 +407,8 @@ public interface QueryIndex {
Builder.this.propRestriction;
private final String pathPrefix =
Builder.this.pathPrefix;
+ private final Map<String,Object> attributes =
+ Builder.this.attributes;
@Override
public String toString() {
@@ -488,6 +511,11 @@ public interface QueryIndex {
throw new IllegalStateException(e);
}
}
+
+ @Override
+ public Object getAttribute(String name) {
+ return attributes.get(name);
+ }
};
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java?rev=1631283&r1=1631282&r2=1631283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/AdvancedIndexTest.java Mon Oct 13 05:08:14 2014
@@ -56,5 +56,11 @@ public class AdvancedIndexTest {
assertEquals(plan1.getFilter().getQueryStatement(), "SELECT * FROM [nt:file]");
assertEquals(plan2.getFilter().getQueryStatement(), "SELECT * FROM [oak:Unstructured]");
}
+
+ @Test
+ public void attribute() throws Exception{
+ IndexPlan plan = new IndexPlan.Builder().setAttribute("foo", "bar").build();
+ assertEquals("bar", plan.getAttribute("foo"));
+ }
}