Загрузка одного и того же плагина дважды с другой версией в Eclipse
У меня есть две разные версии плагина EMF, который загружает определенный.xmi. Последняя версия была изменена, так что xmi из предыдущей версии несовместимо. Я хочу загрузить xmi с первым плагином, а затем программно построить модель, используя более новый плагин, перенося старые модели. Они идентичны, за исключением некоторых изменений в модели ЭМП.
Как мне загрузить эти плагины? Является ли это возможным? Есть ли лучшие стратегии?
2 ответа
Я предлагаю изменить идентификатор старой версии (и, возможно, URI пакета EMF), чтобы вы могли иметь два кода и модели одновременно.
Так как вам нужно обрабатывать как старые, так и новые классы в одном и том же плагине (миграторе), вы не сможете заставить оба работать.
Однако вы должны взглянуть на динамическую технологию EMF, в которой вы могли бы открыть старую модель без ее сгенерированных пакетов (с другой стороны, вы должны использовать отражающий API). Используя этот метод, вы можете написать конвертер, который откроет старую модель с помощью отражающего API-интерфейса EMF и вручную переведет его в новую версию модели.
Извините, но это невозможно, так как эти плагины являются синглетонами. И вы не можете переключать плагины во время миграции, так как базовые классы Java мешают вам.
Одним из возможных решений является использование технологии EDapt. Эта технология позволяет автоматически переносить модель по мере ее загрузки. Я использовал COPE - предшественника EDapt - в двух разных проектах с большим успехом.