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 2016/09/16 07:01:22 UTC
svn commit: r1761003 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/
Author: chetanm
Date: Fri Sep 16 07:01:22 2016
New Revision: 1761003
URL: http://svn.apache.org/viewvc?rev=1761003&view=rev
Log:
OAK-4806 - Remove usage of Tree in LuceneIndexEditor
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1761003&r1=1761002&r2=1761003&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java Fri Sep 16 07:01:22 2016
@@ -568,7 +568,7 @@ public final class IndexDefinition imple
* @return the indexing rule or <code>null</code> if none applies.
*/
@CheckForNull
- public IndexingRule getApplicableIndexingRule(Tree state) {
+ public IndexingRule getApplicableIndexingRule(NodeState state) {
//This method would be invoked for every node. So be as
//conservative as possible in object creation
List<IndexingRule> rules = null;
@@ -864,7 +864,7 @@ public final class IndexDefinition imple
* @return <code>true</code> the rule applies to the given node;
* <code>false</code> otherwise.
*/
- public boolean appliesTo(Tree state) {
+ public boolean appliesTo(NodeState state) {
for (String mixinName : getMixinTypeNames(state)){
if (nodeTypeName.equals(mixinName)){
return true;
@@ -1398,15 +1398,20 @@ public final class IndexDefinition imple
};
}
- private static String getPrimaryTypeName(Tree state) {
- String primaryType = TreeUtil.getPrimaryTypeName(state);
+ private static String getPrimaryTypeName(NodeState state) {
+ String primaryType = state.getName(JcrConstants.JCR_PRIMARYTYPE);
+
+ //To ensure compatibility with previous Tree based usage look based on string also
+ if (primaryType == null) {
+ primaryType = state.getString(JcrConstants.JCR_PRIMARYTYPE);
+ }
//In case not a proper JCR assume nt:base TODO return null and ignore indexing such nodes
//at all
return primaryType != null ? primaryType : "nt:base";
}
- private static Iterable<String> getMixinTypeNames(Tree tree) {
- PropertyState property = tree.getProperty(JcrConstants.JCR_MIXINTYPES);
+ private static Iterable<String> getMixinTypeNames(NodeState state) {
+ PropertyState property = state.getProperty(JcrConstants.JCR_MIXINTYPES);
return property != null ? property.getValue(Type.NAMES) : Collections.<String>emptyList();
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java?rev=1761003&r1=1761002&r2=1761003&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java Fri Sep 16 07:01:22 2016
@@ -104,10 +104,6 @@ public class LuceneIndexEditor implement
*/
private final boolean isDeleted;
- private Tree afterTree;
-
- private Tree beforeTree;
-
private IndexDefinition.IndexingRule indexingRule;
private List<Matcher> currentMatchers = Collections.emptyList();
@@ -140,7 +136,6 @@ public class LuceneIndexEditor implement
}
public String getPath() {
- //TODO Use the tree instance to determine path
if (path == null) { // => parent != null
path = concat(parent.getPath(), name);
}
@@ -154,20 +149,12 @@ public class LuceneIndexEditor implement
context.enableReindexMode();
}
- if (parent == null){
- afterTree = TreeFactory.createReadOnlyTree(after);
- beforeTree = TreeFactory.createReadOnlyTree(before);
- } else {
- afterTree = parent.afterTree.getChild(name);
- beforeTree = parent.beforeTree.getChild(name);
- }
-
//Only check for indexing if the result is include.
//In case like TRAVERSE nothing needs to be indexed for those
//path
if (pathFilterResult == PathFilter.Result.INCLUDE) {
//For traversal in deleted sub tree before state has to be used
- Tree current = afterTree.exists() ? afterTree : beforeTree;
+ NodeState current = after.exists() ? after : before;
indexingRule = getDefinition().getApplicableIndexingRule(current);
if (indexingRule != null) {
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java?rev=1761003&r1=1761002&r2=1761003&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java Fri Sep 16 07:01:22 2016
@@ -25,13 +25,11 @@ import javax.jcr.PropertyType;
import com.google.common.collect.ImmutableList;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.IndexingRule;
import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.IndexingMode;
import org.apache.jackrabbit.oak.plugins.index.lucene.util.TokenizerChain;
-import org.apache.jackrabbit.oak.plugins.tree.TreeFactory;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.lucene.codecs.Codec;
@@ -161,7 +159,7 @@ public class IndexDefinitionTest {
builder.child(PROP_NODE).child("foo2").child("bar2").child("baz").setProperty(LuceneIndexConstants.PROP_TYPE, PropertyType.TYPENAME_LONG);
builder.setProperty(createProperty(INCLUDE_PROPERTY_NAMES, of("foo", "foo1/bar", "foo2/bar2/baz"), STRINGS));
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule.getConfig("foo1/bar"));
assertEquals(PropertyType.DATE, rule.getConfig("foo1/bar").getType());
assertEquals(PropertyType.LONG, rule.getConfig("foo2/bar2/baz").getType());
@@ -179,9 +177,9 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- assertNull(defn.getApplicableIndexingRule(newTree(newNode("nt:base"))));
+ assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:base"))));
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
assertEquals(2.0f, rule1.boost, 0);
@@ -201,9 +199,9 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- assertNull(defn.getApplicableIndexingRule(newTree(newNode("nt:base"))));
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:hierarchyNode"))));
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:folder"))));
+ assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:base"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:hierarchyNode"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder"))));
}
@Test
@@ -215,8 +213,8 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:folder", "mix:title"))));
- assertNull(defn.getApplicableIndexingRule(newTree(newNode("nt:folder"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder", "mix:title"))));
+ assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder"))));
}
@Test
@@ -228,11 +226,11 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:folder", "mix:mimeType"))));
- assertNull(defn.getApplicableIndexingRule(newTree(newNode("nt:folder"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder", "mix:mimeType"))));
+ assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder"))));
//nt:resource > mix:mimeType
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:resource"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:resource"))));
}
@Test
@@ -245,10 +243,10 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- assertNull(defn.getApplicableIndexingRule(newTree(newNode("nt:base"))));
- assertNotNull(defn.getApplicableIndexingRule(newTree(newNode("nt:hierarchyNode"))));
+ assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:base"))));
+ assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:hierarchyNode"))));
assertNull("nt:folder should not be index as rule is not inheritable",
- defn.getApplicableIndexingRule(newTree(newNode("nt:folder"))));
+ defn.getApplicableIndexingRule(asState(newNode("nt:folder"))));
}
@Test
@@ -292,7 +290,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
assertTrue(rule1.isIndexed("prop1"));
@@ -318,7 +316,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
assertTrue(rule1.isIndexed("prop1"));
@@ -346,7 +344,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
assertTrue(rule1.isIndexed("prop1"));
@@ -360,7 +358,7 @@ public class IndexDefinitionTest {
//Order it correctly to get expected result
rules.child("nt:folder").child(PROP_NODE).setProperty(OAK_CHILD_ORDER, ImmutableList.of("prop1", "prop2"), NAMES);
defn = new IndexDefinition(root, builder.getNodeState());
- rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertEquals(3.0f, rule1.getConfig("fooProp").boost, 0);
}
@@ -377,7 +375,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
assertTrue(rule1.isIndexed("Foo"));
@@ -398,7 +396,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertFalse(rule.getConfig("foo").skipTokenization("foo"));
assertTrue(rule.getConfig(JcrConstants.JCR_UUID).skipTokenization(JcrConstants.JCR_UUID));
}
@@ -467,7 +465,7 @@ public class IndexDefinitionTest {
IndexDefinition defn2 = new IndexDefinition(root, updated.getNodeState());
assertFalse(defn2.isOfOldFormat());
- IndexingRule rule = defn2.getApplicableIndexingRule(newTree(newNode("nt:base")));
+ IndexingRule rule = defn2.getApplicableIndexingRule(asState(newNode("nt:base")));
assertNotNull(rule);
assertFalse(rule.getConfig("foo").index);
assertFalse(rule.getConfig("Bar").index);
@@ -483,7 +481,7 @@ public class IndexDefinitionTest {
NodeBuilder updated = IndexDefinition.updateDefinition(defnb.getNodeState().builder());
IndexDefinition defn2 = new IndexDefinition(root, updated.getNodeState());
- IndexingRule rule = defn2.getApplicableIndexingRule(newTree(newNode("nt:base")));
+ IndexingRule rule = defn2.getApplicableIndexingRule(asState(newNode("nt:base")));
assertNotNull(rule.getConfig("foo"));
assertNull("Property regex used should not allow relative properties", rule.getConfig("foo/bar"));
}
@@ -731,7 +729,7 @@ public class IndexDefinitionTest {
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule1 = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule1 = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule1);
PropertyDefinition pd = rule1.getConfig("prop1");
@@ -752,14 +750,14 @@ public class IndexDefinitionTest {
.setProperty(LuceneIndexConstants.PROP_IS_REGEX, true);
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule);
assertFalse(rule.isNodeFullTextIndexed());
TestUtil.child(rules, "nt:folder/properties/prop1")
.setProperty(LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, true);
defn = new IndexDefinition(root, builder.getNodeState());
- rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertTrue(rule.isNodeFullTextIndexed());
assertTrue(rule.indexesAllNodesOfMatchingType());
}
@@ -773,14 +771,14 @@ public class IndexDefinitionTest {
.setProperty(LuceneIndexConstants.PROP_ANALYZED, true);
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule);
assertFalse(rule.isNodeFullTextIndexed());
TestUtil.child(rules, "nt:folder/properties/prop1")
.setProperty(LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, true);
defn = new IndexDefinition(root, builder.getNodeState());
- rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertTrue(rule.isNodeFullTextIndexed());
assertTrue(rule.indexesAllNodesOfMatchingType());
}
@@ -798,7 +796,7 @@ public class IndexDefinitionTest {
aggFolder.child("i1").setProperty(LuceneIndexConstants.AGG_PATH, "*");
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule);
assertTrue(rule.isNodeFullTextIndexed());
assertTrue(rule.indexesAllNodesOfMatchingType());
@@ -820,7 +818,7 @@ public class IndexDefinitionTest {
.setProperty(LuceneIndexConstants.PROP_ORDERED, true)
.setProperty(LuceneIndexConstants.PROP_ANALYZED, true);
IndexDefinition defn = new IndexDefinition(root, builder.getNodeState());
- IndexingRule rule = defn.getApplicableIndexingRule(newTree(newNode("nt:folder")));
+ IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder")));
assertNotNull(rule);
PropertyDefinition pd = rule.getConfig("foo");
@@ -886,16 +884,16 @@ public class IndexDefinitionTest {
//TODO indexesAllNodesOfMatchingType - with nullCheckEnabled
private static IndexingRule getRule(IndexDefinition defn, String typeName){
- return defn.getApplicableIndexingRule(newTree(newNode(typeName)));
+ return defn.getApplicableIndexingRule(asState(newNode(typeName)));
}
- private static Tree newTree(NodeBuilder nb){
- return TreeFactory.createReadOnlyTree(nb.getNodeState());
+ private static NodeState asState(NodeBuilder nb){
+ return nb.getNodeState();
}
private static NodeBuilder newNode(String typeName){
NodeBuilder builder = EMPTY_NODE.builder();
- builder.setProperty(JcrConstants.JCR_PRIMARYTYPE, typeName);
+ builder.setProperty(JcrConstants.JCR_PRIMARYTYPE, typeName, Type.NAME);
return builder;
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java?rev=1761003&r1=1761002&r2=1761003&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java Fri Sep 16 07:01:22 2016
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.Que
import org.apache.jackrabbit.oak.api.Result;
import org.apache.jackrabbit.oak.api.ResultRow;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
import org.apache.jackrabbit.oak.query.AbstractQueryTest;
import org.apache.jackrabbit.oak.spi.commit.Observer;
@@ -133,7 +134,7 @@ public class SuggestionIntervalTest exte
//add a node... this should kick in a suggestions udpate too as enough time has passed
root.getTree("/").addChild("indexedNode")
- .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType);
+ .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
root.commit();
Set<String> suggestions = getSuggestions(nodeType, "indexedn");
@@ -155,7 +156,7 @@ public class SuggestionIntervalTest exte
//add a node that get part in the index
root.getTree("/").addChild("indexedNode")
- .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType);
+ .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
root.commit();
//wait for suggestions refresh time
@@ -164,7 +165,7 @@ public class SuggestionIntervalTest exte
//push a change which should not make any change in the index but yet should help update suggestions
root.getTree("/").addChild("some-non-index-change")
- .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured");
+ .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured", Type.NAME);
root.commit();
Set<String> suggestions = getSuggestions(nodeType, "indexedn");