You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/08/25 15:11:10 UTC

svn commit: r807604 - in /camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi: OsgiAnnotationTypeConverterLoader.java OsgiPackageScanClassResolver.java

Author: ningjiang
Date: Tue Aug 25 13:11:10 2009
New Revision: 807604

URL: http://svn.apache.org/viewvc?rev=807604&view=rev
Log:
Applied patch with thanks to Martin

Modified:
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java

Modified: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java?rev=807604&r1=807603&r2=807604&view=diff
==============================================================================
--- camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java (original)
+++ camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java Tue Aug 25 13:11:10 2009
@@ -37,7 +37,7 @@
     @Override
     public void load(TypeConverterRegistry registry) throws Exception {
         for (Activator.TypeConverterEntry entry : Activator.getTypeConverterEntries()) {
-            OsgiPackageScanClassResolver resolver = new OsgiPackageScanClassResolver(entry.bundle.getBundleContext());
+            OsgiPackageScanClassResolver resolver = new OsgiPackageScanClassResolver(entry.bundle);
             String[] packages = entry.converterPackages.toArray(new String[entry.converterPackages.size()]);
             Set<Class> classes = resolver.findAnnotated(Converter.class, packages);           
             for (Class type : classes) {

Modified: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java?rev=807604&r1=807603&r2=807604&view=diff
==============================================================================
--- camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java (original)
+++ camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java Tue Aug 25 13:11:10 2009
@@ -33,6 +33,10 @@
 public class OsgiPackageScanClassResolver extends DefaultPackageScanClassResolver {
     private Bundle bundle;
     
+    public OsgiPackageScanClassResolver(Bundle bundle) {
+        this.bundle = bundle;
+    }
+
     public OsgiPackageScanClassResolver(BundleContext context) {
         bundle = context.getBundle();
     }
@@ -130,7 +134,18 @@
         static Set<String> getImplementationsInBundle(PackageScanFilter test, String packageName, ClassLoader loader, Method mth) {
             try {
                 org.osgi.framework.Bundle bundle = (org.osgi.framework.Bundle) mth.invoke(loader);
-                org.osgi.framework.Bundle[] bundles = bundle.getBundleContext().getBundles();
+                org.osgi.framework.Bundle[] bundles = null;
+                
+                BundleContext bundleContext = bundle.getBundleContext();
+                
+                if (bundleContext == null) {
+                    // Bundle is not in STARTING|ACTIVE|STOPPING state
+                    // (See OSGi 4.1 spec, section 4.3.17)
+                    bundles = new org.osgi.framework.Bundle[] { bundle };
+                } else {
+                    bundles = bundleContext.getBundles();
+                }
+                
                 Set<String> urls = new HashSet<String>();
                 for (org.osgi.framework.Bundle bd : bundles) {
                     if (LOG.isTraceEnabled()) {