Restrições de Acesso
O tempo de execução do Eclipse 3.1 fornece ao desenvolvedor de plug-in a opção de controlar em uma base por pacote a visibilidade do código do plug-in para plug-ins de recebimento de dados.
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 uma regra de visibilidade é sinalizada pelo compilador como um aviso ou como um erro, dependendo da gravidade da violação.
Com a disponibilidade desse suporte no tempo de compilação, ninguém é pego de surpresa por erros de carregamento de classe em tempo de execução e está sempre ciente ao fazer referência a 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.
Referências a tipos de um resultado de pacote proibido em erros de carregamento de classe no tempo de execução.
Para evitar esse tipo de situação desagradável:
Comunicados:
É altamente recomendável que a gravidade de uma referência proibida seja mantida em 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, os amigos (os plug-ins org.eclipse.pde e org.eclipse.pde.ui) possuem 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 qualquer outro plug-in fizer referência a 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 beneficiar-se do suporte à restrição de acesso do PDE, o único requisito é que os plug-ins em questão contenham um pacote manifest.mf do OSGi. O PDE, que gerencia o caminho de classe do plug-in, toma conta do resto.
Se o plug-in não contiver um arquivo manifest.mf, esse arquivo poderá ser criado da seguinte maneira:
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.