Class BundleClassFinder

java.lang.Object
org.apache.xbean.osgi.bundle.util.BundleClassFinder
Direct Known Subclasses:
BundleAssignableClassFinder

public class BundleClassFinder extends 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) $
  • Field Details

  • Constructor Details

    • 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 Details

    • loadClasses

      public List<Class<?>> loadClasses(Set<String> classes)
    • find

      public Set<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(String name, InputStream in) throws IOException
      Throws:
      IOException
    • isClassAcceptable

      protected boolean isClassAcceptable(URL url)
    • createSubBundleClassFinder

      protected BundleClassFinder createSubBundleClassFinder(org.osgi.service.packageadmin.PackageAdmin packageAdmin, org.osgi.framework.Bundle bundle, ClassDiscoveryFilter classDiscoveryFilter)
    • toJavaStyleClassName

      protected String toJavaStyleClassName(String name)
    • toJavaStylePackageName

      protected String toJavaStylePackageName(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 String addSlash(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)