test_class.file: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java
test_class.identifier: JournalEntryTest
test_case.body: @Test
      public void fillExternalChanges() throws Exception {
          DocumentStore store = new MemoryDocumentStore();
          JournalEntry entry = JOURNAL.newDocument(store);
          Set<Path> paths = Sets.newHashSet();
          addRandomPaths(paths);
          entry.modified(paths);
          Revision r1 = new Revision(1, 0, 1);
          Revision r2 = new Revision(2, 0, 1);
          Revision r3 = new Revision(3, 0, 1);
          UpdateOp op = entry.asUpdateOp(r2);
          assertTrue(store.create(JOURNAL, Collections.singletonList(op)));
  
          StringSort sort = JournalEntry.newSorter();
          StringSort inv = JournalEntry.newSorter();
          JournalEntry.fillExternalChanges(sort, inv, r2, r3, store);
          assertEquals(0, sort.getSize());
          assertEquals(0, inv.getSize());
  
          JournalEntry.fillExternalChanges(sort, inv, r1, r2, store);
          assertEquals(paths.size(), sort.getSize());
          assertEquals(0, inv.getSize());
          sort.close();
  
          sort = JournalEntry.newSorter();
          JournalEntry.fillExternalChanges(sort, inv, r1, r3, store);
          assertEquals(paths.size(), sort.getSize());
          assertEquals(0, inv.getSize());
          sort.close();
          inv.close();
      }
