Pergunta

É possível criar Eclipse plugins que auto-descobrir um ao outro?

Estou desenvolvendo um conjunto de plugins que precisa para operar em duas situações principais:

  • individualmente
  • em conjunto com os outros.

Quando executado individualmente, os plugins deve "apenas trabalho", mas quando em conjunto, eles vão estar compartilhando alguns do mesmo conteúdo do modelo, e um dos plugins deve apresentar ao usuário uma lista de outros plugins para compartilhar conteúdo com. por exemplo:

Foo Plugin detectado o seguinte plugins que podem compartilhar ontologias com:

[] Bar plug-in

[] Baz plug-in

[] Não compartilhar

O Eclipse oferece nenhum métodos publicação / detecção internos que facilitem esse tipo de auto-detecção de outros plugins?

Foi útil?

Solução

A resposta deve ser através Serviço declarativa , que combina as vantagens de ambas as extensões XML eclipse e serviços OSGi POJO. Algo que é implicitamente dinâmico como serviços OSGi, mas carregado “on demand”, como extensões de eclipse.

Introduzida em 2006 para eclipse3.3, você vai encontrar esses conceitos ilustrados na esta apresentação .

declarativa Serviços dá a opção para definir a referência a outros serviços. Também é possível especificar a cardinalidade da referência. A cardinalidade é especificada utilizando dois números, o primeiro um, 0 ou 1, indica a possibilidade de opção, a segunda, uma ou N, indica a multiplicidade.

Na prática, os DS (declarativa Services) não são fáceis de usar, como você tem que acessar o BundleContext, ou seja, manter o controle das BundleActivator, não é que é sempre fácil ...

Se o que você precisa é definir algum tipo de Service Oriented Component Model, este apresentação deve fornecê-lo com as diferentes alternativas existentes hoje, bem como detalhando os "declarativa Services"


Para publicar o que rcreswick encontrou em relação com o DS:

Outras dicas

Bem, o registro de serviço OSGi pode realizar o compartilhamento de serviços baseados POJO em tempo de execução, não os próprios plugins. Existem várias opções para facilitar este, como codificação diretamente para a API OSGI, Serviços declarativas, Primavera DM e iPojo (estou certo de que há outros também).

Você pode querer verificar o padrão Whiteboard como um meio de realizar uma solução estilo Observer dinâmica / observável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top