Проблема компиляции с кодом 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.

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.

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

Другие вопросы по тегам