@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 propertyRegExAndRelativeProperty() throws Exception{ NodeBuilder defnb = newLuceneIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "lucene", of(TYPENAME_STRING), of("foo"), "async"); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, defnb.getNodeState(), "/foo"); assertTrue(defn.isOfOldFormat()); NodeBuilder updated = IndexDefinition.updateDefinition(defnb.getNodeState().builder()); LuceneIndexDefinition defn2 = new LuceneIndexDefinition(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 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)); }
private PropertyDefinition pd(String propName){ IndexDefinition defn = new IndexDefinition(root, defnb.build(), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); }
@Test public void relativePropertyConfig() throws Exception{ builder.child(PROP_NODE).child("foo1").child("bar").setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_DATE); builder.child(PROP_NODE).child("foo2").child("bar2").child("baz").setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_LONG); builder.setProperty(createProperty(INCLUDE_PROPERTY_NAMES, of("foo", "foo1/bar", "foo2/bar2/baz"), STRINGS)); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); IndexingRule rule = defn.getApplicableIndexingRule(asState(newNode("nt:folder"))); assertNotNull(rule.getConfig("foo1/bar")); assertEquals(PropertyType.DATE, rule.getConfig("foo1/bar").getType()); assertEquals(PropertyType.LONG, rule.getConfig("foo2/bar2/baz").getType()); assertTrue(rule.getConfig("foo1/bar").relative); assertArrayEquals(new String[]{"foo2", "bar2"}, rule.getConfig("foo2/bar2/baz").ancestors); }
@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); LuceneIndexDefinition defn = new LuceneIndexDefinition(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)); }
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 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)); LuceneIndexDefinition idxDefn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); IndexingRule rule = idxDefn.getApplicableIndexingRule(NT_BASE); assertTrue(rule.isIndexed("foo")); assertTrue(rule.isIndexed("bar")); assertEquals(PropertyType.DATE, rule.getConfig("foo").getType()); }
@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 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()); }
/** * Returns <code>true</code> if the property with the given name is * indexed according to this rule. * * @param propertyName the name of a property. * @return <code>true</code> if the property is indexed; * <code>false</code> otherwise. */ public boolean isIndexed(String propertyName) { return getConfig(propertyName) != null; }
@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 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 propertyDefinitionWithExcludes() throws Exception{ builder.child(PROP_NODE).child("foo").setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_DATE); LuceneIndexDefinition idxDefn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); 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{ LuceneIndexDefinition idxDefn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); 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 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")); }
private PropertyDefinition pd(String propName){ IndexDefinition defn = new IndexDefinition(root, defnb.build(), indexPath); return defn.getApplicableIndexingRule("nt:base").getConfig(propName); } }