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.declarator: store
test_class.modifier: private
test_class.original_string: private DocumentNodeStore store;
test_class.type: DocumentNodeStore
test_class.var_name: store
test_class.declarator: journalDisabledProp
test_class.modifier: private
test_class.original_string: private String journalDisabledProp;
test_class.type: String
test_class.var_name: journalDisabledProp
test_class.declarator: differ
test_class.modifier: private
test_class.original_string: private BundledDocumentDiffer differ;
test_class.type: BundledDocumentDiffer
test_class.var_name: differ
test_class.declarator: secondary = new MemoryNodeStore()
test_class.modifier: private
test_class.original_string: private MemoryNodeStore secondary = new MemoryNodeStore();
test_class.type: MemoryNodeStore
test_class.var_name: secondary
test_class.file: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundledDocumentDifferTest.java
test_class.identifier: BundledDocumentDifferTest
test_case.body: @Test
      public void testDiff() throws Exception {
          NodeBuilder builder = createContentStructure();
          NodeState r1 = merge(store, builder);
  
          builder = store.getRoot().builder();
          childBuilder(builder, "/test/book.jpg/jcr:content").setProperty("foo", "bar");
          NodeState r2 = merge(store, builder);
  
          JsopWriter w = new JsopBuilder();
          String path = "/test";
          assertTrue(differ.diff(dns(r1, path), dns(r2, path), w));
          assertTrue(w.toString().isEmpty());
  
          w = new JsopBuilder();
          path = "/test/book.jpg";
          assertFalse(differ.diff(dns(r1, path), dns(r2, path), w));
          assertEquals("^\"jcr:content\":{}", w.toString());
  
          builder = store.getRoot().builder();
          childBuilder(builder, "/test/book.jpg/foo");
          NodeState r3 = merge(store, builder);
  
          w = new JsopBuilder();
          path = "/test/book.jpg";
          //As there is a non bundled child differ should return true to continue diffing
          assertTrue(differ.diff(dns(r1, path), dns(r3, path), w));
          assertEquals("^\"jcr:content\":{}", w.toString());
      }
test_case.class_method_signature: BundledDocumentDifferTest.testDiff()
test_case.full_signature: @Test public void testDiff()
test_case.identifier: testDiff
test_case.invocations: createContentStructure merge builder getRoot setProperty childBuilder merge assertTrue diff dns dns assertTrue isEmpty toString assertFalse diff dns dns assertEquals toString builder getRoot childBuilder merge assertTrue diff dns dns assertEquals toString
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testDiff()
focal_class.declarator: nodeStore
focal_class.modifier: private final
focal_class.original_string: private final DocumentNodeStore nodeStore;
focal_class.type: DocumentNodeStore
focal_class.var_name: nodeStore
focal_class.file: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundledDocumentDiffer.java
focal_class.identifier: BundledDocumentDiffer
focal_class.class_method_signature: BundledDocumentDiffer.BundledDocumentDiffer(DocumentNodeStore nodeStore)
focal_class.full_signature: public  BundledDocumentDiffer(DocumentNodeStore nodeStore)
focal_class.identifier: BundledDocumentDiffer
focal_class.modifiers: public
focal_class.parameters: (DocumentNodeStore nodeStore)
focal_class.signature:  BundledDocumentDiffer(DocumentNodeStore nodeStore)
focal_class.class_method_signature: BundledDocumentDiffer.diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_class.full_signature: public boolean diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_class.identifier: diff
focal_class.modifiers: public
focal_class.parameters: (AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_class.return: boolean
focal_class.signature: boolean diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_class.class_method_signature: BundledDocumentDiffer.diffChildren(Collection<String> fromChildren, Collection<String> toChildren, JsopWriter w)
focal_class.full_signature:  void diffChildren(Collection<String> fromChildren, Collection<String> toChildren, JsopWriter w)
focal_class.identifier: diffChildren
focal_class.parameters: (Collection<String> fromChildren, Collection<String> toChildren, JsopWriter w)
focal_class.return: void
focal_class.signature: void diffChildren(Collection<String> fromChildren, Collection<String> toChildren, JsopWriter w)
focal_class.class_method_signature: BundledDocumentDiffer.getDocumentNodeState(AbstractDocumentNodeState state)
focal_class.full_signature: private DocumentNodeState getDocumentNodeState(AbstractDocumentNodeState state)
focal_class.identifier: getDocumentNodeState
focal_class.modifiers: private
focal_class.parameters: (AbstractDocumentNodeState state)
focal_class.return: DocumentNodeState
focal_class.signature: DocumentNodeState getDocumentNodeState(AbstractDocumentNodeState state)
focal_method.body: public boolean diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w){
          boolean fromBundled = BundlorUtils.isBundledNode(from);
          boolean toBundled = BundlorUtils.isBundledNode(to);
  
          //Neither of the nodes bundled
          if (!fromBundled && !toBundled){
              return true;
          }
  
          DocumentNodeState fromDocState = getDocumentNodeState(from);
          DocumentNodeState toDocState = getDocumentNodeState(to);
  
          diffChildren(fromDocState.getBundledChildNodeNames(), toDocState.getBundledChildNodeNames(), w);
  
          //If all child nodes are bundled then diff is complete
          if (fromDocState.hasOnlyBundledChildren()
                  && toDocState.hasOnlyBundledChildren()){
              return false;
          }
  
          return true;
      }
focal_method.class_method_signature: BundledDocumentDiffer.diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_method.full_signature: public boolean diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_method.identifier: diff
focal_method.invocations: isBundledNode isBundledNode getDocumentNodeState getDocumentNodeState diffChildren getBundledChildNodeNames getBundledChildNodeNames hasOnlyBundledChildren hasOnlyBundledChildren
focal_method.modifiers: public
focal_method.parameters: (AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)
focal_method.return: boolean
focal_method.signature: boolean diff(AbstractDocumentNodeState from, AbstractDocumentNodeState to, JsopWriter w)