test_class.file: oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/observation/OakEventFilterImplTest.java
test_class.identifier: OakEventFilterImplTest
test_case.body: @Test
      public void testAddAncestorPaths() throws Exception {
          // parent of / doesnt exist, hence no ancestor path. "" will anyway resolve to "/" in FilterBuilder.getSubTrees()
          assertMatches(new String[] {}, "/");
          
          assertMatches(new String[] {"/*"}, "/*");
          assertMatches(new String[] {"/**"}, "/**");
          assertMatches(new String[] {"/a"}, "/a");
          assertMatches(new String[] {"/a", "/a/b"}, "/a/b");
          assertMatches(new String[] {"/a", "/a/*"}, "/a/*");
          assertMatches(new String[] {"/a", "/a/**"}, "/a/**");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/c"}, "/a/b/c");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/*"}, "/a/b/*");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/**"}, "/a/b/**");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/**"}, "/a/b/**/d");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/**"}, "/a/b/**/d/**");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/**"}, "/a/b/**/d/**/f");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/c", "/a/b/c/d"}, "/a/b/c/d");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/c", "/a/b/c/*"}, "/a/b/c/*");
          assertMatches(new String[] {"/a", "/a/b", "/a/b/c", "/a/b/c/**"}, "/a/b/c/**");
      }
test_case.class_method_signature: OakEventFilterImplTest.testAddAncestorPaths()
test_case.full_signature: @Test public void testAddAncestorPaths()
test_case.identifier: testAddAncestorPaths
test_case.invocations: assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches assertMatches
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testAddAncestorPaths()
focal_class.declarator: delegate
focal_class.modifier: private final
focal_class.original_string: private final JackrabbitEventFilter delegate;
focal_class.type: JackrabbitEventFilter
focal_class.var_name: delegate
focal_class.declarator: applyNodeTypeOnSelf
focal_class.modifier: private
focal_class.original_string: private boolean applyNodeTypeOnSelf;
focal_class.type: boolean
focal_class.var_name: applyNodeTypeOnSelf
focal_class.declarator: includeAncestorRemove
focal_class.modifier: private
focal_class.original_string: private boolean includeAncestorRemove;
focal_class.type: boolean
focal_class.var_name: includeAncestorRemove
focal_class.declarator: includeSubtreeOnRemove
focal_class.modifier: private
focal_class.original_string: private boolean includeSubtreeOnRemove;
focal_class.type: boolean
focal_class.var_name: includeSubtreeOnRemove
focal_class.declarator: globPaths
focal_class.modifier: private
focal_class.original_string: private String[] globPaths;
focal_class.type: String[]
focal_class.var_name: globPaths
focal_class.declarator: builder
focal_class.modifier: private
focal_class.original_string: private FilterBuilder builder;
focal_class.type: FilterBuilder
focal_class.var_name: builder
focal_class.declarator: aggregator
focal_class.modifier: private
focal_class.original_string: private EventAggregator aggregator;
focal_class.type: EventAggregator
focal_class.var_name: aggregator
focal_class.declarator: withNodeTypeAggregate
focal_class.modifier: private
focal_class.original_string: private boolean withNodeTypeAggregate;
focal_class.type: boolean
focal_class.var_name: withNodeTypeAggregate
focal_class.declarator: relativeGlobPaths
focal_class.modifier: private
focal_class.original_string: private Set<String> relativeGlobPaths;
focal_class.type: Set<String>
focal_class.var_name: relativeGlobPaths
focal_class.file: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/OakEventFilterImpl.java
focal_class.identifier: OakEventFilterImpl
focal_class.class_method_signature: OakEventFilterImpl.OakEventFilterImpl(@NotNull JackrabbitEventFilter delegate)
focal_class.full_signature: public  OakEventFilterImpl(@NotNull JackrabbitEventFilter delegate)
focal_class.identifier: OakEventFilterImpl
focal_class.modifiers: public
focal_class.parameters: (@NotNull JackrabbitEventFilter delegate)
focal_class.signature:  OakEventFilterImpl(@NotNull JackrabbitEventFilter delegate)
focal_class.class_method_signature: OakEventFilterImpl.getAbsPath()
focal_class.full_signature: @Override public String getAbsPath()
focal_class.identifier: getAbsPath
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getAbsPath()
focal_class.class_method_signature: OakEventFilterImpl.setAbsPath(String absPath)
focal_class.full_signature: @Override public JackrabbitEventFilter setAbsPath(String absPath)
focal_class.identifier: setAbsPath
focal_class.modifiers: @Override public
focal_class.parameters: (String absPath)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setAbsPath(String absPath)
focal_class.class_method_signature: OakEventFilterImpl.getAdditionalPaths()
focal_class.full_signature: @Override public String[] getAdditionalPaths()
focal_class.identifier: getAdditionalPaths
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getAdditionalPaths()
focal_class.class_method_signature: OakEventFilterImpl.setAdditionalPaths(String... absPaths)
focal_class.full_signature: @Override public JackrabbitEventFilter setAdditionalPaths(String... absPaths)
focal_class.identifier: setAdditionalPaths
focal_class.modifiers: @Override public
focal_class.parameters: (String... absPaths)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setAdditionalPaths(String... absPaths)
focal_class.class_method_signature: OakEventFilterImpl.getEventTypes()
focal_class.full_signature: @Override public int getEventTypes()
focal_class.identifier: getEventTypes
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getEventTypes()
focal_class.class_method_signature: OakEventFilterImpl.setEventTypes(int eventTypes)
focal_class.full_signature: @Override public JackrabbitEventFilter setEventTypes(int eventTypes)
focal_class.identifier: setEventTypes
focal_class.modifiers: @Override public
focal_class.parameters: (int eventTypes)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setEventTypes(int eventTypes)
focal_class.class_method_signature: OakEventFilterImpl.getExcludedPaths()
focal_class.full_signature: @Override public String[] getExcludedPaths()
focal_class.identifier: getExcludedPaths
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getExcludedPaths()
focal_class.class_method_signature: OakEventFilterImpl.setExcludedPaths(String... excludedPaths)
focal_class.full_signature: @Override public JackrabbitEventFilter setExcludedPaths(String... excludedPaths)
focal_class.identifier: setExcludedPaths
focal_class.modifiers: @Override public
focal_class.parameters: (String... excludedPaths)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setExcludedPaths(String... excludedPaths)
focal_class.class_method_signature: OakEventFilterImpl.getIdentifiers()
focal_class.full_signature: @Override public String[] getIdentifiers()
focal_class.identifier: getIdentifiers
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getIdentifiers()
focal_class.class_method_signature: OakEventFilterImpl.setIdentifiers(String[] identifiers)
focal_class.full_signature: @Override public JackrabbitEventFilter setIdentifiers(String[] identifiers)
focal_class.identifier: setIdentifiers
focal_class.modifiers: @Override public
focal_class.parameters: (String[] identifiers)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setIdentifiers(String[] identifiers)
focal_class.class_method_signature: OakEventFilterImpl.getIsDeep()
focal_class.full_signature: @Override public boolean getIsDeep()
focal_class.identifier: getIsDeep
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getIsDeep()
focal_class.class_method_signature: OakEventFilterImpl.setIsDeep(boolean isDeep)
focal_class.full_signature: @Override public JackrabbitEventFilter setIsDeep(boolean isDeep)
focal_class.identifier: setIsDeep
focal_class.modifiers: @Override public
focal_class.parameters: (boolean isDeep)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setIsDeep(boolean isDeep)
focal_class.class_method_signature: OakEventFilterImpl.getNodeTypes()
focal_class.full_signature: @Override public String[] getNodeTypes()
focal_class.identifier: getNodeTypes
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getNodeTypes()
focal_class.class_method_signature: OakEventFilterImpl.setNodeTypes(String[] nodeTypeNames)
focal_class.full_signature: @Override public JackrabbitEventFilter setNodeTypes(String[] nodeTypeNames)
focal_class.identifier: setNodeTypes
focal_class.modifiers: @Override public
focal_class.parameters: (String[] nodeTypeNames)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setNodeTypes(String[] nodeTypeNames)
focal_class.class_method_signature: OakEventFilterImpl.getNoExternal()
focal_class.full_signature: @Override public boolean getNoExternal()
focal_class.identifier: getNoExternal
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getNoExternal()
focal_class.class_method_signature: OakEventFilterImpl.setNoExternal(boolean noExternal)
focal_class.full_signature: @Override public JackrabbitEventFilter setNoExternal(boolean noExternal)
focal_class.identifier: setNoExternal
focal_class.modifiers: @Override public
focal_class.parameters: (boolean noExternal)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setNoExternal(boolean noExternal)
focal_class.class_method_signature: OakEventFilterImpl.getNoInternal()
focal_class.full_signature: @Override public boolean getNoInternal()
focal_class.identifier: getNoInternal
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getNoInternal()
focal_class.class_method_signature: OakEventFilterImpl.setNoInternal(boolean noInternal)
focal_class.full_signature: @Override public JackrabbitEventFilter setNoInternal(boolean noInternal)
focal_class.identifier: setNoInternal
focal_class.modifiers: @Override public
focal_class.parameters: (boolean noInternal)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setNoInternal(boolean noInternal)
focal_class.class_method_signature: OakEventFilterImpl.getNoLocal()
focal_class.full_signature: @Override public boolean getNoLocal()
focal_class.identifier: getNoLocal
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getNoLocal()
focal_class.class_method_signature: OakEventFilterImpl.setNoLocal(boolean noLocal)
focal_class.full_signature: @Override public JackrabbitEventFilter setNoLocal(boolean noLocal)
focal_class.identifier: setNoLocal
focal_class.modifiers: @Override public
focal_class.parameters: (boolean noLocal)
focal_class.return: JackrabbitEventFilter
focal_class.signature: JackrabbitEventFilter setNoLocal(boolean noLocal)
focal_class.class_method_signature: OakEventFilterImpl.withApplyNodeTypeOnSelf()
focal_class.full_signature: @Override public OakEventFilter withApplyNodeTypeOnSelf()
focal_class.identifier: withApplyNodeTypeOnSelf
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: OakEventFilter
focal_class.signature: OakEventFilter withApplyNodeTypeOnSelf()
focal_class.class_method_signature: OakEventFilterImpl.getApplyNodeTypeOnSelf()
focal_class.full_signature:  boolean getApplyNodeTypeOnSelf()
focal_class.identifier: getApplyNodeTypeOnSelf
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getApplyNodeTypeOnSelf()
focal_class.class_method_signature: OakEventFilterImpl.withIncludeAncestorsRemove()
focal_class.full_signature: @Override public OakEventFilter withIncludeAncestorsRemove()
focal_class.identifier: withIncludeAncestorsRemove
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: OakEventFilter
focal_class.signature: OakEventFilter withIncludeAncestorsRemove()
focal_class.class_method_signature: OakEventFilterImpl.getIncludeAncestorsRemove()
focal_class.full_signature:  boolean getIncludeAncestorsRemove()
focal_class.identifier: getIncludeAncestorsRemove
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getIncludeAncestorsRemove()
focal_class.class_method_signature: OakEventFilterImpl.addAncestorPaths(Set<String> ancestorPaths, String globPath)
focal_class.full_signature: static void addAncestorPaths(Set<String> ancestorPaths, String globPath)
focal_class.identifier: addAncestorPaths
focal_class.modifiers: static
focal_class.parameters: (Set<String> ancestorPaths, String globPath)
focal_class.return: void
focal_class.signature: void addAncestorPaths(Set<String> ancestorPaths, String globPath)
focal_class.class_method_signature: OakEventFilterImpl.wrapMainCondition(Condition mainCondition, FilterBuilder filterBuilder, PermissionProviderFactory permissionProviderFactory)
focal_class.full_signature: public Condition wrapMainCondition(Condition mainCondition, FilterBuilder filterBuilder, PermissionProviderFactory permissionProviderFactory)
focal_class.identifier: wrapMainCondition
focal_class.modifiers: public
focal_class.parameters: (Condition mainCondition, FilterBuilder filterBuilder, PermissionProviderFactory permissionProviderFactory)
focal_class.return: Condition
focal_class.signature: Condition wrapMainCondition(Condition mainCondition, FilterBuilder filterBuilder, PermissionProviderFactory permissionProviderFactory)
focal_class.class_method_signature: OakEventFilterImpl.withIncludeSubtreeOnRemove()
focal_class.full_signature: @Override public OakEventFilter withIncludeSubtreeOnRemove()
focal_class.identifier: withIncludeSubtreeOnRemove
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: OakEventFilter
focal_class.signature: OakEventFilter withIncludeSubtreeOnRemove()
focal_class.class_method_signature: OakEventFilterImpl.getIncludeSubtreeOnRemove()
focal_class.full_signature:  boolean getIncludeSubtreeOnRemove()
focal_class.identifier: getIncludeSubtreeOnRemove
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean getIncludeSubtreeOnRemove()
focal_class.class_method_signature: OakEventFilterImpl.withIncludeGlobPaths(String... globPaths)
focal_class.full_signature: @Override public OakEventFilter withIncludeGlobPaths(String... globPaths)
focal_class.identifier: withIncludeGlobPaths
focal_class.modifiers: @Override public
focal_class.parameters: (String... globPaths)
focal_class.return: OakEventFilter
focal_class.signature: OakEventFilter withIncludeGlobPaths(String... globPaths)
focal_class.class_method_signature: OakEventFilterImpl.getIncludeGlobPaths()
focal_class.full_signature:  String[] getIncludeGlobPaths()
focal_class.identifier: getIncludeGlobPaths
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getIncludeGlobPaths()
focal_class.class_method_signature: OakEventFilterImpl.builder()
focal_class.full_signature: public FilterBuilder builder()
focal_class.identifier: builder
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: FilterBuilder
focal_class.signature: FilterBuilder builder()
focal_class.class_method_signature: OakEventFilterImpl.aggregator(EventAggregator aggregator)
focal_class.full_signature: public OakEventFilterImpl aggregator(EventAggregator aggregator)
focal_class.identifier: aggregator
focal_class.modifiers: public
focal_class.parameters: (EventAggregator aggregator)
focal_class.return: OakEventFilterImpl
focal_class.signature: OakEventFilterImpl aggregator(EventAggregator aggregator)
focal_class.class_method_signature: OakEventFilterImpl.getAdditionalIncludeConditions(Set<String> includePaths)
focal_class.full_signature: public Condition getAdditionalIncludeConditions(Set<String> includePaths)
focal_class.identifier: getAdditionalIncludeConditions
focal_class.modifiers: public
focal_class.parameters: (Set<String> includePaths)
focal_class.return: Condition
focal_class.signature: Condition getAdditionalIncludeConditions(Set<String> includePaths)
focal_class.class_method_signature: OakEventFilterImpl.getAggregator()
focal_class.full_signature: public EventAggregator getAggregator()
focal_class.identifier: getAggregator
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: EventAggregator
focal_class.signature: EventAggregator getAggregator()
focal_class.class_method_signature: OakEventFilterImpl.withNodeTypeAggregate(String[] nodeTypes, String[] relativeGlobPaths)
focal_class.full_signature: @Override public OakEventFilter withNodeTypeAggregate(String[] nodeTypes, String[] relativeGlobPaths)
focal_class.identifier: withNodeTypeAggregate
focal_class.modifiers: @Override public
focal_class.parameters: (String[] nodeTypes, String[] relativeGlobPaths)
focal_class.return: OakEventFilter
focal_class.signature: OakEventFilter withNodeTypeAggregate(String[] nodeTypes, String[] relativeGlobPaths)
focal_class.class_method_signature: OakEventFilterImpl.calcPrefilterIncludePaths(Set<String> includePaths)
focal_class.full_signature:  Set<String> calcPrefilterIncludePaths(Set<String> includePaths)
focal_class.identifier: calcPrefilterIncludePaths
focal_class.parameters: (Set<String> includePaths)
focal_class.return: Set<String>
focal_class.signature: Set<String> calcPrefilterIncludePaths(Set<String> includePaths)
focal_class.superclass: extends OakEventFilter
focal_method.body: static void addAncestorPaths(Set<String> ancestorPaths, String globPath) {
          if (globPath == null || !globPath.contains("/")) {
              return;
          }
          // from /a/b/c         => add /a, /a/b, /a/b/c
          // from /a/b/**        => add /a, /a/b, /a/b/**
          // from /a             => add /a
          // from /              => add nothing
          // from /a/b/**/*.html => add /a, /a/b, /a/b/**
          // from /a/b/*/*.html  => add /a, /a/b, /a/b/*, /a/b/*/*.html
          // from /a/b/*/d       => add /a, /a/b, /a/b/*, /a/b/*/d
          // from /a/b/*/d/e     => add /a, /a/b, /a/b/*, /a/b/*/d, /a/b/*/d/e
  
          Iterator<String> it = PathUtils.elements(globPath).iterator();
          StringBuffer sb = new StringBuffer();
          while(it.hasNext()) {
              String element = it.next();
              sb.append("/");
              sb.append(element);
              ancestorPaths.add(sb.toString());
              if (element.equals("**")) {
                  // then we can stop as ** contains everything already
                  break;
              }
          }
      }
focal_method.class_method_signature: OakEventFilterImpl.addAncestorPaths(Set<String> ancestorPaths, String globPath)
focal_method.full_signature: static void addAncestorPaths(Set<String> ancestorPaths, String globPath)
focal_method.identifier: addAncestorPaths
focal_method.invocations: contains iterator elements hasNext next append append add toString equals
focal_method.modifiers: static
focal_method.parameters: (Set<String> ancestorPaths, String globPath)
focal_method.return: void
focal_method.signature: void addAncestorPaths(Set<String> ancestorPaths, String globPath)