Class JarBundleFile

java.lang.Object
org.nuxeo.osgi.JarBundleFile
All Implemented Interfaces:
BundleFile
Direct Known Subclasses:
NestedJarBundleFile

public class JarBundleFile extends Object implements BundleFile
Author:
Bogdan Stefanescu
  • Field Details

    • jarFile

      protected JarFile jarFile
    • urlBase

      protected String urlBase
  • Constructor Details

  • Method Details

    • findEntries

      public Enumeration<URL> findEntries(String name, String pattern, boolean recurse)
      Description copied from interface: BundleFile
      Finds entries in that bundle.
      Specified by:
      findEntries in interface BundleFile
      See Also:
      • Bundle.findEntries(String, String, boolean)
    • getEntry

      public URL getEntry(String name)
      Description copied from interface: BundleFile
      Gets the entry at the given path in this bundle.
      Specified by:
      getEntry in interface BundleFile
      Returns:
      the entry URL if any null otherwise
      See Also:
      • Bundle.getEntry(String)
    • getEntryPaths

      public Enumeration<String> getEntryPaths(String path)
      Description copied from interface: BundleFile
      Returns an Enumeration of all the paths (String objects) to entries within the bundle whose longest sub-path matches the supplied path argument.
      Specified by:
      getEntryPaths in interface BundleFile
      See Also:
      • Bundle.getEntryPaths(String)
    • getFile

      public File getFile()
      Description copied from interface: BundleFile
      Gets the current location of the bundle as a file.
      Specified by:
      getFile in interface BundleFile
      Returns:
      the bundle file or null if the bundle is not a file
    • getFileName

      public String getFileName()
      Description copied from interface: BundleFile
      Gets the original file name of this bundle.
      Specified by:
      getFileName in interface BundleFile
      Returns:
      the bundle file name
    • getLocation

      public String getLocation()
      Description copied from interface: BundleFile
      Gets the original location of this bundle.

      This is an URI string pointing to the original locatioon of the bundle.

      Specified by:
      getLocation in interface BundleFile
      Returns:
      the location
    • getManifest

      public Manifest getManifest()
      Description copied from interface: BundleFile
      Gets the bundle manifest.
      Specified by:
      getManifest in interface BundleFile
      Returns:
      the bundle manifest
    • getNestedBundles

      public Collection<BundleFile> getNestedBundles(File tmpDir) throws IOException
      Description copied from interface: BundleFile
      Gets a list with nested bundles or null if none. The bundle Manifest headers Bundle-ClassPath and Class-Path will be used to retrieve nested jars.
      Specified by:
      getNestedBundles in interface BundleFile
      Parameters:
      tmpDir - optional temporary dir if the nested bundle should be extracted from an archive
      Throws:
      IOException
    • extractNestedJar

      public static void extractNestedJar(JarFile file, String path, File dest) throws IOException
      Throws:
      IOException
    • extractNestedJar

      public static void extractNestedJar(JarFile file, ZipEntry entry, File dest) throws IOException
      Throws:
      IOException
    • findNestedBundles

      public Collection<BundleFile> findNestedBundles(File tmpDir) throws IOException
      Description copied from interface: BundleFile
      Get a list with nested bundles or null if none. The bundle file will be scanned for nested JARs.
      Specified by:
      findNestedBundles in interface BundleFile
      Parameters:
      tmpDir - optional temporary dir if the nested bundle should be extracted from an archive
      Throws:
      IOException
    • getSymbolicName

      public String getSymbolicName()
      Description copied from interface: BundleFile
      Gets this bundle symbolic name. If this bundle is an OSGi bundle, then the Bundle-SymbolicName manifest header is returned, otherwise null is returned.
      Specified by:
      getSymbolicName in interface BundleFile
      Returns:
      null if not an OSGi bundle, the OSGI bundle symbolic name otherwise
    • getURL

      public URL getURL()
      Description copied from interface: BundleFile
      Gets the current location of the bundle as an URL (it may be different from the original location).
      Specified by:
      getURL in interface BundleFile
      Returns:
      the bundle url
    • getJarURL

      public URL getJarURL()
    • isDirectory

      public boolean isDirectory()
      Description copied from interface: BundleFile
      Checks if this bundle is a directory (an exploded jar).
      Specified by:
      isDirectory in interface BundleFile
      Returns:
      true if the bundle is a directory, false otherwise
    • isJar

      public boolean isJar()
      Description copied from interface: BundleFile
      Checks if this bundle is a JAR.
      Specified by:
      isJar in interface BundleFile
      Returns:
      true if the bundle is a JAR, false otherwise
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getEntryUrl

      protected final URL getEntryUrl(String name) throws MalformedURLException
      Throws:
      MalformedURLException
    • close

      public void close() throws IOException
      Description copied from interface: BundleFile
      Close underlying file resources *
      Specified by:
      close in interface BundleFile
      Throws:
      IOException