Regras de Acesso
O tempo de execução do Eclipse 3.1 fornece ao desenvolvedor de plug-ins a opção para controlar a visibilidade do código do plug-in para plug-ins de recebimento de dados por pacote.
Um pacote pode ser classificado como um dos seguintes:
O PDE traduz essas regras de visibilidade do tempo de execução em regras de restrição de acesso no tempo de compilação. Como resultado, uma violação de regra de visibilidade é sinalizada pelo compilador como um aviso ou erro - dependendo da gravidade dessa violação.
Com esse tipo de suporte no tempo de compilação, alguém nunca é surpreendido pelos erros de carregamento da classe de tempo de execução e está sempre ciente das referências de tipos internos.
Pacotes Acessíveis
Pacotes acessíveis são visíveis para plug-ins de recebimento de dados incondicionalmente. Embora os pacotes de API devem claramente cair nessa categoria, o desenvolvedor é quem decide quais outros pacotes exportados pelo plug-in devem receber esse nível de visibilidade.
Para declarar um pacote como acessível, você deve listá-lo na seção Pacotes Exportados no Tempo de Execução do manifesto do plug-in e deixar a configuração de visibilidade padrão como está.
Pacotes Proibidos
Você pode ocultar um pacote dos plug-ins de recebimento de dados todas as vezes, excluindo-o da lista na seção Pacotes Exportados na página Tempo de Execução do editor de manifesto do plug-in.
As referências a tipos de um pacote proibido resultam em erros de carregamento de classe no tempo de execução.
Para evitar esse tipo de situação desagradável:
Notas:
É altamente recomendável que a gravidade de uma referência proibida seja mantida na condição de erro.
Pacotes Internos
Pacotes internos são pacotes que não são destinados ao uso por plug-ins de recebimento de dados. Esses pacotes são visíveis para plug-ins de recebimento de dados por padrão.
Pacotes internos são ocultos dos plug-ins de recebimento de dados apenas quando o Eclipse é ativado no modo estrito (ou seja, quando você ativa com o argumento de VM -Dosgi.resolverMode=strict).
Pacotes internos devem ser listados na seção Pacotes Exportados na página Tempo de Execução do editor de manifesto do plug-in com a opção oculto selecionada.
Duas medidas são tomadas para desencorajar plug-ins de recebimento de dados de fazer referência a pacotes internos:
O nível de gravidade para referências desencorajadas pode ser configurado na página de preferências
Java > Compilador > Erros/Avisos > API Reprovada e Restrita.
Pacotes Internos com Amigos
É importante que um plug-in seja capaz de conceder acesso completo a seus pacotes internos a plug-ins "amigos" designados. Por exemplo, o código do PDE é dividido entre vários plug-ins e o plug-in org.eclipse.pde.ui deve ter acesso completo aos pacotes internos do org.eclipse.pde.core.
No exemplo a seguir, o plug-in amigo org.eclipse.pde.ui possui acesso completo ao pacote org.eclipse.pde.internal.core.bundle a partir do plug-in org.eclipse.pde.core.
Os amigos são livres para fazer referência a qualquer tipo do pacote org.eclipse.pde.internal.core.bundle com a bênção do compilador.
Por outro lado, se algum outro plug-in referenciar um tipo do pacote org.eclipse.pde.internal.core.bundle, o compilador sinalizará a referência como uma referência desencorajada, conforme descrito na seção anterior.
Como Ativar Restrições de Acesso
Para aproveitar as vantagens do suporte de restrição de acesso do PDE, o único requisito é que os plug-ins em questão contenham um pacote configurável OSGi MANIFEST.MF. O PDE cuidará do restante, incluindo o gerenciamento do caminho de classe do plug-in.
Se o plug-in não contiver um arquivo MANIFEST.MF, esse arquivo poderá ser criado conforme a seguir:
Inspecionando Regras de Acesso
É possível inspecionar as regras de restrição de acesso impostas em cada caminho de classe pelo PDE na página de propriedade Caminho de Construção Java do projeto do plug-in.