0

我对 EMF 相当陌生,最近开始使用 EMF 比较来计算两个模型之间的差异。目前,这些差异只是简单地打印到控制台,我尝试从中检索所有有用的信息。

当我打印一个 ADD Diff 对应于例如添加 aneAttribute时,它看起来像这样:

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与我的 value属性匹配的ReferenceChangeSpec. 但是,我似乎无法在ReferenceChangeSpec文档中找到相应的 getter。我曾尝试查看 Diffs 的 GitHub 代码,尤其是Diff.toString(),但它并没有让我更进一步,这就是我寻求您帮助的原因。

4

1 回答 1

0

EMF 比较论坛上提出这个问题后,我已经能够找到解决问题的方法。

诀窍是使用Comparison.getMatch(EObject). 因此,对于Difference d一种ADD您想要检索value 的匹配项
Match matchOfValue = comparison.getMatch(((ReferenceChangeSpec) difference).getValue());

于 2020-06-09T06:36:22.843 回答