Class PackageAdminServiceTracker
- java.lang.Object
-
- org.eclipse.jetty.osgi.boot.utils.internal.PackageAdminServiceTracker
-
- All Implemented Interfaces:
java.util.EventListener
,org.osgi.framework.ServiceListener
public class PackageAdminServiceTracker extends java.lang.Object implements org.osgi.framework.ServiceListener
PackageAdminServiceTrackerWhen the PackageAdmin service is activated we can look for the fragments attached to this bundle and do a fake "activate" on them.
See particularly the jetty-osgi-boot-jsp fragment bundle that uses this facility.
-
-
Field Summary
Fields Modifier and Type Field Description static PackageAdminServiceTracker
INSTANCE
-
Constructor Summary
Constructors Constructor Description PackageAdminServiceTracker(org.osgi.framework.BundleContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
collectFragmentsAndRequiredBundles(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.PackageAdmin admin, java.util.Map<java.lang.String,org.osgi.framework.Bundle> deps, boolean onlyReexport)
Returns the fragments and the required-bundles.protected void
collectRequiredBundles(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.PackageAdmin admin, java.util.Map<java.lang.String,org.osgi.framework.Bundle> deps, boolean onlyReexport)
A simplistic but good enough parser for the Require-Bundle header.boolean
frameworkHasCompletedAutostarts()
org.osgi.framework.Bundle[]
getFragments(org.osgi.framework.Bundle bundle)
Helper to access the PackageAdmin and return the fragments hosted by a bundle.org.osgi.framework.Bundle[]
getFragmentsAndRequiredBundles(org.osgi.framework.Bundle bundle)
Returns the fragments and the required-bundles of a bundle.void
serviceChanged(org.osgi.framework.ServiceEvent event)
Invokes the optional BundleActivator in each fragment.void
stop()
-
-
-
Field Detail
-
INSTANCE
public static PackageAdminServiceTracker INSTANCE
-
-
Method Detail
-
serviceChanged
public void serviceChanged(org.osgi.framework.ServiceEvent event)
Invokes the optional BundleActivator in each fragment. By convention the bundle activator for a fragment must be in the package that is defined by the symbolic name of the fragment and the name of the class must be 'FragmentActivator'.- Specified by:
serviceChanged
in interfaceorg.osgi.framework.ServiceListener
- Parameters:
event
- TheServiceEvent
object.
-
getFragments
public org.osgi.framework.Bundle[] getFragments(org.osgi.framework.Bundle bundle)
Helper to access the PackageAdmin and return the fragments hosted by a bundle. when we drop the support for the older versions of OSGi, we will stop using the PackageAdmin service.- Parameters:
bundle
- the bundle- Returns:
- the bundle fragment list
-
getFragmentsAndRequiredBundles
public org.osgi.framework.Bundle[] getFragmentsAndRequiredBundles(org.osgi.framework.Bundle bundle)
Returns the fragments and the required-bundles of a bundle. Recursively collect the required-bundles and fragment when the directive visibility:=reexport is added to a required-bundle.- Parameters:
bundle
- the bundle- Returns:
- the bundle fragment and required list
-
collectFragmentsAndRequiredBundles
protected void collectFragmentsAndRequiredBundles(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.PackageAdmin admin, java.util.Map<java.lang.String,org.osgi.framework.Bundle> deps, boolean onlyReexport)
Returns the fragments and the required-bundles. Collects them transitively when the directive 'visibility:=reexport' is added to a required-bundle.- Parameters:
bundle
- the bundleadmin
- the admin packagedeps
- The map of fragment and required bundles associated to the value of the jetty-web attribute.onlyReexport
- true to collect resources and web-fragments transitively if and only if the directive visibility is reexport.
-
collectRequiredBundles
protected void collectRequiredBundles(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.PackageAdmin admin, java.util.Map<java.lang.String,org.osgi.framework.Bundle> deps, boolean onlyReexport)
A simplistic but good enough parser for the Require-Bundle header. Parses the version range attribute and the visibility directive.- Parameters:
bundle
- the bundleadmin
- the admin packagedeps
- The map of required bundles associated to the value of the jetty-web attribute.onlyReexport
- true to collect resources and web-fragments transitively if and only if the directive visibility is reexport.
-
stop
public void stop()
-
frameworkHasCompletedAutostarts
public boolean frameworkHasCompletedAutostarts()
- Returns:
- true if the framework has completed all the start levels.
-
-