Class OSGIListener

  • All Implemented Interfaces:
    java.util.EventListener, org.osgi.framework.BundleActivator, org.osgi.framework.BundleListener, org.osgi.framework.SynchronousBundleListener

    public class OSGIListener
    extends java.lang.Object
    implements org.osgi.framework.BundleActivator, org.osgi.framework.SynchronousBundleListener
    OSGi class that monitors which bundles provide classes that the ORB needs to instantiate for initialization.

    Note that OSGIListener must be a Bundle-Activator in the glassfish-corba-orb bundle.

    Any bundle that provides ORB classes to the ORB initialization code must declare all such classes in a comma-separated list in the bundle manifest with the keywork ORB-Class-Provider.

    • Field Detail

      • lock

        private static final java.util.concurrent.locks.ReadWriteLock lock
      • ORB_PROVIDER_KEY

        private static final java.lang.String ORB_PROVIDER_KEY
        See Also:
        Constant Field Values
      • pkgAdmin

        private static org.osgi.service.packageadmin.PackageAdmin pkgAdmin
      • classNameMap

        private static java.util.Map<java.lang.String,​org.osgi.framework.Bundle> classNameMap
      • packageNameMap

        private static java.util.Map<java.lang.String,​org.osgi.framework.Bundle> packageNameMap
      • classNameResolver

        private static org.glassfish.pfl.basic.func.UnaryFunction<java.lang.String,​java.lang.Class<?>> classNameResolver
    • Constructor Detail

      • OSGIListener

        public OSGIListener()
    • Method Detail

      • setPackageAdmin

        private static void setPackageAdmin​(org.osgi.service.packageadmin.PackageAdmin pa)
      • secureGetHeaders

        private static java.util.Dictionary secureGetHeaders​(org.osgi.framework.Bundle bundle)
      • secureLoadClass

        private static java.lang.Class<?> secureLoadClass​(org.osgi.framework.Bundle bundle,
                                                          java.lang.String className)
                                                   throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • getBundleEventType

        private static java.lang.String getBundleEventType​(int type)
      • classNotFoundInBundle

        @InfoMethod
        private void classNotFoundInBundle​(java.lang.String arg)
      • foundClassInBundle

        @InfoMethod
        private void foundClassInBundle​(java.lang.String arg,
                                        java.lang.String name)
      • classNameResolver

        public static org.glassfish.pfl.basic.func.UnaryFunction<java.lang.String,​java.lang.Class<?>> classNameResolver()
      • insertOrbProvider

        @InfoMethod
        private void insertOrbProvider​(java.lang.String cname,
                                       java.lang.String bname)
      • insertBundlePackage

        @InfoMethod
        private void insertBundlePackage​(java.lang.String pname,
                                         java.lang.String bname)
      • insertClasses

        private void insertClasses​(org.osgi.framework.Bundle bundle)
      • removeOrbProvider

        @InfoMethod
        private void removeOrbProvider​(java.lang.String cname,
                                       java.lang.String bname)
      • removeBundlePackage

        @InfoMethod
        private void removeBundlePackage​(java.lang.String pname,
                                         java.lang.String bname)
      • removeClasses

        private void removeClasses​(org.osgi.framework.Bundle bundle)
      • getBundleForClass

        private static org.osgi.framework.Bundle getBundleForClass​(java.lang.String className)
      • probeBundlesForProviders

        @InfoMethod
        private void probeBundlesForProviders()
      • start

        public void start​(org.osgi.framework.BundleContext context)
        Specified by:
        start in interface org.osgi.framework.BundleActivator
      • stop

        public void stop​(org.osgi.framework.BundleContext context)
        Specified by:
        stop in interface org.osgi.framework.BundleActivator
      • receivedBundleEvent

        @InfoMethod
        private void receivedBundleEvent​(java.lang.String type,
                                         java.lang.String name)
      • bundleChanged

        public void bundleChanged​(org.osgi.framework.BundleEvent event)
        Specified by:
        bundleChanged in interface org.osgi.framework.BundleListener