检索由 EMF 比较计算的 ADD 差异中的"match of value"



我对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
}
}

我想检索的是与我的ReferenceChangeSpec值属性匹配相对应的MatchSpec。但是,我似乎无法在ReferenceChangeSpec文档中找到相应的getter。我尝试过查看 Diffs 的 GitHub 代码,尤其是Diff.toString(),但它并没有让我走得更远,这就是我寻求您帮助的原因。

在EMF Compare Forum上提出这个问题后,我已经能够找到解决问题的方法。

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

相关内容

最新更新