Règles d'accès
L'environnement d'exécution Eclipse 3.1 permet au développeur de plug-ins de contrôler la visibilité du code des plug-ins en aval pour chaque package.
Un package peut être classé de la manière suivante :
PDE convertit ces règles de visibilité d'exécution en des règles de restriction d'accès au compilateur lors de la compilation. Par conséquent, le compilateur indique la violation d'une règle de visibilité sous la forme d'un avertissement ou d'une erreur en fonction de la gravité de la violation.
Grâce à ce type d'assistance à la compilation, vous ne pouvez pas être confronté à des erreurs inattendues de chargement de classe lors de l'exécution, et vous êtes toujours informé des références de types internes.
Packages accessibles
Les packages accessibles sont visibles de manière inconditionnelle pour les plug-ins en aval.Alors que les packages API entrent clairement dans cette catégorie, il appartient pleinement au développeur de décider quels autres packages exportés par le plug-in doivent recevoir ce niveau de visibilité.
Afin de déclarer un package accessible, vous devez le répertorier dans la section Packages exportés de la phase d'exécution de l'éditeur du manifeste de plug-in et laisser le paramètre de visibilité par défaut tel qu'il est.
Packages interdits
Vous pouvez masquer un package aux plug-ins en aval à tout moment en l'excluant de la liste dans la section Packages exportés de la page de la phase d'exécution de l'éditeur du manifeste de plug-in.
Les références à des types depuis un package interdit génèrent des erreurs de chargement de classe lors de l'exécution.
Pour éviter ce type de situations :
Remarques :
Il est recommandé de considérer la gravité d'une référence interdite comme une erreur.
Packages internes
Les packages internes sont des packages qui ne sont pas destinés à être utilisés par des plug-ins en aval. Ces packages sont visibles pour les plug-ins en aval par défaut.
Les packages internes ne sont masqués pour les plug-ins en aval que lorsque Eclipse est lancé dans le mode strict (c'est-à-dire lorsque vous procédez au lancement avec l'argument VM -Dosgi.resolverMode=strict).
Les packages internes doivent être répertoriés dans la section Packages exportés de la page Phase d'exécution de l'éditeur du manifeste de plug-in avec l'option masqué sélectionnée.
Deux mesures permettent de déconseiller l'utilisation des plug-ins en aval pour le référencement des packages internes :
Vous pouvez définir le niveau de gravité des références déconseillées dans la page des préférences
Java > Compilateur > Erreurs/Avertissements > API déconseillée ou restreinte.
Packages internes avec amis
Il est important pour un plug-in de pouvoir octroyer un accès complet à ses packages internes vers des plug-ins "amis" désignés. Par exemple, le code PDE est fractionné en plusieurs plug-ins et le plug-in org.eclipse.pde.ui doit avoir un accès complet vers les packages internes de org.eclipse.pde.core.
Dans l'exemple ci-dessous, le plug-in ami org.eclipse.pde.ui dispose d'un accès complet au package org.eclipse.pde.internal.core.bundle depuis le plug-in org.eclipse.pde.core .
Les amis sont libres de référencer n'importe quel type à partir du package org.eclipse.pde.internal.core.bundle avec le consentement du compilateur.
En revanche, si un autre plug-in fait référence à un type du package org.eclipse.pde.internal.core.bundle, le compilateur indique que la référence est une référence déconseillée, comme indiqué dans la section précédente.
Activation des restrictions d'accès
Pour tirer parti du support des restrictions d'accès de l'environnement PDE, il est nécessaire que les plug-ins concernés contiennent un bundle OSGi MANIFEST.MF ; c'est la seule restriction. L'environnement PDE se charge du reste, notamment de la gestion du chemin d'accès aux classes des plug-ins.
Si le plug-in ne contient pas un fichier MANIFEST.MF, vous pouvez le créer comme suit :
Inspection des règles d'accès
Vous pouvez inspecter les règles de restriction d'accès imposées sur chaque entrée du chemin d'accès à la classe par PDE sur la page de propriétés Chemin de compilation Java de votre projet de plug-in.