Class 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) $
    • Field Detail

      • IMPORTED_PACKAGE_EXCLUSIVE_FILTER

        public static final ClassDiscoveryFilter IMPORTED_PACKAGE_EXCLUSIVE_FILTER
      • bundle

        protected org.osgi.framework.Bundle bundle
      • packageAdmin

        protected org.osgi.service.packageadmin.PackageAdmin packageAdmin
    • 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)