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:

  1. Accesible
  2. Prohibido
  3. Interno
  4. Interno con amigos

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 accesibles

 

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:

  1. El compilador marcará las referencias a paquetes prohibidos con un error.
  2. Los tipos de los paquetes prohibidos NO están disponibles como propuestas en la asistencia de contenido.

Notas:

  1. Todos los plug-ins del kit de desarrollo de software (SDK) de Eclipse enumeran todos sus paquetes en la sección Paquetes exportados; por tanto, ninguno de los paquetes del SDK tiene prohibido el acceso.
  2. El nivel de gravedad para referencias prohibidas se establece en la página de preferencias Java > Compilador > Errores/Avisos > API obsoleta y restringida

    Se recomienda encarecidamente que la gravedad de una referencia prohibida se mantenga en error.

    Preferencias prohibidas

 

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.

acceso desaconsejado

Se toman dos medidas para disuadir a los plug-ins en sentido descendente de hacer referencia a paquetes internos:

acceso desaconsejado

asistencia de contenido desaconsejada

El nivel de gravedad para referencias desaconsejadas puede establecerse en la página de preferencias Java > Compilador > Errores/Avisos > API obsoleta y restringida.

Preferencias desaconsejadas

 

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.

Amigos

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:

  1. Abra plugin.xml en el editor de manifiestos de plug-in.
  2. En la sección Contenido de plug-in de la página Visión general, pulse en el enlace 'crear un manifiesto de paquete compuesto OSGi'.

convertir a manifest.mf

 

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.

Propiedades de vía de acceso de construcción Java