Class DefaultFileLocatorHelper
- java.lang.Object
-
- org.eclipse.jetty.osgi.boot.utils.internal.DefaultFileLocatorHelper
-
- All Implemented Interfaces:
BundleFileLocatorHelper
public class DefaultFileLocatorHelper extends java.lang.Object implements BundleFileLocatorHelper
DefaultFileLocatorHelperFrom a bundle to its location on the filesystem. Assumes the bundle is not a jar.
-
-
Field Summary
-
Fields inherited from interface org.eclipse.jetty.osgi.boot.utils.BundleFileLocatorHelper
CLASS_NAME, DEFAULT
-
-
Constructor Summary
Constructors Constructor Description DefaultFileLocatorHelper()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Enumeration<java.net.URL>findEntries(org.osgi.framework.Bundle bundle, java.lang.String entryPath)Helper method equivalent to Bundle#getEntry(String entryPath) except that it searches for entries in the fragments by using the Bundle#findEntries method.java.io.FilegetBundleInstallLocation(org.osgi.framework.Bundle bundle)Works with equinox, felix, nuxeo and probably more.java.io.FilegetFileInBundle(org.osgi.framework.Bundle bundle, java.lang.String path)Locate a file inside a bundle.java.net.URLgetFileURL(java.net.URL url)Only useful for equinox: on felix we get the file:// url already.java.net.URLgetLocalURL(java.net.URL url)Only useful for equinox: on felix we get the file:// or jar:// url already.java.io.File[]locateJarsInsideBundle(org.osgi.framework.Bundle bundle)If the bundle is a jar, returns the jar.static booleanmatch(java.lang.String name, java.lang.String... names)
-
-
-
Method Detail
-
match
public static boolean match(java.lang.String name, java.lang.String... names)
-
getBundleInstallLocation
public java.io.File getBundleInstallLocation(org.osgi.framework.Bundle bundle) throws java.lang.ExceptionWorks 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.- Specified by:
getBundleInstallLocationin interfaceBundleFileLocatorHelper- Parameters:
bundle- The bundle- Returns:
- Its installation location as a file.
- Throws:
java.lang.Exception- if unable to get the bundle install location
-
getFileInBundle
public java.io.File getFileInBundle(org.osgi.framework.Bundle bundle, java.lang.String path) throws java.lang.ExceptionLocate a file inside a bundle.- Specified by:
getFileInBundlein interfaceBundleFileLocatorHelper- Parameters:
bundle- the bundlepath- the path- Returns:
- file object
- Throws:
java.lang.Exception- if unable to get the file in the bundle
-
findEntries
public java.util.Enumeration<java.net.URL> findEntries(org.osgi.framework.Bundle bundle, java.lang.String entryPath)Helper method equivalent to Bundle#getEntry(String entryPath) except that it searches for entries in the fragments by using the Bundle#findEntries method.- Specified by:
findEntriesin interfaceBundleFileLocatorHelper- Parameters:
bundle- the bundleentryPath- the entry path- Returns:
- null or all the entries found for that path.
-
locateJarsInsideBundle
public java.io.File[] locateJarsInsideBundle(org.osgi.framework.Bundle bundle) throws java.lang.ExceptionIf 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.
- Specified by:
locateJarsInsideBundlein interfaceBundleFileLocatorHelper- Parameters:
bundle- the bundle- Returns:
- The jar(s) file that is either the bundle itself, either the jars embedded inside it.
- Throws:
java.lang.Exception- if unable to locate the jars
-
getLocalURL
public java.net.URL getLocalURL(java.net.URL url) throws java.lang.ExceptionOnly useful for equinox: on felix we get the file:// or jar:// url already. Other OSGi implementations have not been testedGet a URL to the bundle entry that uses a common protocol (i.e. file: jar: or http: etc.).
- Specified by:
getLocalURLin interfaceBundleFileLocatorHelper- Parameters:
url- the url- Returns:
- a URL to the bundle entry that uses a common protocol
- Throws:
java.lang.Exception- if unable to get the local url
-
getFileURL
public java.net.URL getFileURL(java.net.URL url) throws java.lang.ExceptionOnly useful for equinox: on felix we get the file:// url already. Other OSGi implementations have not been testedGet 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.
- Specified by:
getFileURLin interfaceBundleFileLocatorHelper- Parameters:
url- the url- Returns:
- a URL to the content of the bundle entry that uses the file: protocol
- Throws:
java.lang.Exception- if unable to get the file url
-
-