test_class.declarator: builderProvider = new DocumentMKBuilderProvider()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public DocumentMKBuilderProvider builderProvider = new DocumentMKBuilderProvider();
test_class.type: DocumentMKBuilderProvider
test_class.var_name: builderProvider
test_class.file: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/BranchTest.java
test_class.identifier: BranchTest
test_case.body: @Test
      public void getModifiedPathsUntil() {
          UnmergedBranches branches = new UnmergedBranches();
  
          RevisionVector base = new RevisionVector(Revision.newRevision(1));
          Revision c1 = Revision.newRevision(1).asBranchRevision();
          Branch b = branches.create(base, c1, null);
  
          BranchCommit bc1 = b.getCommit(c1);
          bc1.track(Path.fromString("/foo"));
  
          Revision c2 = Revision.newRevision(1).asBranchRevision();
          b.addCommit(c2);
          BranchCommit bc2 = b.getCommit(c2);
          bc2.track(Path.fromString("/bar"));
  
          Revision c3 = Revision.newRevision(1).asBranchRevision();
          b.rebase(c3, new RevisionVector(Revision.newRevision(1)));
  
          Revision c4 = Revision.newRevision(1).asBranchRevision();
          b.addCommit(c4);
          BranchCommit bc4 = b.getCommit(c4);
          bc4.track(Path.fromString("/baz"));
  
          Revision c5 = Revision.newRevision(1).asBranchRevision();
  
          try {
              b.getModifiedPathsUntil(Revision.newRevision(1));
              fail("Must fail with IllegalArgumentException");
          } catch (IllegalArgumentException e) {
              // expected
          }
  
          assertModifiedPaths(b.getModifiedPathsUntil(c1), "/foo");
          assertModifiedPaths(b.getModifiedPathsUntil(c2), "/foo", "/bar");
          assertModifiedPaths(b.getModifiedPathsUntil(c3), "/foo", "/bar");
          assertModifiedPaths(b.getModifiedPathsUntil(c4), "/foo", "/bar", "/baz");
          assertModifiedPaths(b.getModifiedPathsUntil(c5));
      }
test_case.class_method_signature: BranchTest.getModifiedPathsUntil()
test_case.full_signature: @Test public void getModifiedPathsUntil()
test_case.identifier: getModifiedPathsUntil
test_case.invocations: newRevision asBranchRevision newRevision create getCommit track fromString asBranchRevision newRevision addCommit getCommit track fromString asBranchRevision newRevision rebase newRevision asBranchRevision newRevision addCommit getCommit track fromString asBranchRevision newRevision getModifiedPathsUntil newRevision fail assertModifiedPaths getModifiedPathsUntil assertModifiedPaths getModifiedPathsUntil assertModifiedPaths getModifiedPathsUntil assertModifiedPaths getModifiedPathsUntil assertModifiedPaths getModifiedPathsUntil
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void getModifiedPathsUntil()
focal_class.declarator: commits
focal_class.modifier: private final
focal_class.original_string: private final ConcurrentSkipListMap<Revision, BranchCommit> commits;
focal_class.type: ConcurrentSkipListMap<Revision, BranchCommit>
focal_class.var_name: commits
focal_class.declarator: base
focal_class.modifier: private final
focal_class.original_string: private final RevisionVector base;
focal_class.type: RevisionVector
focal_class.var_name: base
focal_class.declarator: ref
focal_class.modifier: private final
focal_class.original_string: private final BranchReference ref;
focal_class.type: BranchReference
focal_class.var_name: ref
focal_class.file: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Branch.java
focal_class.identifier: Branch
focal_class.class_method_signature: Branch.Branch(@NotNull SortedSet<Revision> commits,
             @NotNull RevisionVector base,
             @NotNull ReferenceQueue<Object> queue,
             @Nullable Object guard)
focal_class.full_signature:   Branch(@NotNull SortedSet<Revision> commits,
             @NotNull RevisionVector base,
             @NotNull ReferenceQueue<Object> queue,
             @Nullable Object guard)
focal_class.identifier: Branch
focal_class.parameters: (@NotNull SortedSet<Revision> commits,
             @NotNull RevisionVector base,
             @NotNull ReferenceQueue<Object> queue,
             @Nullable Object guard)
focal_class.signature:  Branch(@NotNull SortedSet<Revision> commits,
             @NotNull RevisionVector base,
             @NotNull ReferenceQueue<Object> queue,
             @Nullable Object guard)