test_case.class_method_signature: JournalEntryTest.fillExternalChanges()
test_case.full_signature: @Test public void fillExternalChanges()
test_case.identifier: fillExternalChanges
test_case.invocations: newDocument newHashSet addRandomPaths modified asUpdateOp assertTrue create singletonList newSorter newSorter fillExternalChanges assertEquals getSize assertEquals getSize fillExternalChanges assertEquals size getSize assertEquals getSize close newSorter fillExternalChanges assertEquals size getSize assertEquals getSize close close
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void fillExternalChanges()
focal_class.declarator: LOG = LoggerFactory.getLogger(JournalEntry.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(JournalEntry.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: REVISION_FORMAT = "%d-%0" +
              Long.toHexString(Long.MAX_VALUE).length() + "x-%0" +
              Integer.toHexString(Integer.MAX_VALUE).length() + "x"
focal_class.modifier: private static final
focal_class.original_string: private static final String REVISION_FORMAT = "%d-%0" +
              Long.toHexString(Long.MAX_VALUE).length() + "x-%0" +
              Integer.toHexString(Integer.MAX_VALUE).length() + "x";
focal_class.type: String
focal_class.var_name: REVISION_FORMAT
focal_class.declarator: CHANGES = "_c"
focal_class.modifier: private static final
focal_class.original_string: private static final String CHANGES = "_c";
focal_class.type: String
focal_class.var_name: CHANGES
focal_class.declarator: CHANGE_SET = "_cs"
focal_class.modifier: private static final
focal_class.original_string: private static final String CHANGE_SET = "_cs";
focal_class.type: String
focal_class.var_name: CHANGE_SET
focal_class.declarator: BRANCH_COMMITS = "_bc"
focal_class.modifier: static final
focal_class.original_string: static final String BRANCH_COMMITS = "_bc";
focal_class.type: String
focal_class.var_name: BRANCH_COMMITS
focal_class.declarator: INVALIDATE_ONLY = "_inv"
focal_class.modifier: private static final
focal_class.original_string: private static final String INVALIDATE_ONLY = "_inv";
focal_class.type: String
focal_class.var_name: INVALIDATE_ONLY
focal_class.declarator: MODIFIED = "_modified"
focal_class.modifier: public static final
focal_class.original_string: public static final String MODIFIED = "_modified";
focal_class.type: String
focal_class.var_name: MODIFIED
focal_class.declarator: READ_CHUNK_SIZE = 100
focal_class.modifier: private static final
focal_class.original_string: private static final int READ_CHUNK_SIZE = 100;
focal_class.type: int
focal_class.var_name: READ_CHUNK_SIZE
focal_class.declarator: STRING_SORT_OVERFLOW_TO_DISK_THRESHOLD
              = Integer.getInteger("oak.overflowToDiskThreshold", StringSort.BATCH_SIZE)
focal_class.modifier: private static final
focal_class.original_string: private static final int STRING_SORT_OVERFLOW_TO_DISK_THRESHOLD
              = Integer.getInteger("oak.overflowToDiskThreshold", StringSort.BATCH_SIZE);
focal_class.type: int
focal_class.var_name: STRING_SORT_OVERFLOW_TO_DISK_THRESHOLD
focal_class.declarator: store
focal_class.modifier: private final
focal_class.original_string: private final DocumentStore store;
focal_class.type: DocumentStore
focal_class.var_name: store
focal_class.declarator: changeSetBuilder
focal_class.modifier: private final
focal_class.original_string: private final ChangeSetBuilder changeSetBuilder;
focal_class.type: ChangeSetBuilder
focal_class.var_name: changeSetBuilder
focal_class.declarator: journalPropertyHandler
focal_class.modifier: private final
focal_class.original_string: private final JournalPropertyHandler journalPropertyHandler;
focal_class.type: JournalPropertyHandler
focal_class.var_name: journalPropertyHandler
focal_class.declarator: changes = null
focal_class.modifier: private volatile
focal_class.original_string: private volatile TreeNode changes = null;
focal_class.type: TreeNode
focal_class.var_name: changes
focal_class.declarator: numChangedNodes = 0
focal_class.modifier: private volatile
focal_class.original_string: private volatile int numChangedNodes = 0;
focal_class.type: int
focal_class.var_name: numChangedNodes
focal_class.declarator: hasBranchCommits = false
focal_class.modifier: private
focal_class.original_string: private boolean hasBranchCommits = false;
focal_class.type: boolean
focal_class.var_name: hasBranchCommits
focal_class.declarator: concurrent
focal_class.modifier: private
focal_class.original_string: private boolean concurrent;
focal_class.type: boolean
focal_class.var_name: concurrent
focal_class.file: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
focal_class.identifier: JournalEntry
focal_class.class_method_signature: JournalEntry.JournalEntry(DocumentStore store)
focal_class.full_signature:   JournalEntry(DocumentStore store)
focal_class.identifier: JournalEntry
focal_class.parameters: (DocumentStore store)
focal_class.signature:  JournalEntry(DocumentStore store)
focal_class.class_method_signature: JournalEntry.JournalEntry(DocumentStore store, boolean concurrent, ChangeSetBuilder changeSetBuilder,
                   JournalPropertyHandler journalPropertyHandler)
focal_class.full_signature:   JournalEntry(DocumentStore store, boolean concurrent, ChangeSetBuilder changeSetBuilder,
                   JournalPropertyHandler journalPropertyHandler)
focal_class.identifier: JournalEntry
focal_class.parameters: (DocumentStore store, boolean concurrent, ChangeSetBuilder changeSetBuilder,
                   JournalPropertyHandler journalPropertyHandler)
focal_class.signature:  JournalEntry(DocumentStore store, boolean concurrent, ChangeSetBuilder changeSetBuilder,
                   JournalPropertyHandler journalPropertyHandler)
focal_class.class_method_signature: JournalEntry.newSorter()
focal_class.full_signature: static StringSort newSorter()
focal_class.identifier: newSorter
focal_class.modifiers: static
focal_class.parameters: ()
focal_class.return: StringSort
focal_class.signature: StringSort newSorter()
focal_class.class_method_signature: JournalEntry.applyTo(@NotNull Iterable<String> changedPaths,
                          @NotNull DiffCache diffCache,
                          @NotNull Path path,
                          @NotNull RevisionVector from,
                          @NotNull RevisionVector to)
focal_class.full_signature: static void applyTo(@NotNull Iterable<String> changedPaths,
                          @NotNull DiffCache diffCache,
                          @NotNull Path path,
                          @NotNull RevisionVector from,
                          @NotNull RevisionVector to)
focal_class.identifier: applyTo
focal_class.modifiers: static
focal_class.parameters: (@NotNull Iterable<String> changedPaths,
                          @NotNull DiffCache diffCache,
                          @NotNull Path path,
                          @NotNull RevisionVector from,
                          @NotNull RevisionVector to)
focal_class.return: void
focal_class.signature: void applyTo(@NotNull Iterable<String> changedPaths,
                          @NotNull DiffCache diffCache,
                          @NotNull Path path,
                          @NotNull RevisionVector from,
                          @NotNull RevisionVector to)
focal_class.class_method_signature: JournalEntry.inScope(TreeNode node, Path path)
focal_class.full_signature: private static boolean inScope(TreeNode node, Path path)
focal_class.identifier: inScope
focal_class.modifiers: private static
focal_class.parameters: (TreeNode node, Path path)
focal_class.return: boolean
focal_class.signature: boolean inScope(TreeNode node, Path path)
focal_class.class_method_signature: JournalEntry.fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_class.full_signature: static int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_class.identifier: fillExternalChanges
focal_class.modifiers: static
focal_class.parameters: (@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_class.return: int
focal_class.signature: int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_class.class_method_signature: JournalEntry.fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Path path,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store,
                                     @NotNull Consumer<JournalEntry> journalEntryConsumer,
                                     @Nullable ChangeSetBuilder changeSetBuilder,
                                     @Nullable JournalPropertyHandler journalPropertyHandler)
focal_class.full_signature: static int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Path path,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store,
                                     @NotNull Consumer<JournalEntry> journalEntryConsumer,
                                     @Nullable ChangeSetBuilder changeSetBuilder,
                                     @Nullable JournalPropertyHandler journalPropertyHandler)
focal_class.identifier: fillExternalChanges
focal_class.modifiers: static
focal_class.parameters: (@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Path path,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store,
                                     @NotNull Consumer<JournalEntry> journalEntryConsumer,
                                     @Nullable ChangeSetBuilder changeSetBuilder,
                                     @Nullable JournalPropertyHandler journalPropertyHandler)
focal_class.return: int
focal_class.signature: int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Path path,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store,
                                     @NotNull Consumer<JournalEntry> journalEntryConsumer,
                                     @Nullable ChangeSetBuilder changeSetBuilder,
                                     @Nullable JournalPropertyHandler journalPropertyHandler)
