Проблема компиляции с кодом EMF Compare

Версия EMF Compare: 2.1.0 M6 (2013/03/19 17:50)

Я пытаюсь использовать автономное сравнение, как описано в этом руководстве. Я получаю следующую ошибку компиляции

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, как показано на рисунке ниже. Я не уверен, как указать новый matchEngine с помощью этого API.

введите здесь описание изображения


person Aravind Yarram    schedule 05.04.2013    source источник


Ответы (1)


Эти API изменились для M6 (сейчас API находится на финальной стадии 2.1.0, что касается удаления). Хорошим источником того, «как использовать API», являются модульные тесты EMF Compare, если у вас есть код в вашей рабочей области.

Для вашего конкретного случая использования код будет выглядеть так:

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 использовать идентификаторы :p.

[править: небольшое примечание: теперь мы обновили вики точной информацией, спасибо за отзыв ;)]

person Kellindil    schedule 08.04.2013