test_class.declarator: assertsEnabled
test_class.modifier: static
test_class.original_string: static boolean assertsEnabled;
test_class.type: boolean
test_class.var_name: assertsEnabled
test_class.file: oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/PathUtilsTest.java
test_class.identifier: PathUtilsTest
test_class.superclass: extends TestCase
test_case.body: @Test
      public void testConcatRelativePaths() {
          assertNull(PathUtils.concatRelativePaths("", "", ""));
          assertNull(PathUtils.concatRelativePaths());
  
          assertEquals("a/b/c", PathUtils.concatRelativePaths("a", "b", "c"));
          assertEquals("a/b/c", PathUtils.concatRelativePaths("a", "b/c"));
          assertEquals("a/b/c", PathUtils.concatRelativePaths("a/b/c", ""));
          assertEquals("a/b/c", PathUtils.concatRelativePaths("a/b", "c"));
          assertEquals("a/b/c", PathUtils.concatRelativePaths("/", "a", "", "b/c/"));
      }
test_case.class_method_signature: PathUtilsTest.testConcatRelativePaths()
test_case.full_signature: @Test public void testConcatRelativePaths()
test_case.identifier: testConcatRelativePaths
test_case.invocations: assertNull concatRelativePaths assertNull concatRelativePaths assertEquals concatRelativePaths assertEquals concatRelativePaths assertEquals concatRelativePaths assertEquals concatRelativePaths assertEquals concatRelativePaths
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testConcatRelativePaths()
focal_class.declarator: ROOT_PATH = "/"
focal_class.modifier: public static final
focal_class.original_string: public static final String ROOT_PATH = "/";
focal_class.type: String
focal_class.var_name: ROOT_PATH
focal_class.declarator: ROOT_NAME = ""
focal_class.modifier: public static final
focal_class.original_string: public static final String ROOT_NAME = "";
focal_class.type: String
focal_class.var_name: ROOT_NAME
focal_class.declarator: SNS_PATTERN =
              Pattern.compile("(.+)\\[[1-9][0-9]*\\]$")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern SNS_PATTERN =
              Pattern.compile("(.+)\\[[1-9][0-9]*\\]$");
