Regras de acesso

O tempo de execução do Eclipse 3.1 faculta ao programador a opção de controlar, pacote a pacote, a visibilidade do código do plug-in perante plug-ins em sentido descendente.

Um pacote poderá estar classificado da seguinte forma:

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

O PDE converte estas regras de visibilidade de tempo de execução em regras de restrição de acessos de compilador, no momento da compilação. Como consequência, a violação de uma regra de visibilidade é sinalizada pelo compilador sob a forma de aviso ou de erro - dependendo da gravidade da violação.

Utilizando este tipo de suporte em tempo de compilação, nunca será surpreendido por erros de carregamento de classes em tempo de execução e estará sempre alerta ao referenciar tipos internos.

 

Pacotes Acessíveis

Os pacotes acessíveis estão visíveis perante plug-ins em sentido descendente incondicionalmente.   Embora todos os pacotes de APIs devam recair claramente nesta categoria, compete ao programador decidir que outros pacotes exportados pelo plug-in devem receber este nível de visibilidade.

No intuito de declarar um pacote como acessível, é necessário listá-lo na secção Pacotes Exportados no Tempo de Execução do editor de manifestos de plug-in e deixar a predefinição de visibilidade tal como está.

Pacotes Acessíveis

 

Pacotes Proibidos

Pode ocultar um pacote de plug-ins em sentido descendente em qualquer altura, basta excluir o pacote da lista na secção Pacotes Exportados na página Tempo de Execução do editor de manifestos de plug-in.

As referências a tipos de um pacote proibido resultam em erros de carregamento de classes em tempo de execução.

 Para evitar tais situações inconvenientes:

  1. O compilador irá sinalizar referências a pacotes proibidos com um erro.
  2. Os tipos de pacotes proibidos NÃO estão disponíveis como propostas na assistência de conteúdo.

Notas:

  1. Todos os plug-ins no SDK do Eclipse enumeram todos os pacotes na secção Pacotes Exportados; por conseguinte, nenhum dos pacotes no SDK tem acesso proibido.
  2. O nível de gravidade para referências proibidas é definido na página de preferências Java > Compilador > Erros/Avisos > API obsoleto e restrito.

    Recomenda-se vivamente que a gravidade de uma referência proibida seja mantida no erro.

    Preferências proibidas

 

Pacotes Internos

Os pacotes internos são aqueles que não se destinam a utilização por parte de plug-ins em sentido descendente. Estes pacotes estão visíveis para plug-ins em sentido descendente porpredefinição.

Os pacotes internos estão ocultos de plug-ins em sentido descendente somente quando o Eclipse é iniciado em modoestrito (ou seja, quando se inicia com o argumento da VM denominado -Dosgi.resolverMode=strict).

Os pacotes internos devem estar listados na secção Pacotes Exportados na página Tempo de Execução do editor de manifestos de plug-in, com a opção oculto seleccionada.

acesso desencorajado

Foram tomadas duas medidas para desencorajar plug-ins em sentido descendente de referenciarem pacotes internos:

acesso desencorajado

assistência
de conteúdo desencorajada

O nível de gravidade para referências desencorajadas pode ser definido na página de preferências Java > Compilador > Erros/Avisos > API obsoleto e restrito.

Preferências desencorajadas

 

Pacotes internos com amigos

É importante para um plug-in poder conceder acesso integral aos seus pacotes internos a plug-ins designados como "amigos". Por exemplo, o código do PDE é dividido por vários plug-ins, e o plug-in org.eclipse.pde.ui deve ter acesso integral aos pacotes internos de org.eclipse.pde.core.

No exemplo apresentado abaixo, o plug-in amigo org.eclipse.pde.ui tem acesso integral ao pacote org.eclipse.pde.internal.core.bundle do plug-in org.eclipse.pde.core .

Amigos

Os amigos são livres de referenciar qualquer tipo oriundo do pacote org.eclipse.pde.internal.core.bundle com a aprovação do compilador.

Por outro lado, se qualquer outro plug-in referenciar um tipo do pacote org.eclipse.pde.internal.core.bundle, o compilador sinaliza a referência como referência desencorajada na forma descrita na secção anterior.

 

Como activar restrições de acesso

Para tirar partido do suporte de restrição de acesso de PDE, o único requisito é que os plug-ins em questão contenham um agrupamento OSGi MANIFEST.MF. O PDE irá encarregar-se dos restantes procedimentos, incluindo a gestão do caminho da classe do plug-in.

Se o plug-in não contiver um ficheiro MANIFEST.MF, esse ficheiro poderá ser criado da seguinte forma:

  1. Abra o plugin.xml no editor de manifesto de plug-in.
  2. Na secção Conteúdo do Plug-in da página Descrição Geral, faça clique na ligação "criar um manifesto de agrupamento OSGi".

converter para manifest.mf

 

Inspeccionar regras de acesso

Poderá inspeccionar as regras de restrição de acesso impostas a cada entrada de caminho de classes pelo PDE na página de propriedades Caminho de Construção Java do projecto de plug-in.

Propriedades
do Caminho de Construção Java