@Test public void uniqueIdForFreshIndex() throws Exception{ IndexDefinition defn = IndexDefinition.newBuilder(root, builder.getNodeState(), "/foo").build(); assertEquals("0", defn.getUniqueId()); builder.child(":status"); defn = IndexDefinition.newBuilder(root, builder.getNodeState(),"/foo").build(); assertNull(defn.getUniqueId()); }
@Test public void uniqueIdForFreshIndex() throws Exception{ IndexDefinition defn = IndexDefinition.newBuilder(root, builder.getNodeState(), "/foo").build(); assertEquals("0", defn.getUniqueId()); builder.child(":status"); defn = IndexDefinition.newBuilder(root, builder.getNodeState(),"/foo").build(); assertNull(defn.getUniqueId()); }
@Test public void relativeNodeNames_None() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getRelativeNodeNames().isEmpty()); assertFalse(defn.indexesRelativeNodes()); }
@Test public void relativeNodeNames_None() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getRelativeNodeNames().isEmpty()); assertFalse(defn.indexesRelativeNodes()); }
@Test public void syncPropertyDefinitions() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.hasSyncPropertyDefinitions()); }
@Test public void syncPropertyDefinitions() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.hasSyncPropertyDefinitions()); }
@Test public void relativeNodeNames_RelativeProp() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("jcr:content/foo").propertyIndex(); defnb.indexRule("nt:base").property("bar").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertThat(defn.getRelativeNodeNames(), containsInAnyOrder("jcr:content")); assertTrue(defn.indexesRelativeNodes()); }
@Test public void relativeNodeNames_RelativeProp() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("jcr:content/foo").propertyIndex(); defnb.indexRule("nt:base").property("bar").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertThat(defn.getRelativeNodeNames(), containsInAnyOrder("jcr:content")); assertTrue(defn.indexesRelativeNodes()); }
@Test public void relativeNodeNames_Aggregate() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("jcr:content/foo").propertyIndex(); defnb.aggregateRule("nt:base").include("jcr:content/metadata"); defnb.aggregateRule("nt:base").include("jcr:content/metadata/type/*"); defnb.aggregateRule("nt:base").include("*"); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertThat(defn.getRelativeNodeNames(), containsInAnyOrder("jcr:content", "metadata", "type")); assertTrue(defn.indexesRelativeNodes()); }
@Test public void relativeNodeNames_Aggregate() { IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("jcr:content/foo").propertyIndex(); defnb.aggregateRule("nt:base").include("jcr:content/metadata"); defnb.aggregateRule("nt:base").include("jcr:content/metadata/type/*"); defnb.aggregateRule("nt:base").include("*"); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertThat(defn.getRelativeNodeNames(), containsInAnyOrder("jcr:content", "metadata", "type")); assertTrue(defn.indexesRelativeNodes()); }
@Test public void nodeTypeChange() throws Exception{ IndexDefinition defn = IndexDefinition.newBuilder(root, builder.getNodeState(), "/foo").build(); NodeBuilder b2 = root.builder(); TestUtil.registerNodeType(b2, TestUtil.TEST_NODE_TYPE); NodeState root2 = b2.getNodeState(); NodeBuilder b3 = root.builder(); b3.child("x"); NodeState root3 = b3.getNodeState(); assertFalse(defn.hasMatchingNodeTypeReg(root2)); assertTrue(defn.hasMatchingNodeTypeReg(root3)); }
@Test public void syncIsProperty() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").sync); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").propertyIndex); }
@Test public void syncIsProperty() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").sync); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").propertyIndex); }
@Test public void nodeTypeChange() throws Exception{ IndexDefinition defn = IndexDefinition.newBuilder(root, builder.getNodeState(), "/foo").build(); NodeBuilder b2 = root.builder(); TestUtil.registerNodeType(b2, TestUtil.TEST_NODE_TYPE); NodeState root2 = b2.getNodeState(); NodeBuilder b3 = root.builder(); b3.child("x"); NodeState root3 = b3.getNodeState(); assertFalse(defn.hasMatchingNodeTypeReg(root2)); assertTrue(defn.hasMatchingNodeTypeReg(root3)); }
@Test public void uniqueIsSync() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").unique(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").sync); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").unique); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").propertyIndex); }
@Test public void uniqueIsSync() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").unique(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").sync); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").unique); assertTrue(defn.getApplicableIndexingRule("nt:base").getConfig("foo").propertyIndex); }
@Test public void nodeTypeIndexed_IgnoreAggregates() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestSuperType").sync(); defnb.aggregateRule("oak:TestSuperType").include("*"); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); IndexingRule ruleSuper = getRule(defn, "oak:TestSuperType"); assertNotNull(ruleSuper); assertNull(ruleSuper.getConfig("foo")); assertTrue(ruleSuper.getAggregate().getIncludes().isEmpty()); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES)); }
@Test public void nodeTypeIndexed_IgnoreOtherProps() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestSuperType").sync(); defnb.indexRule("oak:TestSuperType").property("foo").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); IndexingRule ruleSuper = getRule(defn, "oak:TestSuperType"); assertNotNull(ruleSuper); assertNull(ruleSuper.getConfig("foo")); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES)); }
@Test public void nodeTypeIndexed_IgnoreOtherProps() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestSuperType").sync(); defnb.indexRule("oak:TestSuperType").property("foo").propertyIndex(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); IndexingRule ruleSuper = getRule(defn, "oak:TestSuperType"); assertNotNull(ruleSuper); assertNull(ruleSuper.getConfig("foo")); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES)); }
@Test public void nodeTypeIndex_mixin() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestMixA"); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertFalse(defn.hasSyncPropertyDefinitions()); assertNotNull(getRule(defn, "oak:TestTypeB")); assertTrue(getRule(defn, "oak:TestTypeB").indexesAllNodesOfMatchingType()); assertNotNull(getRule(defn, "oak:TestMixA")); assertTrue(getRule(defn, "oak:TestMixA").indexesAllNodesOfMatchingType()); assertNull(getRule(defn, "oak:TestTypeA")); assertNull(getRule(defn, "oak:TestSuperType")); }