Class FelixFramework

java.lang.Object
com.yahoo.jdisc.core.FelixFramework
All Implemented Interfaces:
OsgiFramework

public class FelixFramework extends Object implements OsgiFramework
Author:
Simon Thoresen Hult, gjoranv
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    allowDuplicateBundles(Collection<org.osgi.framework.Bundle> bundles)
    Allows this framework to install duplicates of the given collection of bundles.
    org.osgi.framework.BundleContext
    Returns the BundleContext of this framework's system bundle.
    List<org.osgi.framework.Bundle>
    Returns an iterable collection of all installed bundles.
    List<org.osgi.framework.Bundle>
    getBundles(org.osgi.framework.Bundle requestingBundle)
    Returns all installed bundles that are visible to the requesting bundle.
    List<org.osgi.framework.Bundle>
    installBundle(String bundleLocation)
    Installs a bundle from the specified location.
    boolean
    Returns true if this is a Felix based framework and not e.g.
    void
    NOTE: This method is no longer used by the Jdisc container framework, but kept for completeness.
    void
    This method starts the framework instance.
    void
    startBundles(List<org.osgi.framework.Bundle> bundles, boolean privileged)
    Starts the given Bundles.
    void
    Synchronously shut down the framework.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • FelixFramework

      @Inject public FelixFramework(FelixParams params)
  • Method Details

    • start

      public void start() throws org.osgi.framework.BundleException
      Description copied from interface: OsgiFramework
      This method starts the framework instance. Before this method is called, any call to OsgiFramework.installBundle(String) or OsgiFramework.bundles() will generate a NullPointerException.
      Specified by:
      start in interface OsgiFramework
      Throws:
      org.osgi.framework.BundleException - if any error occurs
    • stop

      public void stop() throws org.osgi.framework.BundleException
      Description copied from interface: OsgiFramework
      Synchronously shut down the framework. It must be called at the end of a session to shutdown all active bundles.
      Specified by:
      stop in interface OsgiFramework
      Throws:
      org.osgi.framework.BundleException - if any error occurs
    • installBundle

      public List<org.osgi.framework.Bundle> installBundle(String bundleLocation) throws org.osgi.framework.BundleException
      Description copied from interface: OsgiFramework

      Installs a bundle from the specified location. The specified location identifier will be used as the identity of the bundle. If a bundle containing the same location identifier is already installed, the Bundle object for that bundle is returned. All bundles listed in the OsgiHeader.PREINSTALL_BUNDLE manifest header are also installed. The bundle at index 0 of the returned list matches the bundleLocation argument.

      NOTE: When this method installs more than one bundle, AND one of those bundles throw an exception during installation, the bundles installed prior to throwing the exception will remain installed. To enable the caller to recover from such a situation, this method wraps any thrown exception within a BundleInstallationException that contains the list of successfully installed bundles.

      It would be preferable if this method was exception-safe (that it would roll-back all installed bundles in the case of an exception), but that can not be implemented thread-safely since an Application may choose to install bundles concurrently through any available BundleContext.

      Specified by:
      installBundle in interface OsgiFramework
      Parameters:
      bundleLocation - the location identifier of the bundle to install
      Returns:
      the list of Bundle objects installed, the object at index 0 matches the given location
      Throws:
      BundleInstallationException - if the input stream cannot be read, or the installation of a bundle failed, or the caller does not have the appropriate permissions, or the system BundleContext is no longer valid
      org.osgi.framework.BundleException
    • startBundles

      public void startBundles(List<org.osgi.framework.Bundle> bundles, boolean privileged) throws org.osgi.framework.BundleException
      Description copied from interface: OsgiFramework
      Starts the given Bundles. The parameter privileged tells the framework whether or not privileges are available, and is checked against the OsgiHeader.PRIVILEGED_ACTIVATOR header of each Bundle being started. Any bundle that is a fragment is silently ignored.
      Specified by:
      startBundles in interface OsgiFramework
      Parameters:
      bundles - the bundles to start
      privileged - whether or not privileges are available
      Throws:
      org.osgi.framework.BundleException - if a bundle could not be started. This could be because a code dependency could not be resolved or the specified BundleActivator could not be loaded or threw an exception.
    • refreshPackages

      public void refreshPackages()
      NOTE: This method is no longer used by the Jdisc container framework, but kept for completeness.
      Specified by:
      refreshPackages in interface OsgiFramework
    • bundleContext

      public org.osgi.framework.BundleContext bundleContext()
      Description copied from interface: OsgiFramework
      Returns the BundleContext of this framework's system bundle. The returned BundleContext can be used by the caller to act on behalf of this bundle. This method may return null if it has no valid BundleContext.
      Specified by:
      bundleContext in interface OsgiFramework
      Returns:
      a BundleContext for the system bundle, or null
    • bundles

      public List<org.osgi.framework.Bundle> bundles()
      Description copied from interface: OsgiFramework
      Returns an iterable collection of all installed bundles. This method returns a list of all bundles installed in the OSGi environment at the time of the call to this method. However, since the OsgiFramework is a very dynamic environment, bundles can be installed or uninstalled at anytime.
      Specified by:
      bundles in interface OsgiFramework
      Returns:
      an iterable collection of Bundle objects, one object per installed bundle
    • getBundles

      public List<org.osgi.framework.Bundle> getBundles(org.osgi.framework.Bundle requestingBundle)
      Description copied from interface: OsgiFramework
      Returns all installed bundles that are visible to the requesting bundle. Bundle visibility is controlled via implementations of FindHook;
      Specified by:
      getBundles in interface OsgiFramework
    • allowDuplicateBundles

      public void allowDuplicateBundles(Collection<org.osgi.framework.Bundle> bundles)
      Description copied from interface: OsgiFramework
      Allows this framework to install duplicates of the given collection of bundles. Duplicate detection is handled by the BundleCollisionHook.
      Specified by:
      allowDuplicateBundles in interface OsgiFramework
      Parameters:
      bundles - The bundles to allow duplicates of
    • isFelixFramework

      public boolean isFelixFramework()
      Description copied from interface: OsgiFramework
      Returns true if this is a Felix based framework and not e.g. a test framework.
      Specified by:
      isFelixFramework in interface OsgiFramework