Restricciones de acceso

El tiempo de ejecución de Eclipse 3.1 ofrece al desarrollador de conectores la opción de controlar por paquete la visibilidad del código de conector para los conectores en sentido descendente.

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 tiempo 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 la disponibilidad de este 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 al hacer referencia a tipos internos.

 

Paquetes accesibles

Los paquetes accesibles son visibles para los conectores 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 conector 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 conectores y dejar el valor por omisión de visibilidad tal como está.

Paquetes accesibles

 

Paquetes prohibidos

Puede ocultar un paquete de los conectores 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 conectores.

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 conectores del kit de desarrollo de software (SDK) de Eclipse enumeran todos sus paquetes en la sección Paquetes exportados.  Por lo tanto, ninguno de los paquetes de SDK tienen el acceso prohibido.
  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 conectores en sentido descendente. Estos paquetes son visibles para los conectores en sentido descendente por omisión.

Los paquetes internos están ocultos a los conectores 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 conectores con la opción oculto seleccionada.

acceso disuadido

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

acceso disuadido

asistencia de contenido disuadida

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

Preferencias disuadidas

 

Paquetes internos con amigos

Es importante que un conector pueda otorgar acceso completo a sus paquetes internos a conectores "amigos" designados. Por ejemplo, el código PDE se divide entre múltiples conectores, y el conector org.eclipse.pde.ui deberá tener acceso completo a los paquetes internos de org.eclipse.pde.core.

En el ejemplo siguiente, los amigos (los conectores org.eclipse.pde y org.eclipse.pde.ui) tienen acceso completo al paquete org.eclipse.pde.internal.core.bundle desde el conector 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 conector hace referencia a un tipo del paquete org.eclipse.pde.internal.core.bundle, el compilador marca la referencia como una referencia disuadida, tal como se describe en la sección anterior.

 

Cómo habilitar restricciones de acceso

Para beneficiarse del soporte de restricción de acceso de PDE, el único requisito es que los conectores en cuestión contengan un paquete compuesto OSGi manifest.mf. El PDE, que gestiona la vía de acceso de clases de conectores, se encarga del resto.

Si el conector no contiene un archivo manifest.mf, puede crearse ese archivo como se indica a continuación:

  1. Abra el plugin.xml en el editor de manifiestos de conector.
  2. En la sección Contenido de conector 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 conector.

Propiedades de la vía de construcción Java