focal_class.class_method_signature: Branch.getBase()
focal_class.full_signature: @NotNull RevisionVector getBase()
focal_class.identifier: getBase
focal_class.modifiers: @NotNull
focal_class.parameters: ()
focal_class.return: RevisionVector
focal_class.signature: RevisionVector getBase()
focal_class.class_method_signature: Branch.getBase(@NotNull Revision r)
focal_class.full_signature: @NotNull RevisionVector getBase(@NotNull Revision r)
focal_class.identifier: getBase
focal_class.modifiers: @NotNull
focal_class.parameters: (@NotNull Revision r)
focal_class.return: RevisionVector
focal_class.signature: RevisionVector getBase(@NotNull Revision r)
focal_class.class_method_signature: Branch.rebase(@NotNull Revision head, @NotNull RevisionVector base)
focal_class.full_signature:  void rebase(@NotNull Revision head, @NotNull RevisionVector base)
focal_class.identifier: rebase
focal_class.parameters: (@NotNull Revision head, @NotNull RevisionVector base)
focal_class.return: void
focal_class.signature: void rebase(@NotNull Revision head, @NotNull RevisionVector base)
focal_class.class_method_signature: Branch.addCommit(@NotNull Revision r)
focal_class.full_signature:  void addCommit(@NotNull Revision r)
focal_class.identifier: addCommit
focal_class.parameters: (@NotNull Revision r)
focal_class.return: void
focal_class.signature: void addCommit(@NotNull Revision r)
focal_class.class_method_signature: Branch.getCommits()
focal_class.full_signature:  SortedSet<Revision> getCommits()
focal_class.identifier: getCommits
focal_class.parameters: ()
focal_class.return: SortedSet<Revision>
focal_class.signature: SortedSet<Revision> getCommits()
focal_class.class_method_signature: Branch.hasCommits()
focal_class.full_signature:  boolean hasCommits()
focal_class.identifier: hasCommits
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasCommits()
focal_class.class_method_signature: Branch.containsCommit(@NotNull Revision r)
focal_class.full_signature:  boolean containsCommit(@NotNull Revision r)
focal_class.identifier: containsCommit
focal_class.parameters: (@NotNull Revision r)
focal_class.return: boolean
focal_class.signature: boolean containsCommit(@NotNull Revision r)
focal_class.class_method_signature: Branch.getCommit(@NotNull Revision r)
focal_class.full_signature: @Nullable BranchCommit getCommit(@NotNull Revision r)
focal_class.identifier: getCommit
focal_class.modifiers: @Nullable
focal_class.parameters: (@NotNull Revision r)
focal_class.return: BranchCommit
focal_class.signature: BranchCommit getCommit(@NotNull Revision r)
focal_class.class_method_signature: Branch.getRef()
focal_class.full_signature: @Nullable BranchReference getRef()
focal_class.identifier: getRef
focal_class.modifiers: @Nullable
focal_class.parameters: ()
focal_class.return: BranchReference
focal_class.signature: BranchReference getRef()
focal_class.class_method_signature: Branch.removeCommit(@NotNull Revision r)
focal_class.full_signature: public void removeCommit(@NotNull Revision r)
focal_class.identifier: removeCommit
focal_class.modifiers: public
focal_class.parameters: (@NotNull Revision r)
focal_class.return: void
focal_class.signature: void removeCommit(@NotNull Revision r)
focal_class.class_method_signature: Branch.applyTo(@NotNull UnsavedModifications trunk,
                          @NotNull Revision mergeCommit)
focal_class.full_signature: public void applyTo(@NotNull UnsavedModifications trunk,
                          @NotNull Revision mergeCommit)
focal_class.identifier: applyTo
focal_class.modifiers: public
focal_class.parameters: (@NotNull UnsavedModifications trunk,
                          @NotNull Revision mergeCommit)
focal_class.return: void
focal_class.signature: void applyTo(@NotNull UnsavedModifications trunk,
                          @NotNull Revision mergeCommit)
focal_class.class_method_signature: Branch.getUnsavedLastRevision(Path path,
                                             Revision readRevision)
focal_class.full_signature: @Nullable public Revision getUnsavedLastRevision(Path path,
                                             Revision readRevision)
focal_class.identifier: getUnsavedLastRevision
focal_class.modifiers: @Nullable public
focal_class.parameters: (Path path,
                                             Revision readRevision)
focal_class.return: Revision
focal_class.signature: Revision getUnsavedLastRevision(Path path,
                                             Revision readRevision)
focal_class.class_method_signature: Branch.isHead(@NotNull Revision rev)
focal_class.full_signature: public boolean isHead(@NotNull Revision rev)
focal_class.identifier: isHead
focal_class.modifiers: public
focal_class.parameters: (@NotNull Revision rev)
focal_class.return: boolean
focal_class.signature: boolean isHead(@NotNull Revision rev)
focal_class.class_method_signature: Branch.getModifiedPathsUntil(@NotNull final Revision r)
focal_class.full_signature:  Iterable<Path> getModifiedPathsUntil(@NotNull final Revision r)
focal_class.identifier: getModifiedPathsUntil
focal_class.parameters: (@NotNull final Revision r)
focal_class.return: Iterable<Path>
focal_class.signature: Iterable<Path> getModifiedPathsUntil(@NotNull final Revision r)
focal_class.class_method_signature: Branch.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_method.body: Iterable<Path> getModifiedPathsUntil(@NotNull final Revision r) {
          checkArgument(checkNotNull(r).isBranch(),
                  "Not a branch revision: %s", r);
          if (!commits.containsKey(r)) {
              return Collections.emptyList();
          }
          Iterable<Iterable<Path>> paths = transform(filter(commits.entrySet(),
                  new Predicate<Map.Entry<Revision, BranchCommit>>() {
              @Override
              public boolean apply(Map.Entry<Revision, BranchCommit> input) {
                  return !input.getValue().isRebase()
                          && input.getKey().compareRevisionTime(r) <= 0;
              }
          }), new Function<Map.Entry<Revision, BranchCommit>, Iterable<Path>>() {
              @Override
              public Iterable<Path> apply(Map.Entry<Revision, BranchCommit> input) {
                  return input.getValue().getModifiedPaths();
              }
          });
          return Iterables.concat(paths);
      }
focal_method.class_method_signature: Branch.getModifiedPathsUntil(@NotNull final Revision r)
focal_method.full_signature:  Iterable<Path> getModifiedPathsUntil(@NotNull final Revision r)
focal_method.identifier: getModifiedPathsUntil
focal_method.invocations: checkArgument isBranch checkNotNull containsKey emptyList transform filter entrySet isRebase getValue compareRevisionTime getKey getModifiedPaths getValue concat
focal_method.parameters: (@NotNull final Revision r)
focal_method.return: Iterable<Path>
focal_method.signature: Iterable<Path> getModifiedPathsUntil(@NotNull final Revision r)