Interface BundleFileLocatorHelper

All Known Implementing Classes:
DefaultFileLocatorHelper

public interface BundleFileLocatorHelper
BundleFileLocatorHelper

From a bundle to its location on the filesystem. Assumes the bundle is not a jar.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The name of the custom implementation for this interface in a fragment.
    The default instance supports felix and equinox
  • Method Summary

    Modifier and Type
    Method
    Description
    findEntries(org.osgi.framework.Bundle bundle, String entryPath)
    Helper method equivalent to Bundle#getEntry(String entryPath) except that it searches for entries in the fragments by using the findEntries method.
    getBundleInstallLocation(org.osgi.framework.Bundle bundle)
    Works with equinox, felix, nuxeo and probably more.
    getFileInBundle(org.osgi.framework.Bundle bundle, String path)
    Locate a file inside a bundle.
    Only useful for equinox: on felix we get the file:// url already.
    Only useful for equinox: on felix we get the file:// or jar:// url already.
    locateJarsInsideBundle(org.osgi.framework.Bundle bundle)
    If the bundle is a jar, returns the jar.
  • Field Details

    • CLASS_NAME

      static final String CLASS_NAME
      The name of the custom implementation for this interface in a fragment.
      See Also:
    • DEFAULT

      static final BundleFileLocatorHelper DEFAULT
      The default instance supports felix and equinox
  • Method Details

    • getBundleInstallLocation

      File getBundleInstallLocation(org.osgi.framework.Bundle bundle) throws Exception
      Works with equinox, felix, nuxeo and probably more. Not exactly in the spirit of OSGi but quite necessary to support self-contained webapps and other situations.

      Currently only works with bundles that are not jar.

      Parameters:
      bundle - The bundle
      Returns:
      Its installation location as a file.
      Throws:
      Exception - if unable to get the install location
    • getFileInBundle

      File getFileInBundle(org.osgi.framework.Bundle bundle, String path) throws Exception
      Locate a file inside a bundle.
      Parameters:
      bundle - the bundle
      path - the path
      Returns:
      file the file object
      Throws:
      Exception - if unable to get the file
    • locateJarsInsideBundle

      File[] locateJarsInsideBundle(org.osgi.framework.Bundle bundle) throws Exception
      If the bundle is a jar, returns the jar. If the bundle is a folder, look inside it and search for jars that it returns.

      Good enough for our purpose (TldLocationsCache when it scans for tld files inside jars alone. In fact we only support the second situation for development purpose where the bundle was imported in pde and the classes kept in a jar.

      Parameters:
      bundle - the bundle
      Returns:
      The jar(s) file that is either the bundle itself, either the jars embedded inside it.
      Throws:
      Exception - if unable to locate the jars
    • findEntries

      Enumeration<URL> findEntries(org.osgi.framework.Bundle bundle, String entryPath)
      Helper method equivalent to Bundle#getEntry(String entryPath) except that it searches for entries in the fragments by using the findEntries method.
      Parameters:
      bundle - the bundle
      entryPath - the entry path
      Returns:
      null or all the entries found for that path.
    • getLocalURL

      URL getLocalURL(URL url) throws Exception
      Only useful for equinox: on felix we get the file:// or jar:// url already. Other OSGi implementations have not been tested

      Get a URL to the bundle entry that uses a common protocol (i.e. file: jar: or http: etc.).

      Parameters:
      url - the url
      Returns:
      a URL to the bundle entry that uses a common protocol
      Throws:
      Exception - if unable to get the local url
    • getFileURL

      URL getFileURL(URL url) throws Exception
      Only useful for equinox: on felix we get the file:// url already. Other OSGi implementations have not been tested

      Get a URL to the content of the bundle entry that uses the file: protocol. The content of the bundle entry may be downloaded or extracted to the local file system in order to create a file: URL.

      Parameters:
      url - the url
      Returns:
      a URL to the content of the bundle entry that uses the file: protocol
      Throws:
      Exception - if unable to get the file url