diff --git oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java index 13cbd39..4621b02 100644 --- oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java +++ oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java @@ -34,14 +34,15 @@ import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Sets.newHashSet; import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; import static java.util.Arrays.asList; import static javax.jcr.PropertyType.TYPENAME_STRING; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.fail; import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM; import static org.apache.jackrabbit.JcrConstants.NT_BASE; import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME; import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME; import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.ANALYZERS; import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.ANL_DEFAULT; import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.ANL_FILTERS; @@ -62,14 +63,15 @@ import static org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent.IN import static org.apache.jackrabbit.oak.spi.query.QueryIndex.AdvancedQueryIndex; import static org.apache.jackrabbit.oak.spi.query.QueryIndex.IndexPlan; import com.google.common.base.Function; import com.google.common.collect.Iterators; import com.google.common.collect.Maps; import org.apache.commons.io.FileUtils; +import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.plugins.index.IndexConstants; import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider; import org.apache.jackrabbit.oak.plugins.index.lucene.score.ScorerProvider; import org.apache.jackrabbit.oak.plugins.index.lucene.score.ScorerProviderFactory; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore; import org.apache.jackrabbit.oak.query.QueryEngineSettings; @@ -748,14 +750,33 @@ public class LuceneIndexTest { indexed = HOOK.processCommit(indexed, builder.getNodeState(),CommitInfo.EMPTY); tracker.update(indexed); assertQuery(tracker, indexed, "foo3", "bar3"); assertEquals(0, copier.getInvalidFileCount()); assertEquals(1, copier.getIndexDir("/oak:index/lucene").listFiles().length); } + @Test + public void multiValuesForOrderedIndexShouldNotThrow() { + NodeBuilder index = newLuceneIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "lucene", null); + NodeBuilder singleProp = TestUtil.child(index, "indexRules/nt:base/properties/single"); + singleProp.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true); + singleProp.setProperty(LuceneIndexConstants.PROP_ORDERED, true); + singleProp.setProperty(LuceneIndexConstants.PROP_INCLUDED_TYPE, PropertyType.TYPENAME_STRING); + + NodeState before = builder.getNodeState(); + builder.setProperty("single", asList("baz", "bar"), Type.STRINGS); + NodeState after = builder.getNodeState(); + + try { + HOOK.processCommit(before, after, CommitInfo.EMPTY); + } catch (CommitFailedException e) { + fail("Exception thrown when indexing invalid content"); + } + } + @After public void cleanUp(){ for (File d: dirs){ FileUtils.deleteQuietly(d); } }