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);
}
}