[maven-release-plugin] copy for tag jackrabbit-oak-1.6.16
git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/tags/jackrabbit-oak-1.6.16@1851108 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/oak-doc/pom.xml b/oak-doc/pom.xml
index e1a4fdc..3f6ba15 100644
--- a/oak-doc/pom.xml
+++ b/oak-doc/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>oak-parent</artifactId>
- <version>1.6-SNAPSHOT</version>
+ <version>1.6.16-SNAPSHOT</version>
<relativePath>../oak-parent/pom.xml</relativePath>
</parent>
diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
index 98d6f42..51eb826 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
@@ -28,6 +28,7 @@
import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.SecureFacetConfiguration;
import org.apache.jackrabbit.oak.spi.query.QueryIndex;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.lucene.facet.FacetResult;
import org.apache.lucene.facet.Facets;
import org.apache.lucene.facet.FacetsCollector;
import org.apache.lucene.facet.FacetsConfig;
@@ -92,7 +93,7 @@
}
}
if (facetsMap.size() > 0) {
- facets = new MultiFacets(facetsMap);
+ facets = new MultiFacets(facetsMap, NULL_FACETS);
}
}
@@ -103,4 +104,21 @@
public static String parseFacetField(String columnName) {
return columnName.substring(QueryImpl.REP_FACET.length() + 1, columnName.length() - 1);
}
+
+ private static final Facets NULL_FACETS = new Facets() {
+ @Override
+ public FacetResult getTopChildren(int topN, String dim, String... path) {
+ return null;
+ }
+
+ @Override
+ public Number getSpecificValue(String dim, String... path) {
+ return null;
+ }
+
+ @Override
+ public List<FacetResult> getAllDims(int topN) {
+ return null;
+ }
+ };
}
diff --git a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
index 263ed06..6d956fc 100644
--- a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
+++ b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
@@ -615,6 +615,41 @@
assertFalse(rows.hasNext());
}
+ // OAK-7975
+ public void testFacetWithNoIndexedValues() throws Exception {
+ Node content = testRootNode.addNode("absentDimFacets");
+
+ content.addNode("bar").setProperty("text", "lorem ipsum");
+
+ superuser.save();
+
+ String query;
+ FacetResult facetResult;
+ List<FacetResult.Facet> facets;
+
+ // test with single facet column which has no indexed value yet
+ query = "select [rep:facet(jc/text)] from [nt:base] where contains(*, 'ipsum')";
+
+ facetResult = new FacetResult(qm.createQuery(query, Query.JCR_SQL2).execute());
+
+ assertNotNull(facetResult);
+ assertTrue(facetResult.getDimensions().isEmpty());
+
+ // test with requesting multiple facet columns - one would get facets other won't
+ query = "select [rep:facet(text)], [rep:facet(jc/text)] from [nt:base] where contains(*, 'ipsum')";
+
+ facetResult = new FacetResult(qm.createQuery(query, Query.JCR_SQL2).execute());
+
+ assertNotNull(facetResult);
+ assertEquals(newHashSet("text"), facetResult.getDimensions());
+
+ facets = facetResult.getFacets("text");
+ assertEquals(1, facets.size());
+
+ assertEquals("lorem ipsum", facets.get(0).getLabel());
+ assertEquals(1, facets.get(0).getCount());
+ }
+
public void testNoFacetsIfNoAccess() throws Exception {
deny(testRootNode.addNode("test1")).setProperty("jcr:title", "test1");
deny(testRootNode.addNode("test2")).addNode("child").setProperty("jcr:title", "test2");