2012-08-11 23 views
7

Jak znaleźć pakiet, który eksportuje paczkę?Znajdź pakiet OSGI, który eksportuje pakiet?

Używam felix i mam ciąg znaków typu "com.test", skąd mam wiedzieć, który pakiet eksportuje ten pakiet?

Nie chcę używać programu PackageAdmin, ponieważ został wycofany i naprawdę nie chcę uzyskać nagłówka Export-Package dla każdego pakietu i przeanalizować go.

Wszelkie pomysły?

Odpowiedz

11

Wygląda na to, że chcesz to zrobić programowo, a nie na powłoce Gogo ... Przynajmniej przyjmuję to z tekstu twojego pytania.

Nie ma sposobu, aby powiedzieć "który pakiet" eksportuje dany pakiet, ponieważ może istnieć wiele pakietów eksportujących dowolny pakiet, a pakiet ten może być używany z wielu pakietów przez wiele pakietów. Jeśli masz konkretny pakiet i chcesz się dowiedzieć, który pakiet udostępnia mu pakiet com.test, możesz pobrać wiązkę pakietu importującego Bundle.adapt(BundleWiring.class), a następnie użyć BundleWiring.getRequiredWires(), aby uzyskać dostawców wszystkich zależności pakietu.

Stamtąd po prostu trzeba znaleźć przewód osgi.wiring.package nazw dla pakietu chcesz, to operator tego przewodu będzie BundleCapability z BundleRevision wiązki jesteś zainteresowany.

+0

Jest to w zasadzie to, czego szukałem. Szkoda, że ​​muszę przejrzeć wszystkie pakiety i sprawdzić to. Miałem nadzieję na metodę w ramce, która mówi, oto pakiet, który pakiet go spełnia? Zważywszy, że tak właśnie działa framework, a mimo to musi rozwiązywać zależności. Ale w każdym razie, dzięki za odpowiedź. – Boomah

2

Czy próbowałeś: eksport | grep com.test?

+0

Niestety, powinienem powiedzieć chciałem to zrobić programowo – Boomah

3

Najnowsze wersje Konsola Apache Felix OSGi zawiera wtyczkę "findency founder", która zawiera listę pakietów eksportujących dany pakiet lub klasę. Jest kilka zrzutów ekranu pod adresem http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finder (które wspominają o CQ5, ale wtyczka nie zależy od tego).

To przydatna na poziomie administratora, a jeśli trzeba stwierdzić, że w kodzie można rzucić okiem na kod źródłowy, który pluginu patrz https://issues.apache.org/jira/browse/FELIX-3045

Powiązane problemy