Carregando o mesmo plugin duas vezes com versão diferente no Eclipse
-
28-10-2019 - |
Pergunta
Eu tenho duas versões diferentes de um plugin EMF que carrega um certo .xmi.A última versão foi alterada para que o xmi da versão anterior seja incompatível.O que eu quero fazer é carregar o xmi com o primeiro plug-in e, em seguida, construir programaticamente um modelo usando o plug-in mais recente, migrando os modelos mais antigos.Eles são idênticos, exceto por algumas mudanças dentro de um modelo EMF.
Como carrego esses plug-ins?É possível?Existem estratégias melhores?
Solução
Eu sugiro alterar o id da versão antiga (e possivelmente o URI do pacote EMF), para que você possa ter os dois códigos e modelos simultaneamente.
Como você precisa lidar com as classes antigas e novas no mesmo plug-in (o migrador), não há como as duas funcionarem.
No entanto, você deve olhar para a tecnologia EMF dinâmica ondevocê poderia abrir o modelo antigo sem seus pacotes gerados (por outro lado, você tem que usar a API reflexiva).Usando este método, você pode escrever um conversor, que abre o modelo antigo usando a API reflexiva EMF e traduzi-lo manualmente em sua nova versão do modelo.
Outras dicas
Desculpe, mas isso não é possível porque esses plug-ins são singletons.E você não pode trocar os plug-ins durante as migrações, pois as classes de base Java ficam no seu caminho.
Uma solução possível é usar a tecnologia EDapt .Esta tecnologia permite que você migre automaticamente seu modelo conforme você o carrega.Usei o COPE - o antecessor do EDapt - em dois projetos diferentes com grande sucesso.