focal_class.class_method_signature: JournalEntry.fillFromJournalEntry(@NotNull StringSort externalChanges,
                                               @NotNull StringSort invalidate,
                                               @NotNull Path path,
                                               @Nullable ChangeSetBuilder changeSetBuilder,
                                               @Nullable JournalPropertyHandler journalPropertyHandler,
                                               @NotNull JournalEntry d,
                                               @NotNull Consumer<JournalEntry> journalEntryConsumer)
focal_class.full_signature: private static void fillFromJournalEntry(@NotNull StringSort externalChanges,
                                               @NotNull StringSort invalidate,
                                               @NotNull Path path,
                                               @Nullable ChangeSetBuilder changeSetBuilder,
                                               @Nullable JournalPropertyHandler journalPropertyHandler,
                                               @NotNull JournalEntry d,
                                               @NotNull Consumer<JournalEntry> journalEntryConsumer)
focal_class.identifier: fillFromJournalEntry
focal_class.modifiers: private static
focal_class.parameters: (@NotNull StringSort externalChanges,
                                               @NotNull StringSort invalidate,
                                               @NotNull Path path,
                                               @Nullable ChangeSetBuilder changeSetBuilder,
                                               @Nullable JournalPropertyHandler journalPropertyHandler,
                                               @NotNull JournalEntry d,
                                               @NotNull Consumer<JournalEntry> journalEntryConsumer)
focal_class.return: void
focal_class.signature: void fillFromJournalEntry(@NotNull StringSort externalChanges,
                                               @NotNull StringSort invalidate,
                                               @NotNull Path path,
                                               @Nullable ChangeSetBuilder changeSetBuilder,
                                               @Nullable JournalPropertyHandler journalPropertyHandler,
                                               @NotNull JournalEntry d,
                                               @NotNull Consumer<JournalEntry> journalEntryConsumer)
