Ниже приведены 2 версии моих документов экземпляра emf. Как вы можете видеть, единственное, что изменилось, это значение «productCode» от KAF до Изменено. Но сравнение рассматривает это как два изменения ADD и DELETE. Не знаете почему?EMF Compare: DifferenceKind ADD и DELETE вместо CHANGE. Зачем?
Version 1
<billableSystemEvent eventType="1" description="Application Processed">
<billableProductCode productCode="KAF"/>
</billableSystemEvent>
Version 2
<billableSystemEvent eventType="1" description="Application Processed">
<billableProductCode productCode="Changed"/>
</billableSystemEvent>
public Comparison compare()
{
// Load the two input models
ResourceSet resourceSet1 = new ResourceSetImpl();
ResourceSet resourceSet2 = new ResourceSetImpl();
String xmi1 = "src/test/java/com/equifax/ic/provisioning/service/v1.xmi";
String xmi2 = "src/test/java/com/equifax/ic/provisioning/service/v2.xmi";
load(xmi1, resourceSet1);
load(xmi2, resourceSet2);
// Configure EMF Compare
EMFCompare comparator = EMFCompare.builder().build();
// Compare the two models
IComparisonScope scope = EMFCompare.createDefaultScope(resourceSet1, resourceSet2);
return comparator.compare(scope);
}
@Test
public void testCompare()
{
Comparison comparison = compare();
List<Diff> differences = comparison.getDifferences();
for(Diff d: differences)
{
System.err.println("d.getKind(): "+d.getKind());
System.err.println("d.getMatch(): " + d.getMatch());
System.err.println("State: " + d.getState());
}
assertSame(Integer.valueOf(12), Integer.valueOf(differences.size()));
}
Выход
d.getKind(): ADD
d.getMatch(): MatchSpec{[email protected] Application Processed, [email protected] Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED
d.getKind(): DELETE
d.getMatch(): MatchSpec{[email protected] Application Processed, [email protected] Application Processed, origin=<null>, #differences=2, #submatches=2}
State: UNRESOLVED