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 ca...@apache.org on 2019/08/04 04:35:33 UTC
svn commit: r1864352 - in /jackrabbit/oak/branches/1.10: ./
oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/
oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/
Author: catholicon
Date: Sun Aug 4 04:35:33 2019
New Revision: 1864352
URL: http://svn.apache.org/viewvc?rev=1864352&view=rev
Log:
OAK-8526: IndexDefinitionBuilder should support setting up index tags (backport r1864349 from trunk)
Modified:
jackrabbit/oak/branches/1.10/ (props changed)
jackrabbit/oak/branches/1.10/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java
jackrabbit/oak/branches/1.10/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java
Propchange: jackrabbit/oak/branches/1.10/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Aug 4 04:35:33 2019
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852135,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853083,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855522,1855776,1855905,1855993,1856049,1856056,1856538,1856545,1857000,1857010,1857104,1857159,1857212,1857221,1857238,1857242,1857247,1857253,1857294,1857314,1857332,1857463,1857480,1857577,1857589,1857592,1857627,1857634-1857635,1857638,1857640,1857687,1857936,1858032,1858053,1858123,1858139,1858385,1858424,1858571,1858578,1858810,1858926,1858931,1859020,1859231,1859292,1859294,1859350-1859351,1859359,1859365,1859533,1859609,1859612,1859619,1859711
,1859716,1859772,1859776,1859780,1859843,1859854,1859881,1860120,1860131,1860137,1860202,1860278,1860328,1860330,1860355,1860393,1860442,1860548,1860564-1860565,1860931,1861114,1861270,1861626,1861743,1861757,1861763,1861770,1861776,1861780,1862044,1862093,1862266,1862370,1862422,1862447-1862448,1862465,1862499,1862531,1862536-1862537,1862728,1862806,1862817,1862881,1862926-1862927,1862976-1862977,1863076,1863081,1863086,1863369,1863405,1863540,1863633-1863634,1863642,1863645
+/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852135,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853083,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855522,1855776,1855905,1855993,1856049,1856056,1856538,1856545,1857000,1857010,1857104,1857159,1857212,1857221,1857238,1857242,1857247,1857253,1857294,1857314,1857332,1857463,1857480,1857577,1857589,1857592,1857627,1857634-1857635,1857638,1857640,1857687,1857936,1858032,1858053,1858123,1858139,1858385,1858424,1858571,1858578,1858810,1858926,1858931,1859020,1859231,1859292,1859294,1859350-1859351,1859359,1859365,1859533,1859609,1859612,1859619,1859711
,1859716,1859772,1859776,1859780,1859843,1859854,1859881,1860120,1860131,1860137,1860202,1860278,1860328,1860330,1860355,1860393,1860442,1860548,1860564-1860565,1860931,1861114,1861270,1861626,1861743,1861757,1861763,1861770,1861776,1861780,1862044,1862093,1862266,1862370,1862422,1862447-1862448,1862465,1862499,1862531,1862536-1862537,1862728,1862806,1862817,1862881,1862926-1862927,1862976-1862977,1863076,1863081,1863086,1863369,1863405,1863540,1863633-1863634,1863642,1863645,1864349
/jackrabbit/trunk:1345480
Modified: jackrabbit/oak/branches/1.10/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java?rev=1864352&r1=1864351&r2=1864352&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.10/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java (original)
+++ jackrabbit/oak/branches/1.10/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java Sun Aug 4 04:35:33 2019
@@ -22,11 +22,13 @@ package org.apache.jackrabbit.oak.plugin
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.StreamSupport;
import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -42,6 +44,7 @@ import org.apache.jackrabbit.oak.spi.fil
import org.apache.jackrabbit.oak.spi.state.EqualsDiff;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.jetbrains.annotations.NotNull;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.ImmutableList.of;
@@ -51,6 +54,7 @@ import static org.apache.jackrabbit.JcrC
import static org.apache.jackrabbit.oak.api.Type.NAME;
import static org.apache.jackrabbit.oak.api.Type.STRINGS;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEPRECATED;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_TAGS;
import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.TYPE_LUCENE;
import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.FIELD_BOOST;
import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
@@ -138,6 +142,23 @@ public final class IndexDefinitionBuilde
return this;
}
+ public IndexDefinitionBuilder tags(String ... tagVals) {
+ tree.removeProperty(INDEX_TAGS);
+ tree.setProperty(INDEX_TAGS, asList(tagVals), STRINGS);
+ return this;
+ }
+
+ public IndexDefinitionBuilder addTags(String ... additionalTagVals) {
+ Set<String> currTags = Sets.newHashSet(tree.getProperty(INDEX_TAGS).getValue(STRINGS));
+ Set<String> tagVals = Sets.newHashSet(Iterables.concat(currTags, asList(additionalTagVals)));
+ boolean noAdditionalTags = currTags.containsAll(tagVals);
+ if (!noAdditionalTags) {
+ tree.removeProperty(INDEX_TAGS);
+ tree.setProperty(INDEX_TAGS, asList(Iterables.toArray(tagVals, String.class)), STRINGS);
+ }
+ return this;
+ }
+
public IndexDefinitionBuilder nodeTypeIndex() {
tree.setProperty(FulltextIndexConstants.PROP_INDEX_NODE_TYPE, true);
return this;
Modified: jackrabbit/oak/branches/1.10/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java?rev=1864352&r1=1864351&r2=1864352&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.10/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java (original)
+++ jackrabbit/oak/branches/1.10/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java Sun Aug 4 04:35:33 2019
@@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.plugin
import java.util.Iterator;
+import com.google.common.collect.Iterables;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
@@ -33,12 +34,14 @@ import org.apache.jackrabbit.oak.spi.fil
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.hamcrest.Matchers;
import org.junit.After;
import org.junit.Test;
import static com.google.common.collect.ImmutableList.of;
import static java.util.Arrays.asList;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEPRECATED;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_TAGS;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.AGGREGATES;
import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.FIELD_BOOST;
@@ -302,7 +305,7 @@ public class IndexDefinitionBuilderTest
nodeBuilder.setProperty(REINDEX_PROPERTY_NAME, false);
builder = new IndexDefinitionBuilder(nodeBuilder);
- builder.getBuilderTree().setProperty(stringProperty(IndexConstants.INDEX_TAGS, of("foo1", "foo2")));
+ builder.tags("foo1", "foo2");
currentNodeState = builder.build();
assertFalse(currentNodeState.getBoolean(REINDEX_PROPERTY_NAME));
@@ -312,7 +315,7 @@ public class IndexDefinitionBuilderTest
nodeBuilder.removeProperty(PROP_REFRESH_DEFN);
builder = new IndexDefinitionBuilder(nodeBuilder);
- builder.getBuilderTree().setProperty(stringProperty(IndexConstants.INDEX_TAGS, of("foo2", "foo3")));
+ builder.tags("foo2", "foo3");
currentNodeState = builder.build();
assertFalse(currentNodeState.getBoolean(REINDEX_PROPERTY_NAME));
assertTrue(currentNodeState.getBoolean(PROP_REFRESH_DEFN));
@@ -320,6 +323,15 @@ public class IndexDefinitionBuilderTest
nodeBuilder = currentNodeState.builder();
nodeBuilder.removeProperty(PROP_REFRESH_DEFN);
builder = new IndexDefinitionBuilder(nodeBuilder);
+
+ builder.addTags("foo2");
+ currentNodeState = builder.build();
+ assertFalse(currentNodeState.getBoolean(REINDEX_PROPERTY_NAME));
+ assertFalse(currentNodeState.getBoolean(PROP_REFRESH_DEFN));
+
+ nodeBuilder = currentNodeState.builder();
+ nodeBuilder.removeProperty(PROP_REFRESH_DEFN);
+ builder = new IndexDefinitionBuilder(nodeBuilder);
builder.getBuilderTree().removeProperty(IndexConstants.INDEX_TAGS);
currentNodeState = builder.build();
@@ -872,4 +884,57 @@ public class IndexDefinitionBuilderTest
assertFalse("Incorrectly existing facets property",
foo2.hasProperty(PROP_FACETS));
}
+
+ @Test
+ public void tags() {
+ NodeState state = EMPTY_NODE;
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.tags("foo");
+ state = builder.build();
+ Iterable<String> tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 1, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo"));
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.addTags("foo");
+ state = builder.build();
+ tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 1, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo"));
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.addTags("foo", "foo1");
+ state = builder.build();
+ tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 2, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo", "foo1"));
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.addTags("foo2");
+ state = builder.build();
+ tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 3, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo", "foo1", "foo2"));
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.addTags("foo2", "foo3");
+ state = builder.build();
+ tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 4, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo", "foo1", "foo2", "foo3"));
+
+ builder = new IndexDefinitionBuilder(state.builder());
+ builder.tags("foo4");
+ state = builder.build();
+ tags = state.getProperty(INDEX_TAGS).getValue(Type.STRINGS);
+ assertEquals("Unexpected number of tags", 1, Iterables.size(tags));
+ assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
+ Matchers.containsInAnyOrder("foo4"));
+ }
}
\ No newline at end of file