focal_class.type: Pattern
focal_class.var_name: SNS_PATTERN
focal_class.file: oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/PathUtils.java
focal_class.identifier: PathUtils
focal_class.class_method_signature: PathUtils.PathUtils()
focal_class.full_signature: private  PathUtils()
focal_class.identifier: PathUtils
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  PathUtils()
focal_class.class_method_signature: PathUtils.denotesRoot(String path)
focal_class.full_signature: public static boolean denotesRoot(String path)
focal_class.identifier: denotesRoot
focal_class.modifiers: public static
focal_class.parameters: (String path)
focal_class.return: boolean
focal_class.signature: boolean denotesRoot(String path)
focal_class.class_method_signature: PathUtils.denotesRootPath(String path)
focal_class.full_signature: private static boolean denotesRootPath(String path)
focal_class.identifier: denotesRootPath
focal_class.modifiers: private static
focal_class.parameters: (String path)
focal_class.return: boolean
focal_class.signature: boolean denotesRootPath(String path)
focal_class.class_method_signature: PathUtils.denotesCurrent(String element)
focal_class.full_signature: public static boolean denotesCurrent(String element)
focal_class.identifier: denotesCurrent
focal_class.modifiers: public static
focal_class.parameters: (String element)
focal_class.return: boolean
focal_class.signature: boolean denotesCurrent(String element)
focal_class.class_method_signature: PathUtils.denotesParent(String element)
focal_class.full_signature: public static boolean denotesParent(String element)
focal_class.identifier: denotesParent
focal_class.modifiers: public static
focal_class.parameters: (String element)
focal_class.return: boolean
focal_class.signature: boolean denotesParent(String element)
focal_class.class_method_signature: PathUtils.isAbsolute(String path)
focal_class.full_signature: public static boolean isAbsolute(String path)
focal_class.identifier: isAbsolute
focal_class.modifiers: public static
focal_class.parameters: (String path)
focal_class.return: boolean
focal_class.signature: boolean isAbsolute(String path)
focal_class.class_method_signature: PathUtils.isAbsolutePath(String path)
focal_class.full_signature: private static boolean isAbsolutePath(String path)
focal_class.identifier: isAbsolutePath
focal_class.modifiers: private static
focal_class.parameters: (String path)
focal_class.return: boolean
focal_class.signature: boolean isAbsolutePath(String path)
focal_class.class_method_signature: PathUtils.getParentPath(String path)
focal_class.full_signature: @NotNull public static String getParentPath(String path)
focal_class.identifier: getParentPath
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String path)
focal_class.return: String
focal_class.signature: String getParentPath(String path)
focal_class.class_method_signature: PathUtils.getAncestorPath(String path, int nth)
focal_class.full_signature: @NotNull public static String getAncestorPath(String path, int nth)
focal_class.identifier: getAncestorPath
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String path, int nth)
focal_class.return: String
focal_class.signature: String getAncestorPath(String path, int nth)
focal_class.class_method_signature: PathUtils.getName(String path)
focal_class.full_signature: @NotNull public static String getName(String path)
focal_class.identifier: getName
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String path)
focal_class.return: String
focal_class.signature: String getName(String path)
focal_class.class_method_signature: PathUtils.dropIndexFromName(@NotNull String name)
focal_class.full_signature: @NotNull public static String dropIndexFromName(@NotNull String name)
focal_class.identifier: dropIndexFromName
focal_class.modifiers: @NotNull public static
focal_class.parameters: (@NotNull String name)
focal_class.return: String
focal_class.signature: String dropIndexFromName(@NotNull String name)
focal_class.class_method_signature: PathUtils.getDepth(String path)
focal_class.full_signature: public static int getDepth(String path)
focal_class.identifier: getDepth
focal_class.modifiers: public static
focal_class.parameters: (String path)
focal_class.return: int
focal_class.signature: int getDepth(String path)
focal_class.class_method_signature: PathUtils.elements(final String path)
focal_class.full_signature: @NotNull public static Iterable<String> elements(final String path)
focal_class.identifier: elements
focal_class.modifiers: @NotNull public static
focal_class.parameters: (final String path)
focal_class.return: Iterable<String>
focal_class.signature: Iterable<String> elements(final String path)
focal_class.class_method_signature: PathUtils.concat(String parentPath, String... relativePaths)
focal_class.full_signature: @NotNull public static String concat(String parentPath, String... relativePaths)
focal_class.identifier: concat
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String parentPath, String... relativePaths)
focal_class.return: String
focal_class.signature: String concat(String parentPath, String... relativePaths)
focal_class.class_method_signature: PathUtils.concat(String parentPath, String subPath)
focal_class.full_signature: @NotNull public static String concat(String parentPath, String subPath)
focal_class.identifier: concat
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String parentPath, String subPath)
focal_class.return: String
focal_class.signature: String concat(String parentPath, String subPath)
focal_class.class_method_signature: PathUtils.concatRelativePaths(String... relativePaths)
focal_class.full_signature: @Nullable public static String concatRelativePaths(String... relativePaths)
focal_class.identifier: concatRelativePaths
focal_class.modifiers: @Nullable public static
focal_class.parameters: (String... relativePaths)
focal_class.return: String
focal_class.signature: String concatRelativePaths(String... relativePaths)
focal_class.class_method_signature: PathUtils.isAncestor(String ancestor, String path)
focal_class.full_signature: public static boolean isAncestor(String ancestor, String path)
focal_class.identifier: isAncestor
focal_class.modifiers: public static
focal_class.parameters: (String ancestor, String path)
focal_class.return: boolean
focal_class.signature: boolean isAncestor(String ancestor, String path)
focal_class.class_method_signature: PathUtils.relativize(String parentPath, String path)
focal_class.full_signature: @NotNull public static String relativize(String parentPath, String path)
focal_class.identifier: relativize
focal_class.modifiers: @NotNull public static
focal_class.parameters: (String parentPath, String path)
focal_class.return: String
focal_class.signature: String relativize(String parentPath, String path)
focal_class.class_method_signature: PathUtils.getNextSlash(String path, int index)
focal_class.full_signature: public static int getNextSlash(String path, int index)
focal_class.identifier: getNextSlash
focal_class.modifiers: public static
focal_class.parameters: (String path, int index)
focal_class.return: int
focal_class.signature: int getNextSlash(String path, int index)
focal_class.class_method_signature: PathUtils.validate(String path)
focal_class.full_signature: public static void validate(String path)
focal_class.identifier: validate
focal_class.modifiers: public static
focal_class.parameters: (String path)
focal_class.return: void
focal_class.signature: void validate(String path)
focal_class.class_method_signature: PathUtils.isValid(String path)
focal_class.full_signature: public static boolean isValid(String path)
focal_class.identifier: isValid
focal_class.modifiers: public static
focal_class.parameters: (String path)
focal_class.return: boolean
focal_class.signature: boolean isValid(String path)
focal_class.class_method_signature: PathUtils.unifyInExcludes(Set<String> includePaths, Set<String> excludedPaths)
focal_class.full_signature: public static void unifyInExcludes(Set<String> includePaths, Set<String> excludedPaths)
focal_class.identifier: unifyInExcludes
focal_class.modifiers: public static
focal_class.parameters: (Set<String> includePaths, Set<String> excludedPaths)
focal_class.return: void
focal_class.signature: void unifyInExcludes(Set<String> includePaths, Set<String> excludedPaths)
focal_method.body: @Nullable
      public static String concatRelativePaths(String... relativePaths) {
          StringBuilder result = new StringBuilder();
          for (String path : relativePaths) {
              if (path != null && !path.isEmpty()) {
                  int i0 = 0;
                  int i1 = path.length();
                  while (i0 < i1 && path.charAt(i0) == '/') {
                      i0++;
                  }
                  while (i1 > i0 && path.charAt(i1-1) == '/') {
                      i1--;
                  }
                  if (i1 > i0) {
                      if (result.length() > 0) {
                          result.append('/');
                      }
                      result.append(path.substring(i0, i1));
                  }
              }
          }
          return result.length() == 0 ? null : result.toString();
      }
focal_method.class_method_signature: PathUtils.concatRelativePaths(String... relativePaths)
focal_method.full_signature: @Nullable public static String concatRelativePaths(String... relativePaths)
focal_method.identifier: concatRelativePaths
focal_method.invocations: isEmpty length charAt charAt length append append substring length toString
focal_method.modifiers: @Nullable public static
focal_method.parameters: (String... relativePaths)
focal_method.return: String
focal_method.signature: String concatRelativePaths(String... relativePaths)