Normas de acceso
El entorno de ejecución de Eclipse 3.1 ofrece al desarrollador de plug-ins la opción de controlar la visibilidad del código de plug-in para los plug-ins en sentido descendente en función del paquete.
Un paquete puede clasificarse como uno de los siguientes:
PDE convierte estas reglas de visibilidad del entorno de ejecución en reglas de restricción de acceso al compilador en tiempo de compilación. Como resultado, la violación de una regla de visibilidad queda marcada por el compilador como un aviso o un error, dependiendo de la gravedad de dicha violación.
Con este tipo de soporte en tiempo de compilación, los errores de carga de clases en tiempo de ejecución ya no toman al usuario por sorpresa, y siempre se es consciente de las referencias a tipos internos.
Paquetes accesibles
Los paquetes accesibles son visibles para los plug-ins en sentido descendente incondicionalmente. Mientras que los paquetes API debe entrar en esta categoría, depende por completo del desarrollador decidir qué otros paquetes exportados por el plug-in deberían obtener este nivel de visibilidad.
Para declarar un paquete como accesible, debe listarlo en la sección Paquetes exportados del Tiempo de ejecución del editor de manifiestos de plug-ins y dejar el valor por omisión de visibilidad tal como está.
Paquetes prohibidos
Puede ocultar un paquete de los plug-ins en sentido descendente en todo momento excluyéndolo de la listas en la sección Paquetes exportados en la página Tiempo de ejecución del editor de manifiestos de plug-ins.
Las referencias a tipos desde un paquete prohibido dan como resultado errores de carga de clases en tiempo de ejecución.
Para evitar estas situaciones desagradables:
Notas:
Se recomienda encarecidamente que la gravedad de una referencia prohibida se mantenga en error.
Paquetes internos
Los paquetes internos son paquetes que no están pensados para que los utilicen los plug-ins en sentido descendente. Estos paquetes son visibles para los plug-ins en sentido descendente por omisión.
Los paquetes internos están ocultos a los plug-ins en sentido descendente solamente cuando se lanza Eclipse en modalidad estricta (es decir, al lanzarlo con el argumento VM -Dosgi.resolverMode=strict).
Los paquetes internos deben listarse en la sección Paquetes exportados de la página Tiempo de ejecución del editor de manifiestos de plug-ins con la opción oculto seleccionada.
Se toman dos medidas para disuadir a los plug-ins en sentido descendente de hacer referencia a paquetes internos:
El nivel de gravedad para referencias desaconsejadas puede
establecerse en la página de preferencias
Java > Compilador > Errores/Avisos > API obsoleta y
restringida.
Paquetes internos con amigos
Es importante que un plug-in pueda otorgar acceso completo a sus paquetes internos a plug-ins "amigos" designados. Por ejemplo, el código PDE se divide entre múltiples plug-ins, y el plug-in org.eclipse.pde.ui deberá tener acceso completo a los paquetes internos de org.eclipse.pde.core.
En el ejemplo siguiente, el plug-in con amigos org.eclipse.pde.ui tiene pleno acceso al paquete org.eclipse.pde.internal.core.bundle desde el plug-in org.eclipse.pde.core.
Los amigos son libres de hacer referencia a cualquier tipo del paquete org.eclipse.pde.internal.core.bundle con permiso del compilador.
Si, por otro lado, cualquier otro plug-in hace referencia a un tipo del paquete org.eclipse.pde.internal.core.bundle, el compilador marca la referencia como una referencia desaconsejada, tal como se describe en la sección anterior.
Cómo habilitar restricciones de acceso
Para sacar provecho del soporte de restricción de acceso de PDE, el único requisito es que los plug-ins en cuestión contengan un paquete compuesto OSGi MANIFEST.MF. El PDE se encargará del resto, incluida la gestión de la vía de acceso de clases del plug-in.
Si el plug-in no contiene un archivo MANIFEST.MF, puede crearse ese archivo como se indica a continuación:
Inspección de las reglas de acceso
Puede inspeccionar las reglas de restricción de acceso impuestas en cada entrada de la vía de acceso de clases por PDE en la página de propiedades Vía de construcción Java del proyecto de plug-in.