Получение "соответствия значения" в ADD Diff, вычисленном с помощью EMF Compare

Я новичок в EMF и недавно начал использовать EMF Compare для вычисления различий между двумя моделями. На данный момент эти различия просто выводятся на консоль, и я пытаюсь извлечь из них всю полезную информацию.

Когда я печатаю ADD Diff, например, для добавления eAttribute, это выглядит так:

UNRESOLVED LEFT ADD org.eclipse.emf.compare.internal.spec.ReferenceChangeSpec{
  reference=EClass.eStructuralFeatures,
  value=EAttribute@7e8dcdaanom,
  parentMatch=org.eclipse.emf.compare.internal.spec.MatchSpec{
    left=EClass@5cdd09b1SystemOfAirport,
    right=EClass@8c11eeeSystemOfAirport,
    origin=<null>,
    #differences=2,
    #submatches=5
  },
  match of value=org.eclipse.emf.compare.internal.spec.MatchSpec{
    left=EAttribute@7e8dcdaanom,
    right=<null>,
    origin=<null>,
    #differences=1,
    #submatches=0
  }
}

Я хотел бы получить MatchSpecсоответствует совпадению атрибута значения моегоReferenceChangeSpec. Однако я не могу найти соответствующий геттер вReferenceChangeSpecдокументация. Я попытался изучить код GitHub для Diffs и особенноDiff.toString(), но дальше меня это не продвинуло, поэтому прошу вашей помощи.

1 ответ

Решение

Задав этот вопрос на форуме EMF Compare, я смог найти решение моей проблемы.

Хитрость в том, чтобы использовать Comparison.getMatch(EObject). Так что дляDifference dвида ADD, вы хотите получить совпадение значения:
Match matchOfValue = comparison.getMatch(((ReferenceChangeSpec) difference).getValue());

Другие вопросы по тегам