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:
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 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:
Notas:
Recomenda-se vivamente que a gravidade de uma referência proibida seja mantida no erro.
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.
Foram tomadas duas medidas para desencorajar plug-ins em sentido descendente de referenciarem pacotes internos:
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.
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 .
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:
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.