在 EMF Compare 计算的 ADD Diff 中检索 "match of value"

Retrieving the "match of value" in an ADD Diff computed by 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 文档中找到相应的 getter。我已经尝试查看 Diffs 的 GitHub 代码,尤其是 Diff.toString(),但它并没有给我带来任何进一步的帮助,这就是我寻求您帮助的原因。

EMF Compare forum 上问了这个问题后,我找到了问题的解决方案。

诀窍是使用Comparison.getMatch(EObject)。因此,对于类型为 ADDDifference d,您想要检索 匹配值 :
Match matchOfValue = comparison.getMatch(((ReferenceChangeSpec) difference).getValue());