@Test public void indexRuleInheritanceOrdering2() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:base", "nt:hierarchyNode"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); //As nt:base is defined earlier it would supercede everything assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(3.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:file").boost, 0); }
@Test public void indexRuleInheritanceOrdering() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:hierarchyNode", "nt:base"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(2.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:query").boost, 0); } @Test
@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")); }
@Test public void nodeTypeIndexed() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestSuperType"); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertFalse(defn.hasSyncPropertyDefinitions()); IndexingRule ruleSuper = getRule(defn, "oak:TestSuperType"); assertNotNull(ruleSuper); assertTrue(defn.isPureNodeTypeIndex()); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE).propertyIndex); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES).propertyIndex); assertTrue(ruleSuper.indexesAllNodesOfMatchingType()); assertNotNull(getRule(defn, "oak:TestTypeA")); assertTrue(getRule(defn, "oak:TestTypeA").indexesAllNodesOfMatchingType()); assertNotNull(getRule(defn, "oak:TestTypeB")); assertNull(getRule(defn, "oak:TestMixA")); }
@Test public void mixinAndPrimaryType() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("oak:TestMixA").property(JcrConstants.JCR_PRIMARYTYPE).propertyIndex(); defnb.indexRule("oak:TestSuperType").property(JcrConstants.JCR_PRIMARYTYPE).propertyIndex().sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); IndexingRule a = getRule(defn, "oak:TestMixA"); assertNotNull(a.getConfig(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(a.getConfig(JcrConstants.JCR_MIXINTYPES)); assertFalse(a.getConfig(JcrConstants.JCR_MIXINTYPES).sync); IndexingRule b = getRule(defn, "oak:TestSuperType"); assertNotNull(b.getConfig(JcrConstants.JCR_PRIMARYTYPE)); assertNotNull(b.getConfig(JcrConstants.JCR_MIXINTYPES)); assertTrue(b.getConfig(JcrConstants.JCR_PRIMARYTYPE).sync); assertTrue(b.getConfig(JcrConstants.JCR_MIXINTYPES).sync); }
@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 nodeTypeIndexedSync() throws Exception{ TestUtil.registerNodeType(builder, testNodeTypeDefn); root = builder.getNodeState(); IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.nodeTypeIndex(); defnb.indexRule("oak:TestSuperType").sync(); IndexDefinition defn = IndexDefinition.newBuilder(root, defnb.build(), "/foo").build(); assertTrue(defn.hasSyncPropertyDefinitions()); IndexingRule ruleSuper = getRule(defn, "oak:TestSuperType"); assertNotNull(ruleSuper); assertTrue(defn.isPureNodeTypeIndex()); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE).propertyIndex); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_PRIMARYTYPE).sync); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES).propertyIndex); assertTrue(ruleSuper.getConfig(JcrConstants.JCR_MIXINTYPES).sync); assertTrue(ruleSuper.indexesAllNodesOfMatchingType()); }