Class BundleClassFinder
- java.lang.Object
-
- org.apache.xbean.osgi.bundle.util.BundleClassFinder
-
- Direct Known Subclasses:
BundleAssignableClassFinder
public class BundleClassFinder extends java.lang.Object
Finds all available classes to a bundle by scanning Bundle-ClassPath, Import-Package, and Require-Bundle headers of the given bundle and its fragments. DynamicImport-Package header is not considered during scanning.- Version:
- $Rev: 1160131 $ $Date: 2011-08-22 09:07:20 +0200 (Mon, 22 Aug 2011) $
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BundleClassFinder.DummyDiscoveryFilter
static class
BundleClassFinder.NonImportedPackageDiscoveryFilter
-
Field Summary
Fields Modifier and Type Field Description protected org.osgi.framework.Bundle
bundle
protected ClassDiscoveryFilter
discoveryFilter
protected static java.lang.String
EXT
static ClassDiscoveryFilter
FULL_CLASS_DISCOVERY_FILTER
static ClassDiscoveryFilter
IMPORTED_PACKAGE_EXCLUSIVE_FILTER
protected org.osgi.service.packageadmin.PackageAdmin
packageAdmin
protected static java.lang.String
PATTERN
-
Constructor Summary
Constructors Constructor Description BundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle)
BundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle, ClassDiscoveryFilter discoveryFilter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.String
addSlash(java.lang.String name)
protected BundleClassFinder
createSubBundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle, ClassDiscoveryFilter classDiscoveryFilter)
java.util.Set<java.lang.String>
find()
Finds all available classes to the bundle.protected boolean
isClassAcceptable(java.lang.String name, java.io.InputStream in)
protected boolean
isClassAcceptable(java.net.URL url)
protected org.osgi.framework.Bundle
isWired(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.ExportedPackage[] exports)
protected org.osgi.framework.Bundle
isWired(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.RequiredBundle[] requiredBundles)
java.util.List<java.lang.Class<?>>
loadClasses(java.util.Set<java.lang.String> classes)
protected java.lang.String
toJavaStyleClassName(java.lang.String name)
protected java.lang.String
toJavaStylePackageName(java.lang.String className)
Get the normal Java style package name from the parameter className.
-
-
-
Field Detail
-
FULL_CLASS_DISCOVERY_FILTER
public static final ClassDiscoveryFilter FULL_CLASS_DISCOVERY_FILTER
-
IMPORTED_PACKAGE_EXCLUSIVE_FILTER
public static final ClassDiscoveryFilter IMPORTED_PACKAGE_EXCLUSIVE_FILTER
-
EXT
protected static final java.lang.String EXT
- See Also:
- Constant Field Values
-
PATTERN
protected static final java.lang.String PATTERN
- See Also:
- Constant Field Values
-
bundle
protected org.osgi.framework.Bundle bundle
-
packageAdmin
protected org.osgi.service.packageadmin.PackageAdmin packageAdmin
-
discoveryFilter
protected ClassDiscoveryFilter discoveryFilter
-
-
Constructor Detail
-
BundleClassFinder
public BundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle)
-
BundleClassFinder
public BundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle, ClassDiscoveryFilter discoveryFilter)
-
-
Method Detail
-
loadClasses
public java.util.List<java.lang.Class<?>> loadClasses(java.util.Set<java.lang.String> classes)
-
find
public java.util.Set<java.lang.String> find()
Finds all available classes to the bundle. Some of the classes in the returned set might not be loadable.- Returns:
- classes visible to the bundle. Not all classes returned might be loadable.
-
isClassAcceptable
protected boolean isClassAcceptable(java.lang.String name, java.io.InputStream in) throws java.io.IOException
- Throws:
java.io.IOException
-
isClassAcceptable
protected boolean isClassAcceptable(java.net.URL url)
-
createSubBundleClassFinder
protected BundleClassFinder createSubBundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle, ClassDiscoveryFilter classDiscoveryFilter)
-
toJavaStyleClassName
protected java.lang.String toJavaStyleClassName(java.lang.String name)
-
toJavaStylePackageName
protected java.lang.String toJavaStylePackageName(java.lang.String className)
Get the normal Java style package name from the parameter className. If the className is ended with .class extension, e.g. /org/apache/geronimo/TestCass.class or org.apache.geronimo.TestClass.class, then org/apache/geronimo is returned If the className is not ended with .class extension, e.g. /org/apache/geronimo/TestCass or org.apache.geronimo.TestClass, then org/apache/geronimo is returned- Returns:
- Normal Java style package name, should be like org.apache.geronimo
-
addSlash
protected java.lang.String addSlash(java.lang.String name)
-
isWired
protected org.osgi.framework.Bundle isWired(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.ExportedPackage[] exports)
-
isWired
protected org.osgi.framework.Bundle isWired(org.osgi.framework.Bundle bundle, org.osgi.service.packageadmin.RequiredBundle[] requiredBundles)
-
-