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/03/24 16:55:23 UTC

svn commit: r757863 - in /camel/branches/camel-1.x/components/camel-osgi/src: main/java/org/apache/camel/osgi/OsgiResolverUtil.java test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java

Author: ningjiang
Date: Tue Mar 24 15:55:13 2009
New Revision: 757863

URL: http://svn.apache.org/viewvc?rev=757863&view=rev
Log:
CAMEL-1481 OsgiResolverUtil should use the regular classloader if the osgi bundle classloader can't find any class

Modified:
    camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiResolverUtil.java
    camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java

Modified: camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiResolverUtil.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiResolverUtil.java?rev=757863&r1=757862&r2=757863&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiResolverUtil.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiResolverUtil.java Tue Mar 24 15:55:13 2009
@@ -24,11 +24,14 @@
 
 import org.apache.camel.util.ResolverUtil;
 import org.apache.camel.util.ResolverUtil.Test;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.springframework.osgi.util.BundleDelegatingClassLoader;
 
 public class OsgiResolverUtil extends ResolverUtil {
+    protected static final transient Log LOG = LogFactory.getLog(OsgiResolverUtil.class);
     private Bundle bundle;
     
     public OsgiResolverUtil(BundleContext context) {
@@ -64,19 +67,22 @@
         packageName = packageName.replace('.', '/');
 
         Set<ClassLoader> set = getClassLoaders();
+        int classSize = getClasses().size();
 
         ClassLoader osgiClassLoader = getOsgiClassLoader(set);
-
+        LOG.debug("The osgi bundle classloader is " + osgiClassLoader);
         if (osgiClassLoader != null) {
-            // if we have an osgi bundle loader use this one only
+            // if we have an osgi bundle loader use this one first
             LOG.debug("Using only osgi bundle classloader");
             findInOsgiClassLoader(test, packageName, osgiClassLoader);
-        } else {
+        }
+        // try to use other classloader if we don't find any class from Osgi
+        if (classSize == getClasses().size()) {            
             LOG.debug("Using only regular classloaders");
-            for (ClassLoader classLoader : set) {
+            for (ClassLoader classLoader : set.toArray(new ClassLoader[set.size()])) {
                 if (!isOsgiClassloader(classLoader)) {
                     find(test, packageName, classLoader);
-                }
+                }        
             }
         }
     }

Modified: camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java?rev=757863&r1=757862&r2=757863&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java Tue Mar 24 15:55:13 2009
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.osgi;
 
+import org.apache.camel.TypeConverter;
 import org.apache.camel.osgi.test.MockTypeConverterRegistry;
+import org.apache.camel.osgi.test.MyTypeConverter;
 
 public class OsgiAnnotationTypeConverterLoaderTest extends CamelOsgiTestSupport {
     
@@ -24,7 +26,7 @@
         OsgiAnnotationTypeConverterLoader loader = new OsgiAnnotationTypeConverterLoader(getBundleContext());
         MockTypeConverterRegistry registry = new MockTypeConverterRegistry();
         loader.load(registry);        
-        assertEquals("There should have a coverter", registry.getTypeConverters().size(), 1);
+        assertTrue("There should have at lest one coverter", registry.getTypeConverters().size() >= 1);       
     }
 
 }