private DiffObjectInfo<T> toDiffObject(DiffEntry e, Map<ObjectId, T> values) { T oldValue = values.get(e.oldObjectId()); T newValue = values.get(e.newObjectId()); return new DiffObjectInfo<>(e, oldValue, newValue); } }
ObjectId oldId = e.oldObjectId(); ObjectId newId = e.newObjectId(); if (!oldId.isNull()) {
: diffEntry.oldPath(); sb.append('\t').append(path).append(' ') .append(diffEntry.oldObjectId().toString()).append(' ') .append(diffEntry.newObjectId().toString()).append('\n');
: diffEntry.oldPath(); sb.append('\t').append(path).append(' ') .append(diffEntry.oldObjectId().toString()).append(' ') .append(diffEntry.newObjectId().toString()).append('\n');
continue; final ObjectId oldCanonical = treeDiff.oldObjectId().isNull() ? RevTree.EMPTY_TREE_ID : treeDiff.oldObjectId(); final ObjectId newCanonical = treeDiff.newObjectId().isNull() ? RevTree.EMPTY_TREE_ID
sb.append(diffEntry.oldObjectId().toString()); sb.append(' '); sb.append(diffEntry.newObjectId().toString());
private void assertDiffObjects(List<DiffObjectInfo<RevFeature>> objects) { for (DiffObjectInfo<RevFeature> o : objects) { DiffEntry entry = o.entry(); switch (entry.changeType()) { case ADDED: assertFalse(o.oldValue().isPresent()); assertTrue(o.newValue().isPresent()); assertEquals(entry.newObjectId(), o.newValue().get().getId()); break; case MODIFIED: assertTrue(o.oldValue().isPresent()); assertTrue(o.newValue().isPresent()); assertEquals(entry.oldObjectId(), o.oldValue().get().getId()); assertEquals(entry.newObjectId(), o.newValue().get().getId()); break; case REMOVED: assertTrue(o.oldValue().isPresent()); assertFalse(o.newValue().isPresent()); assertEquals(entry.oldObjectId(), o.oldValue().get().getId()); break; default: throw new IllegalStateException(); } } }
.setObjectId(diffEntry.oldObjectId()).call().get(); if (revObject instanceof RevFeature) { RevFeatureType featureType;
@SuppressWarnings("unused") @Test public void testMultipleDeletes() throws Exception { // two commits on different trees final ObjectId oid11 = insertAndAdd(points1); final ObjectId oid12 = insertAndAdd(points2); final ObjectId oid13 = insertAndAdd(points3); final RevCommit commit1 = geogig.command(CommitOp.class).setAll(true).call(); final ObjectId oid21 = insertAndAdd(lines1); final RevCommit commit2 = geogig.command(CommitOp.class).setAll(true).call(); deleteAndAdd(points1); deleteAndAdd(points3); final RevCommit commit3 = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> diffs; // filter on namespace1, no changes between commit1 and commit2 diffOp.setOldVersion(commit1.getId()).setNewVersion(commit3.getId()); diffOp.setFilter(pointsName); diffs = toList(diffOp.call()); assertEquals(2, diffs.size()); assertEquals(ChangeType.REMOVED, diffs.get(0).changeType()); assertEquals(ChangeType.REMOVED, diffs.get(1).changeType()); Set<ObjectId> ids = Sets.newHashSet(diffs.get(0).oldObjectId(), diffs.get(1).oldObjectId()); assertEquals(Sets.newHashSet(oid11, oid13), ids); }
@Test public void testReportRename() throws Exception { insertAndAdd(lines1); final RevCommit commit1 = geogig.command(CommitOp.class).setAll(true).call(); Feature lines1B = feature(linesType, idL2, "StringProp2_1", new Integer(1000), "LINESTRING (1 1, 2 2)"); delete(lines1); // insert(lines2); WorkingTree workTree = repo.workingTree(); Name name = lines1.getType().getName(); String parentPath = name.getLocalPart(); workTree.insert(featureInfo(parentPath, lines1B)); geogig.command(AddOp.class).call(); RevCommit commit2 = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> diffs; diffOp.setOldVersion(commit1.getId()); diffOp.setNewVersion(commit2.getId()); diffs = toList(diffOp.call()); assertEquals(2, diffs.size()); // this is reported as an addition and a removal, with both // nodes pointing to same ObjectId assertEquals(diffs.get(0).newObjectId(), diffs.get(1).oldObjectId()); assertEquals(diffs.get(1).newObjectId(), diffs.get(0).oldObjectId()); }
@Test public void testReportTreesEmptyTreeFromFeatureDeletion() throws Exception { insert(lines1); delete(lines1); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); assertEquals(linesName, difflist.get(0).newName()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); assertEquals(linesName, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
@Test public void testReportTreesEmptyTree() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); assertEquals(linesName, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
@Test public void testSingleAdditionReverseOrder() throws Exception { final ObjectId newOid = insertAndAdd(points1); final RevCommit commit = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList( diffOp.setOldVersion(commit.getId()).setNewVersion(ObjectId.NULL).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.getNewObject()); assertNotNull(de.getOldObject()); assertEquals(DiffEntry.ChangeType.REMOVED, de.changeType()); assertEquals(ObjectId.NULL, de.newObjectId()); assertEquals(newOid, de.oldObjectId()); assertFalse(de.getOldObject().getMetadataId().isNull()); }
@Test public void testSingleModification() throws Exception { final ObjectId oldOid = insertAndAdd(points1); final RevCommit insertCommit = geogig.command(CommitOp.class).setAll(true).call(); final ObjectId newOid = insertAndAdd(points1_modified); final RevCommit changeCommit = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList(diffOp.setOldVersion(insertCommit.getId()) .setNewVersion(changeCommit.getId()).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); String expectedPath = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); assertEquals(expectedPath, de.newPath()); assertEquals(DiffEntry.ChangeType.MODIFIED, de.changeType()); assertEquals(oldOid, de.oldObjectId()); assertEquals(newOid, de.newObjectId()); }
@Test public void testSingleDeletion() throws Exception { final ObjectId featureContentId = insertAndAdd(points1); final RevCommit addCommit = geogig.command(CommitOp.class).setAll(true).call(); assertTrue(deleteAndAdd(points1)); final RevCommit deleteCommit = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList( diffOp.setOldVersion(addCommit.getId()).setNewVersion(deleteCommit.getId()).call()); final String path = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertEquals(path, de.oldPath()); assertEquals(DiffEntry.ChangeType.REMOVED, de.changeType()); assertEquals(featureContentId, de.oldObjectId()); assertEquals(ObjectId.NULL, de.newObjectId()); }
@Test public void testSingleAddition() throws Exception { final ObjectId newOid = insertAndAdd(points1); geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList( diffOp.setOldVersion(ObjectId.NULL).setNewVersion(Ref.HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); String expectedPath = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); assertEquals(expectedPath, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertEquals(newOid, de.newObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
diff = diffs.get(0); assertEquals(ChangeType.MODIFIED, diff.changeType()); assertEquals(initialOid, diff.oldObjectId()); assertEquals(modifiedOid, diff.newObjectId()); diff = diffs.get(0); assertEquals(ChangeType.REMOVED, diff.changeType()); assertEquals(initialOid, diff.oldObjectId()); assertEquals(ObjectId.NULL, diff.newObjectId()); diff = diffs.get(0); assertEquals(ChangeType.ADDED, diff.changeType()); assertEquals(ObjectId.NULL, diff.oldObjectId()); assertEquals(initialOid, diff.newObjectId()); diff = diffs.get(0); assertEquals(ChangeType.ADDED, diff.changeType()); assertEquals(ObjectId.NULL, diff.oldObjectId()); assertEquals(modifiedOid, diff.newObjectId());
@Test public void testSingleDeletionReverseOrder() throws Exception { final ObjectId featureContentId = insertAndAdd(points1); final RevCommit addCommit = geogig.command(CommitOp.class).setAll(true).call(); assertTrue(deleteAndAdd(points1)); final RevCommit deleteCommit = geogig.command(CommitOp.class).setAll(true).call(); // set old/new version in reverse order List<DiffEntry> difflist = toList( diffOp.setOldVersion(deleteCommit.getId()).setNewVersion(addCommit.getId()).call()); final String path = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); // then the diff should report an ADD instead of a DELETE assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.oldPath()); assertEquals(path, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertEquals(featureContentId, de.newObjectId()); }
final ObjectId ancestorVersionId = theirsDiff.oldObjectId(); final ObjectId ours = oursDiff.newObjectId(); final ObjectId theirs = theirsDiff.newObjectId();
assertEquals(nodeRef, entry.getOldObject()); assertEquals(nodeRef, entry.oldObject().get()); assertEquals(node.getObjectId(), entry.oldObjectId()); assertEquals(node.getMetadataId().get(), entry.oldMetadataId()); assertEquals(node.getName(), entry.oldName()); assertEquals(null, entry.getOldObject()); assertFalse(entry.oldObject().isPresent()); assertEquals(ObjectId.NULL, entry.oldObjectId()); assertEquals(ObjectId.NULL, entry.oldMetadataId()); assertEquals(null, entry.oldName()); assertEquals(nodeRef, entry.getOldObject()); assertEquals(nodeRef, entry.oldObject().get()); assertEquals(node.getObjectId(), entry.oldObjectId()); assertEquals(node.getMetadataId().get(), entry.oldMetadataId()); assertEquals(node.getName(), entry.oldName());