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:

  1. Acessível
  2. Proibido
  3. Interno
  4. Interno com amigos

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 Acessíveis

 

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:

  1. O compilador sinalizará as referências a pacotes proibidos com um ERRO.
  2. Tipos de pacotes proibidos NÃO estão disponíveis como propostas no assistente de conteúdo.

Comunicados:

  1. Todos os plug-ins no Eclipse SDK enumeram todos os seus pacotes na seção Pacotes Exportados.  Portando, nenhum dos pacotes no SDK tem acesso proibido.
  2. O nível de gravidade para referências proibidas é configurado na página de preferências Java > Compilador > Erros/Avisos > API Reprovada e Restrita.

    É altamente recomendável que a gravidade de uma referência proibida seja mantida em ERRO.

    Preferências Proibidas

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.

Acesso Desencorajado

Duas medidas são tomadas para desencorajar plug-ins de recebimento de dados de fazer referência a pacotes internos:

Acesso Desencorajado

Assistente de Conteúdo Desencorajado

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.

Preferências Desencorajadas

 

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.

Amigos

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:

  1. Abra o plugin.xml no editor de manifesto de plug-in.
  2. Na seção Conteúdo do Plug-in da página Visão Geral, clique no link 'Criar um Manifesto de Pacote Configurável do OSGi'.

Converter em manifest.mf

 

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.

Propriedades do Caminho de Construção Java