public void collectAggregates(NodeState root, ResultCollector collector) { if (matchingType(nodeTypeName, root)) { List<Matcher> matchers = createMatchers(); collectAggregates(root, matchers, collector); } }
@Override public void enter(NodeState before, NodeState after) { if (EmptyNodeState.MISSING_NODE == before && parent == null){ context.enableReindexMode(); } //Only check for indexing if the result is include. //In case like TRAVERSE nothing needs to be indexed for those //path if (pathFilterResult == PathFilter.Result.INCLUDE) { //For traversal in deleted sub tree before state has to be used NodeState current = after.exists() ? after : before; indexingRule = getDefinition().getApplicableIndexingRule(current); if (indexingRule != null) { currentMatchers = indexingRule.getAggregate().createMatchers(this); } } }
@Override public void enter(NodeState before, NodeState after) throws CommitFailedException { if (EmptyNodeState.MISSING_NODE == before && parent == null){ context.enableReindexMode(); } //Only check for indexing if the result is include. //In case like TRAVERSE nothing needs to be indexed for those //path if (pathFilterResult == PathFilter.Result.INCLUDE) { //For traversal in deleted sub tree before state has to be used NodeState current = after.exists() ? after : before; indexingRule = getDefinition().getApplicableIndexingRule(current); if (indexingRule != null) { currentMatchers = indexingRule.getAggregate().createMatchers(this); } } }
@Override public void enter(NodeState before, NodeState after) throws CommitFailedException { if (EmptyNodeState.MISSING_NODE == before && parent == null){ context.enableReindexMode(); } //Only check for indexing if the result is include. //In case like TRAVERSE nothing needs to be indexed for those //path if (pathFilterResult == PathFilter.Result.INCLUDE) { //For traversal in deleted sub tree before state has to be used NodeState current = after.exists() ? after : before; indexingRule = getDefinition().getApplicableIndexingRule(current); if (indexingRule != null) { currentMatchers = indexingRule.getAggregate().createMatchers(this); } } }
@Test public void regexAllProps() { IndexDefinitionBuilder builder = new IndexDefinitionBuilder(); builder.indexRule("nt:base").property("p"); builder.indexRule("nt:base").property("all", FulltextIndexConstants.REGEX_ALL_PROPS, true); IndexDefinition def = IndexDefinition.newBuilder(root, builder.build(), "/foo").build(); IndexingRule rule = def.getApplicableIndexingRule(root); assertNotNull(rule); PropertyDefinition pd = rule.getConfig("p"); assertNotNull(pd); assertFalse(pd.isRegexp); assertFalse(pd.relative); assertEquals(0, pd.ancestors.length); pd = rule.getConfig("all"); assertNotNull(pd); assertTrue(pd.isRegexp); assertFalse(pd.relative); assertEquals(0, pd.ancestors.length); assertThat(rule.getAggregate().getIncludes(), is(empty())); assertFalse(rule.getAggregate().hasNodeAggregates()); List<Aggregate.Matcher> matchers = rule.getAggregate() .createMatchers(new TestRoot("/")); assertThat(matchers, is(empty())); assertThat(def.getRelativeNodeNames(), is(empty())); }
@Test public void regexAllProps() { IndexDefinitionBuilder builder = new IndexDefinitionBuilder(); builder.indexRule("nt:base").property("p"); builder.indexRule("nt:base").property("all", FulltextIndexConstants.REGEX_ALL_PROPS, true); IndexDefinition def = IndexDefinition.newBuilder(root, builder.build(), "/foo").build(); IndexingRule rule = def.getApplicableIndexingRule(root); assertNotNull(rule); PropertyDefinition pd = rule.getConfig("p"); assertNotNull(pd); assertFalse(pd.isRegexp); assertFalse(pd.relative); assertEquals(0, pd.ancestors.length); pd = rule.getConfig("all"); assertNotNull(pd); assertTrue(pd.isRegexp); assertFalse(pd.relative); assertEquals(0, pd.ancestors.length); assertThat(rule.getAggregate().getIncludes(), is(empty())); assertFalse(rule.getAggregate().hasNodeAggregates()); List<Aggregate.Matcher> matchers = rule.getAggregate() .createMatchers(new TestRoot("/")); assertThat(matchers, is(empty())); assertThat(def.getRelativeNodeNames(), is(empty())); }