EMF比较代码的编译问题

时间:2013-04-05 20:53:34

标签: java eclipse eclipse-emf emf emf-compare

EMF版本比较:2.1.0 M6(2013/03/19 17:50)

我正在尝试使用this guide中所述的独立比较。我得到以下编译错误

The method setMatchEngine(IMatchEngine) is undefined for the type EMFCompare.Builder

以下代码

// Configure EMF Compare
IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
IComparisonFactory comparisonFactory = new DefaultComparisonFactory(new DefaultEqualityHelperFactory());
IMatchEngine matchEngine = new DefaultMatchEngine(matcher, comparisonFactory);
EMFCompare comparator = EMFCompare.builder().setMatchEngine(matchEngine).build();

我看到setMatchEngine被其他API替换,如下图所示。我不确定如何使用该API指定新的matchEngine

enter image description here

1 个答案:

答案 0 :(得分:2)

这些API已针对M6进行了更改(就删除而言,API现在处于最终的2.1.0阶段)。如果您的工作区中有代码,那么“如何使用API​​”的良好来源是EMF的单元测试。

对于您的特定用例,代码看起来如下:

IMatchEngine.Factory factory = new MatchEngineFactoryImpl(UseIdentifiers.NEVER);
IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
matchEngineRegistry .add(factory);
EMFCompare comparator = EMFCompare.builder().setMatchEngineFactoryRegistry(matchEngineRegistry).build();

请注意,在大多数情况下使用默认注册表(EMFCompare.builder().build();)就足够了......除非您真的不能让EMF Compare使用ID:p。

[编辑:一个小注释:我们现在已经用准确的信息更新了维基,感谢您的反馈;)