private boolean areAllTypesIndexed() { IndexingRule ntBaseRule = getApplicableIndexingRule(NT_BASE); return ntBaseRule != null; }
private PropertyDefinition pd(String propName){ IndexDefinition defn = new IndexDefinition(root, defnb.build(), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); } }
private PropertyDefinition pd(String propName){ IndexDefinition defn = new IndexDefinition(root, defnb.build(), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); }
private PropertyDefinition pd(String propName){ IndexDefinition defn = new IndexDefinition(root, defnb.build(), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); }
private PropertyDefinition pd(String indexPath, String propName){ NodeState root = nodeStore.getRoot(); IndexDefinition defn = new IndexDefinition(root, getNode(root, indexPath), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); }
@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 indexRuleMixinInheritance() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.child("mix:mimeType"); TestUtil.child(rules, "mix:mimeType/properties/jcr:mimeType") .setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder", "mix:mimeType")))); assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder")))); //nt:resource > mix:mimeType assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:resource")))); }
@Test public void indexRuleInheritance() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); builder.setProperty(PROP_NAME, "testIndex"); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:base")))); assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:hierarchyNode")))); assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder")))); }
@Test public void indexRuleInheritanceDisabled() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); builder.setProperty(PROP_NAME, "testIndex"); rules.child("nt:hierarchyNode") .setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0) .setProperty(FulltextIndexConstants.RULE_INHERITED, false); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:base")))); assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:hierarchyNode")))); assertNull("nt:folder should not be index as rule is not inheritable", defn.getApplicableIndexingRule(asState(newNode("nt:folder")))); }
@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 indexRuleMixin() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.child("mix:title"); TestUtil.child(rules, "mix:title/properties/jcr:title") .setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertNotNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder", "mix:title")))); assertNull(defn.getApplicableIndexingRule(asState(newNode("nt:folder")))); }
@Test public void nullCheckEnabledWithTestNode() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); TestUtil.child(rules, "oak:TestNode/properties/prop2") .setProperty(PROP_NAME, "foo") .setProperty(FulltextIndexConstants.PROP_NULL_CHECK_ENABLED, true); root = registerTestNodeType(builder).getNodeState(); IndexDefinition idxDefn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertTrue(!idxDefn.getApplicableIndexingRule(TestUtil.NT_TEST).getNullCheckEnabledProperties().isEmpty()); }
@Test public void notNullCheckEnabledWithTestNode() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); TestUtil.child(rules, "oak:TestNode/properties/prop2") .setProperty(PROP_NAME, "foo") .setProperty(FulltextIndexConstants.PROP_NOT_NULL_CHECK_ENABLED, true); root = registerTestNodeType(builder).getNodeState(); IndexDefinition idxDefn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertTrue(!idxDefn.getApplicableIndexingRule(TestUtil.NT_TEST).getNotNullCheckEnabledProperties().isEmpty()); }
@Test public void propertyRegExAndRelativeProperty() throws Exception{ NodeBuilder defnb = newFTIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo", "lucene", of(TYPENAME_STRING), of("foo"), "async"); IndexDefinition defn = new IndexDefinition(root, defnb.getNodeState(), "/foo"); assertTrue(defn.isOfOldFormat()); NodeBuilder updated = IndexDefinition.updateDefinition(defnb.getNodeState().builder()); IndexDefinition defn2 = new IndexDefinition(root, updated.getNodeState(), "/foo"); IndexingRule rule = defn2.getApplicableIndexingRule(asState(newNode("nt:base"))); assertNotNull(rule.getConfig("foo")); assertNull("Property regex used should not allow relative properties", rule.getConfig("foo/bar")); }
@Test public void propertyDefinition() throws Exception{ builder.child(PROP_NODE).child("foo").setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_DATE); builder.setProperty(createProperty(INCLUDE_PROPERTY_NAMES, of("foo" , "bar"), STRINGS)); IndexDefinition idxDefn = new IndexDefinition(root, builder.getNodeState(), "/foo"); IndexDefinition.IndexingRule rule = idxDefn.getApplicableIndexingRule(NT_BASE); assertTrue(rule.isIndexed("foo")); assertTrue(rule.isIndexed("bar")); assertEquals(PropertyType.DATE, rule.getConfig("foo").getType()); }
@Test public void propertyDefinitionWithExcludes() throws Exception{ builder.child(PROP_NODE).child("foo").setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_DATE); IndexDefinition idxDefn = new IndexDefinition(root, builder.getNodeState(), "/foo"); IndexDefinition.IndexingRule rule = idxDefn.getApplicableIndexingRule(NT_BASE); assertTrue(rule.isIndexed("foo")); assertTrue(rule.isIndexed("bar")); assertEquals(PropertyType.DATE, rule.getConfig("foo").getType()); }
@Test public void fullTextEnabled() throws Exception{ IndexDefinition idxDefn = new IndexDefinition(root, builder.getNodeState(), "/foo"); IndexDefinition.IndexingRule rule = idxDefn.getApplicableIndexingRule(NT_BASE); assertTrue("By default fulltext is enabled", idxDefn.isFullTextEnabled()); assertTrue("By default everything is indexed", rule.isIndexed("foo")); assertTrue("Property types need to be defined", rule.includePropertyType(PropertyType.DATE)); assertTrue("For fulltext storage is enabled", rule.getConfig("foo").stored); assertFalse(rule.getConfig("foo").skipTokenization("foo")); assertTrue(rule.getConfig("jcr:uuid").skipTokenization("jcr:uuid")); }
@Test public void skipTokenization() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.child("nt:folder"); TestUtil.child(rules, "nt:folder/properties/prop2") .setProperty(PROP_NAME, ".*") .setProperty(FulltextIndexConstants.PROP_IS_REGEX, true) .setProperty(FulltextIndexConstants.PROP_ANALYZED, true); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder"))); assertFalse(rule.getConfig("foo").skipTokenization("foo")); assertTrue(rule.getConfig(JcrConstants.JCR_UUID).skipTokenization(JcrConstants.JCR_UUID)); }