org.apache.xbean.osgi.bundle.util
Class BundleClassFinder

java.lang.Object
  extended by 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: 942661 $ $Date: 2010-05-10 07:17:20 +0200 (Mon, 10 May 2010) $

Nested Class Summary
static class BundleClassFinder.DummyDiscoveryFilter
           
static class BundleClassFinder.NonImportedPackageDiscoveryFilter
           
 
Field Summary
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
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
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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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)


Copyright © 2005-2011. All Rights Reserved.