focal_class.class_method_signature: JournalEntry.getRevisionTimestamp()
focal_class.full_signature:  long getRevisionTimestamp()
focal_class.identifier: getRevisionTimestamp
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getRevisionTimestamp()
focal_class.class_method_signature: JournalEntry.modified(Path path)
focal_class.full_signature:  void modified(Path path)
focal_class.identifier: modified
focal_class.parameters: (Path path)
focal_class.return: void
focal_class.signature: void modified(Path path)
focal_class.class_method_signature: JournalEntry.modified(Iterable<Path> paths)
focal_class.full_signature:  void modified(Iterable<Path> paths)
focal_class.identifier: modified
focal_class.parameters: (Iterable<Path> paths)
focal_class.return: void
focal_class.signature: void modified(Iterable<Path> paths)
focal_class.class_method_signature: JournalEntry.addChangeSet(@Nullable ChangeSet changeSet)
focal_class.full_signature:  void addChangeSet(@Nullable ChangeSet changeSet)
focal_class.identifier: addChangeSet
focal_class.parameters: (@Nullable ChangeSet changeSet)
focal_class.return: void
focal_class.signature: void addChangeSet(@Nullable ChangeSet changeSet)
focal_class.class_method_signature: JournalEntry.readFrom(CommitInfo info)
focal_class.full_signature: public void readFrom(CommitInfo info)
focal_class.identifier: readFrom
focal_class.modifiers: public
focal_class.parameters: (CommitInfo info)
focal_class.return: void
focal_class.signature: void readFrom(CommitInfo info)
focal_class.class_method_signature: JournalEntry.addTo(ChangeSetBuilder changeSetBuilder)
focal_class.full_signature: private void addTo(ChangeSetBuilder changeSetBuilder)
focal_class.identifier: addTo
focal_class.modifiers: private
focal_class.parameters: (ChangeSetBuilder changeSetBuilder)
focal_class.return: void
focal_class.signature: void addTo(ChangeSetBuilder changeSetBuilder)
focal_class.class_method_signature: JournalEntry.branchCommit(@NotNull Iterable<Revision> revisions)
focal_class.full_signature:  void branchCommit(@NotNull Iterable<Revision> revisions)
focal_class.identifier: branchCommit
focal_class.parameters: (@NotNull Iterable<Revision> revisions)
focal_class.return: void
focal_class.signature: void branchCommit(@NotNull Iterable<Revision> revisions)
focal_class.class_method_signature: JournalEntry.asUpdateOp(@NotNull Revision revision)
focal_class.full_signature:  UpdateOp asUpdateOp(@NotNull Revision revision)
focal_class.identifier: asUpdateOp
focal_class.parameters: (@NotNull Revision revision)
focal_class.return: UpdateOp
focal_class.signature: UpdateOp asUpdateOp(@NotNull Revision revision)
focal_class.class_method_signature: JournalEntry.invalidate(@NotNull Iterable<Revision> revisions)
focal_class.full_signature:  void invalidate(@NotNull Iterable<Revision> revisions)
focal_class.identifier: invalidate
focal_class.parameters: (@NotNull Iterable<Revision> revisions)
focal_class.return: void
focal_class.signature: void invalidate(@NotNull Iterable<Revision> revisions)
focal_class.class_method_signature: JournalEntry.addTo(final StringSort sort, Path path)
focal_class.full_signature:  void addTo(final StringSort sort, Path path)
focal_class.identifier: addTo
focal_class.parameters: (final StringSort sort, Path path)
focal_class.return: void
focal_class.signature: void addTo(final StringSort sort, Path path)
focal_class.class_method_signature: JournalEntry.getBranchCommits()
focal_class.full_signature: @NotNull Iterable<JournalEntry> getBranchCommits()
focal_class.identifier: getBranchCommits
focal_class.modifiers: @NotNull
focal_class.parameters: ()
focal_class.return: Iterable<JournalEntry>
focal_class.signature: Iterable<JournalEntry> getBranchCommits()
focal_class.class_method_signature: JournalEntry.getNumChangedNodes()
focal_class.full_signature:  int getNumChangedNodes()
focal_class.identifier: getNumChangedNodes
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getNumChangedNodes()
focal_class.class_method_signature: JournalEntry.hasChanges()
focal_class.full_signature:  boolean hasChanges()
focal_class.identifier: hasChanges
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasChanges()
focal_class.class_method_signature: JournalEntry.hasInvalidateOnlyReferences()
focal_class.full_signature: private boolean hasInvalidateOnlyReferences()
focal_class.identifier: hasInvalidateOnlyReferences
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasInvalidateOnlyReferences()
focal_class.class_method_signature: JournalEntry.addInvalidateOnlyTo(final StringSort sort)
focal_class.full_signature: private void addInvalidateOnlyTo(final StringSort sort)
focal_class.identifier: addInvalidateOnlyTo
focal_class.modifiers: private
focal_class.parameters: (final StringSort sort)
focal_class.return: void
focal_class.signature: void addInvalidateOnlyTo(final StringSort sort)
focal_class.class_method_signature: JournalEntry.getInvalidateOnly()
focal_class.full_signature: @NotNull private Iterable<JournalEntry> getInvalidateOnly()
focal_class.identifier: getInvalidateOnly
focal_class.modifiers: @NotNull private
focal_class.parameters: ()
focal_class.return: Iterable<JournalEntry>
focal_class.signature: Iterable<JournalEntry> getInvalidateOnly()
focal_class.class_method_signature: JournalEntry.getLinkedEntries(final String name)
focal_class.full_signature: private Iterable<JournalEntry> getLinkedEntries(final String name)
focal_class.identifier: getLinkedEntries
focal_class.modifiers: private
focal_class.parameters: (final String name)
focal_class.return: Iterable<JournalEntry>
focal_class.signature: Iterable<JournalEntry> getLinkedEntries(final String name)
focal_class.class_method_signature: JournalEntry.getChanges(TreeNode node)
focal_class.full_signature: private static String getChanges(TreeNode node)
focal_class.identifier: getChanges
focal_class.modifiers: private static
focal_class.parameters: (TreeNode node)
focal_class.return: String
focal_class.signature: String getChanges(TreeNode node)
focal_class.class_method_signature: JournalEntry.asId(@NotNull Revision revision)
focal_class.full_signature: static String asId(@NotNull Revision revision)
focal_class.identifier: asId
focal_class.modifiers: static
focal_class.parameters: (@NotNull Revision revision)
focal_class.return: String
focal_class.signature: String asId(@NotNull Revision revision)
focal_class.class_method_signature: JournalEntry.getNode(Path path)
focal_class.full_signature: @Nullable private TreeNode getNode(Path path)
focal_class.identifier: getNode
focal_class.modifiers: @Nullable private
focal_class.parameters: (Path path)
focal_class.return: TreeNode
focal_class.signature: TreeNode getNode(Path path)
focal_class.class_method_signature: JournalEntry.getChanges()
focal_class.full_signature: @NotNull private TreeNode getChanges()
focal_class.identifier: getChanges
focal_class.modifiers: @NotNull private
focal_class.parameters: ()
focal_class.return: TreeNode
focal_class.signature: TreeNode getChanges()
focal_class.superclass: extends Document
focal_method.body: static int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
              throws IOException {
          return fillExternalChanges(externalChanges, invalidate, Path.ROOT,
                  from, to, store, entry -> {}, null, null);
      }
focal_method.class_method_signature: JournalEntry.fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_method.full_signature: static int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_method.identifier: fillExternalChanges
focal_method.invocations: fillExternalChanges
focal_method.modifiers: static
focal_method.parameters: (@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)
focal_method.return: int
focal_method.signature: int fillExternalChanges(@NotNull StringSort externalChanges,
                                     @NotNull StringSort invalidate,
                                     @NotNull Revision from,
                                     @NotNull Revision to,
                                     @NotNull DocumentStore store)