2012-08-11 26 views
7

¿Cómo puedo encontrar el paquete que exporta un paquete?Encuentra el paquete OSGI que exporta un paquete?

Estoy utilizando felix y tengo una cadena como "com.test", ¿cómo sé qué paquete exporta ese paquete?

No quiero usar PackageAdmin ya que ha quedado obsoleto, y realmente no quiero obtener el encabezado Export-Package para cada paquete y analizarlo.

¿Alguna idea?

Respuesta

11

Parece que quieres hacer esto programáticamente, no en el shell de Gogo ... al menos lo asumiré por la redacción de tu pregunta.

No existe una manera real de decir "qué paquete" exporta un paquete determinado, ya que puede haber muchos paquetes que exportan un paquete dado y muchos paquetes pueden usar ese paquete en muchos paquetes. Si tiene un paquete específico y desea saber qué paquete le proporciona el paquete com.test, puede obtener el cableado del paquete de importación Bundle.adapt(BundleWiring.class) y luego usar BundleWiring.getRequiredWires() para obtener los proveedores de todas las dependencias del paquete.

A partir de ahí sólo tiene que encontrar el hilo de osgi.wiring.package espacio de nombres para el paquete que desea, entonces el proveedor de dicho alambre habrá un BundleCapability de un BundleRevision del paquete le interesa.

+0

Esto es básicamente lo que estaba buscando. Es una pena que tenga que pasar por todos los paquetes y comprobar esto sin embargo. Esperaba un método en el marco que diga, aquí hay un paquete, ¿qué paquete lo satisface? Dado que esto es lo que el marco está haciendo detrás de escena cuando tiene que resolver dependencias de todos modos. Pero de todos modos, gracias por la respuesta. – Boomah

2

Ha intentado: Exportaciones | grep com.test?

+0

Lo siento, debería haber dicho que quería hacer esto mediante programación – Boomah

3

Las versiones recientes de la consola OSGi de Apache Felix incluye un complemento de "buscador de dependencia" que enumera los paquetes que exportan un paquete o clase determinado. Hay algunas capturas de pantalla en http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finder (que mencionan CQ5 pero el complemento no depende de eso).

que es útil a nivel de administración, y si es necesario encontrar que en el código se podría tener una mirada en el código fuente de ese plugin, consulte https://issues.apache.org/jira/browse/FELIX-3045

Cuestiones relacionadas