public class OsgiBundleResource
extends org.springframework.core.io.AbstractResource
implements org.springframework.core.io.ContextResource
osgibundle:
/
BUNDLE_URL_PREFIX
prefix is being used or none is specified. This
space cotnains the bundle jar and its attached fragments.osgibundlejar:
/
BUNDLE_JAR_URL_PREFIX
is specified. This space contains just the
bundle jar.ResourceUtils.CLASSPATH_URL_PREFIX
is
encountered. This space contains the bundle classpath, namely the bundle jar,
its attached fragments and imported packages.bundleentry:
and
bundleresource:
under Equinox, bundle:
under
Knopflefish and Felix, etc..) are supported. Resources outside the OSGi space
(file:
, http:
, etc..) are supported as well as the
path is being resolved to an URL
.
If no prefix is specified, the bundle space will be used for
locating a resource.
Note: When the bundle space (bundle jar and its
attached fragments) is being searched, multiple URLs can be found but this
implementation will return only the first one. Consider using
OsgiBundleResourcePatternResolver
to retrieve all entries.Modifier and Type | Field and Description |
---|---|
static String |
BUNDLE_JAR_URL_PREFIX
Prefix for searching only the bundle raw jar.
|
static String |
BUNDLE_URL_PREFIX
Prefix for searching inside the owning bundle space.
|
Constructor and Description |
---|
OsgiBundleResource(org.osgi.framework.Bundle bundle,
String path)
Constructs a new
OsgiBundleResource instance. |
Modifier and Type | Method and Description |
---|---|
org.springframework.core.io.Resource |
createRelative(String relativePath)
Returns a resource relative to this resource.
|
boolean |
equals(Object obj)
This implementation compares the underlying bundle and path locations.
|
boolean |
exists()
Return whether this resource actually exists in physical form.
|
String |
getDescription()
This implementation returns a description that includes the bundle
location.
|
File |
getFile()
Returns a
File handle for this resource. |
String |
getFilename()
Returns the filename of this resources.
|
InputStream |
getInputStream()
Returns an
InputStream to this resource. |
String |
getPathWithinContext() |
URL |
getURL()
Locates the resource in the underlying bundle based on the prefix, if it
exists.
|
int |
hashCode()
This implementation returns the hash code of the underlying class path
location.
|
long |
lastModified() |
contentLength, getFileForLastModifiedCheck, getURI, isOpen, isReadable, toString
public static final String BUNDLE_URL_PREFIX
public static final String BUNDLE_JAR_URL_PREFIX
public OsgiBundleResource(org.osgi.framework.Bundle bundle, String path)
OsgiBundleResource
instance.bundle
- OSGi bundle used by this resourcepath
- resource path inside the bundle.public InputStream getInputStream() throws IOException
InputStream
to this resource. This implementation
opens an InputStream for the given URL
. It sets
the UseCaches flag to false
, mainly to avoid jar
file locking on Windows.
getInputStream
in interface org.springframework.core.io.InputStreamSource
IOException
- if the stream could not be openedURL.openConnection()
,
URLConnection.setUseCaches(boolean)
,
URLConnection.getInputStream()
public URL getURL() throws IOException
getURL
in interface org.springframework.core.io.Resource
getURL
in class org.springframework.core.io.AbstractResource
IOException
- if the resource cannot be resolved as URL, i.e. if
the resource is not available as descriptorBundle.getEntry(String)
,
Bundle.getResource(String)
public org.springframework.core.io.Resource createRelative(String relativePath)
OsgiBundleResource
, applying the given path relative to
the path of the underlying resource of this descriptor.createRelative
in interface org.springframework.core.io.Resource
createRelative
in class org.springframework.core.io.AbstractResource
relativePath
- the relative path (relative to this resource)IOException
- if the relative resource cannot be determinedStringUtils.applyRelativePath(String,
String)
public String getFilename()
getFilename
in interface org.springframework.core.io.Resource
getFilename
in class org.springframework.core.io.AbstractResource
StringUtils.getFilename(String)
public File getFile() throws IOException
File
handle for this resource. This method does a
best-effort attempt to locate the bundle resource on the file system. It
is strongly recommended to use getInputStream()
method instead
which works no matter if the bundles are saved (in exploded form or not)
on the file system.getFile
in interface org.springframework.core.io.Resource
getFile
in class org.springframework.core.io.AbstractResource
IOException
- if the resource cannot be resolved as absolute file
path, i.e. if the resource is not available in a file systempublic String getDescription()
getDescription
in interface org.springframework.core.io.Resource
public boolean equals(Object obj)
equals
in class org.springframework.core.io.AbstractResource
public int hashCode()
hashCode
in class org.springframework.core.io.AbstractResource
public long lastModified() throws IOException
lastModified
in interface org.springframework.core.io.Resource
lastModified
in class org.springframework.core.io.AbstractResource
IOException
public String getPathWithinContext()
getPathWithinContext
in interface org.springframework.core.io.ContextResource
public boolean exists()
This method performs a definitive existence check, whereas the existence
of a Resource
handle only guarantees a valid descriptor
handle.
exists
in interface org.springframework.core.io.Resource
exists
in class org.springframework.core.io.AbstractResource
Copyright © 2006-2013. All Rights Reserved.