test_class.declarator: folder = new TemporaryFolder(new File("target"))
test_class.modifier: private final
test_class.original_string: private final TemporaryFolder folder = new TemporaryFolder(new File("target"));
test_class.type: TemporaryFolder
test_class.var_name: folder
test_class.declarator: fileStore = new TemporaryFileStore(folder, false)
test_class.modifier: private final
test_class.original_string: private final TemporaryFileStore fileStore = new TemporaryFileStore(folder, false);
test_class.type: TemporaryFileStore
test_class.var_name: fileStore
test_class.declarator: chain = RuleChain.outerRule(folder)
          .around(fileStore)
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public RuleChain chain = RuleChain.outerRule(folder)
          .around(fileStore);
test_class.type: RuleChain
test_class.var_name: chain
test_class.file: oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/LoggingHookTest.java
test_class.identifier: LoggingHookTest
test_case.body: @Test
      public void testChildNodeAdded() throws Exception {
          assertCommitProduces(
              lines(
                  "n+ chi%25:ld",
                  "n!",
                  "n!"
              ),
              root -> root.setChildNode("chi%:ld")
          );
      }
test_case.class_method_signature: LoggingHookTest.testChildNodeAdded()
test_case.full_signature: @Test public void testChildNodeAdded()
test_case.identifier: testChildNodeAdded
test_case.invocations: assertCommitProduces lines setChildNode
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testChildNodeAdded()
focal_class.declarator: writer
focal_class.modifier: private final
focal_class.original_string: private final Consumer<String> writer;
focal_class.type: Consumer<String>
focal_class.var_name: writer
focal_class.file: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/LoggingHook.java
focal_class.identifier: LoggingHook
focal_class.interfaces: implements CommitHook, NodeStateDiff
focal_class.class_method_signature: LoggingHook.LoggingHook(final Consumer<String> writer)
focal_class.full_signature: private  LoggingHook(final Consumer<String> writer)
focal_class.identifier: LoggingHook
focal_class.modifiers: private
focal_class.parameters: (final Consumer<String> writer)
focal_class.signature:  LoggingHook(final Consumer<String> writer)
focal_class.class_method_signature: LoggingHook.newLoggingHook(final Consumer<String> writer)
focal_class.full_signature: static LoggingHook newLoggingHook(final Consumer<String> writer)
focal_class.identifier: newLoggingHook
focal_class.modifiers: static
focal_class.parameters: (final Consumer<String> writer)
focal_class.return: LoggingHook
focal_class.signature: LoggingHook newLoggingHook(final Consumer<String> writer)
focal_class.class_method_signature: LoggingHook.enter(NodeState before, NodeState after)
focal_class.full_signature: public void enter(NodeState before, NodeState after)
focal_class.identifier: enter
focal_class.modifiers: public
focal_class.parameters: (NodeState before, NodeState after)
focal_class.return: void
focal_class.signature: void enter(NodeState before, NodeState after)
focal_class.class_method_signature: LoggingHook.leave(NodeState before, NodeState after)
focal_class.full_signature: public void leave(NodeState before, NodeState after)
focal_class.identifier: leave
focal_class.modifiers: public
focal_class.parameters: (NodeState before, NodeState after)
focal_class.return: void
focal_class.signature: void leave(NodeState before, NodeState after)
focal_class.class_method_signature: LoggingHook.propertyAdded(PropertyState after)
focal_class.full_signature: @Override public boolean propertyAdded(PropertyState after)
focal_class.identifier: propertyAdded
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState after)
focal_class.return: boolean
focal_class.signature: boolean propertyAdded(PropertyState after)
focal_class.class_method_signature: LoggingHook.propertyChanged(PropertyState before, PropertyState after)
focal_class.full_signature: @Override public boolean propertyChanged(PropertyState before, PropertyState after)
focal_class.identifier: propertyChanged
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState before, PropertyState after)
focal_class.return: boolean
focal_class.signature: boolean propertyChanged(PropertyState before, PropertyState after)
focal_class.class_method_signature: LoggingHook.propertyDeleted(PropertyState before)
focal_class.full_signature: @Override public boolean propertyDeleted(PropertyState before)
focal_class.identifier: propertyDeleted
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState before)
focal_class.return: boolean
focal_class.signature: boolean propertyDeleted(PropertyState before)
focal_class.class_method_signature: LoggingHook.safeEncode(String value)
focal_class.full_signature: private static String safeEncode(String value)
focal_class.identifier: safeEncode
focal_class.modifiers: private static
focal_class.parameters: (String value)
focal_class.return: String
focal_class.signature: String safeEncode(String value)
focal_class.class_method_signature: LoggingHook.childNodeAdded(String name, NodeState after)
focal_class.full_signature: @Override public boolean childNodeAdded(String name, NodeState after)
focal_class.identifier: childNodeAdded
focal_class.modifiers: @Override public
focal_class.parameters: (String name, NodeState after)
focal_class.return: boolean
focal_class.signature: boolean childNodeAdded(String name, NodeState after)
focal_class.class_method_signature: LoggingHook.childNodeChanged(String name, NodeState before, NodeState after)
focal_class.full_signature: @Override public boolean childNodeChanged(String name, NodeState before, NodeState after)
focal_class.identifier: childNodeChanged
focal_class.modifiers: @Override public
focal_class.parameters: (String name, NodeState before, NodeState after)
focal_class.return: boolean
focal_class.signature: boolean childNodeChanged(String name, NodeState before, NodeState after)
focal_class.class_method_signature: LoggingHook.childNodeDeleted(String name, NodeState before)
focal_class.full_signature: @Override public boolean childNodeDeleted(String name, NodeState before)
focal_class.identifier: childNodeDeleted
focal_class.modifiers: @Override public
focal_class.parameters: (String name, NodeState before)
focal_class.return: boolean
focal_class.signature: boolean childNodeDeleted(String name, NodeState before)
focal_class.class_method_signature: LoggingHook.toString(final PropertyState ps)
focal_class.full_signature: private static String toString(final PropertyState ps)
focal_class.identifier: toString
focal_class.modifiers: private static
focal_class.parameters: (final PropertyState ps)
focal_class.return: String
focal_class.signature: String toString(final PropertyState ps)
focal_class.class_method_signature: LoggingHook.replaceOrAppendLastChar(StringBuilder b, char oldChar, char newChar)
focal_class.full_signature: private static void replaceOrAppendLastChar(StringBuilder b, char oldChar, char newChar)
focal_class.identifier: replaceOrAppendLastChar
focal_class.modifiers: private static
focal_class.parameters: (StringBuilder b, char oldChar, char newChar)
focal_class.return: void
focal_class.signature: void replaceOrAppendLastChar(StringBuilder b, char oldChar, char newChar)
focal_class.class_method_signature: LoggingHook.appendBlob(StringBuilder sb, Blob blob)
focal_class.full_signature: private static void appendBlob(StringBuilder sb, Blob blob)
focal_class.identifier: appendBlob
focal_class.modifiers: private static
focal_class.parameters: (StringBuilder sb, Blob blob)
focal_class.return: void
focal_class.signature: void appendBlob(StringBuilder sb, Blob blob)
focal_class.class_method_signature: LoggingHook.processCommit(NodeState before, NodeState after, CommitInfo info)
focal_class.full_signature: @NotNull @Override public NodeState processCommit(NodeState before, NodeState after, CommitInfo info)
focal_class.identifier: processCommit
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: (NodeState before, NodeState after, CommitInfo info)
focal_class.return: NodeState
focal_class.signature: NodeState processCommit(NodeState before, NodeState after, CommitInfo info)
focal_method.body: @Override
      public boolean childNodeAdded(String name, NodeState after) {
          writer.accept("n+ " + safeEncode(name));
          this.enter(null, after);
          boolean ret = after.compareAgainstBaseState(EmptyNodeState.EMPTY_NODE, this);
          this.leave(null, after);
          return ret;
      }
focal_method.class_method_signature: LoggingHook.childNodeAdded(String name, NodeState after)
focal_method.full_signature: @Override public boolean childNodeAdded(String name, NodeState after)
focal_method.identifier: childNodeAdded
focal_method.invocations: accept safeEncode enter compareAgainstBaseState leave
focal_method.modifiers: @Override public
focal_method.parameters: (String name, NodeState after)
focal_method.return: boolean
focal_method.signature: boolean childNodeAdded(String name, NodeState after)