OSGi-aware {@link ResourcePatternResolver}. Can find resources in the
bundle jar and
bundle space. See {@link OsgiBundleResource} for more information.
ClassPath support As mentioned by {@link PathMatchingResourcePatternResolver}, class-path pattern matching needs to resolve the class-path structure to a file-system location (be it an actual folder or a jar). Inside the OSGi environment this is problematic as the bundles can be loaded in memory directly from input streams. To avoid relying on each platform bundle storage structure, this implementation tries to determine the bundles that assemble the given bundle class-path and analyze each of them individually. This involves the bundle archive (including special handling of the
Bundle-Classpath
as it is computed at runtime), the bundle required packages and its attached fragments. Depending on the configuration of running environment, this might cause significant IO activity which can affect performance.
Note: Currently,
static imports as well as
Bundle-Classpath
and
Required-Bundle
entries are supported. Support for
DynamicPackage-Import
depends on how/when the underlying platform does the wiring between the dynamically imported bundle and the given bundle.
Portability Note: Since it relies only on the OSGi API, this implementation depends heavily on how closely the platform implements the OSGi spec. While significant tests have been made to ensure compatibility, one
might experience different behaviour especially when dealing with jars with missing folder entries or boot-path delegation. It is strongly recommended that wildcard resolution be thoroughly tested before switching to a different platform before you rely on it.
@see Bundle
@see OsgiBundleResource
@see PathMatchingResourcePatternResolver
@author Costin Leau