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 2011/01/13 15:22:40 UTC

svn commit: r1058578 - in /camel/trunk: components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/ tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/ tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi...

Author: ningjiang
Date: Thu Jan 13 14:22:39 2011
New Revision: 1058578

URL: http://svn.apache.org/viewvc?rev=1058578&view=rev
Log:
CAMEL-3228 Fix the camel-dozer OSGi test error

Modified:
    camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
    camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java
    camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml

Modified: camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java?rev=1058578&r1=1058577&r2=1058578&view=diff
==============================================================================
--- camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java (original)
+++ camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java Thu Jan 13 14:22:39 2011
@@ -26,6 +26,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -33,9 +34,11 @@ import org.dozer.DozerBeanMapper;
 import org.dozer.Mapper;
 import org.dozer.classmap.ClassMap;
 import org.dozer.classmap.MappingFileData;
+import org.dozer.config.BeanContainer;
 import org.dozer.loader.api.BeanMappingBuilder;
 import org.dozer.loader.xml.MappingFileReader;
 import org.dozer.loader.xml.XMLParserFactory;
+import org.dozer.util.DozerClassLoader;
 
 /**
  * <code>DozerTypeConverterLoader</code> provides the mechanism for registering
@@ -99,6 +102,9 @@ public class DozerTypeConverterLoader im
         this.camelContext = camelContext;
         this.mapper = mapper;
 
+        CamelToDozerClassResolverAdapter adapter = new CamelToDozerClassResolverAdapter(camelContext);
+        BeanContainer.getInstance().setClassLoader(adapter);
+        
         Map<String, DozerBeanMapper> mappers = new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().lookupByType(DozerBeanMapper.class));
         if (mapper != null) {
             mappers.put("parameter", mapper);
@@ -178,4 +184,26 @@ public class DozerTypeConverterLoader im
         init(camelContext, null);
     }
 
+    private static final class CamelToDozerClassResolverAdapter implements DozerClassLoader {
+
+        private final ClassResolver classResolver;
+
+        private CamelToDozerClassResolverAdapter(CamelContext camelContext) {
+            classResolver = camelContext.getClassResolver();
+        }
+
+        public Class<?> loadClass(String s) {
+            return classResolver.resolveClass(s);
+        }
+
+        public URL loadResource(String s) {
+            URL url = classResolver.loadResourceAsURL(s);
+            if (url == null) {
+                // DozerClassLoader as a fallback
+                url = DozerClassLoader.class.getClassLoader().getResource(s);
+            } 
+            return url;
+        }
+    }
+
 }

Modified: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java?rev=1058578&r1=1058577&r2=1058578&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java Thu Jan 13 14:22:39 2011
@@ -19,7 +19,6 @@ package org.apache.camel.itest.osgi.doze
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.itest.osgi.OSGiIntegrationSpringTestSupport;
 import org.apache.camel.itest.osgi.dozer.service.Customer;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -38,7 +37,6 @@ import static org.ops4j.pax.exam.contain
  * @version $Revision$
  */
 @RunWith(JUnit4TestRunner.class)
-@Ignore("DozerBeanMapper can't load the configure from OSGi in Dozer 5.3.1")
 public class DozerTest extends OSGiIntegrationSpringTestSupport {
 
     @Override

Modified: camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml?rev=1058578&r1=1058577&r2=1058578&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml Thu Jan 13 14:22:39 2011
@@ -23,7 +23,7 @@
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
 
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
+    <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
         <camel:route>
             <camel:from uri="direct:start"/>
             <!-- convert the body to the model which should involve Dozer -->
@@ -32,7 +32,10 @@
         </camel:route>
     </camelContext>
 
-    <bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader"/>
+    <bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader">
+        <constructor-arg ref="camelContext"/>
+        <constructor-arg ref="mapper"/>
+    </bean>
 
     <bean id="mapper" class="org.dozer.DozerBeanMapper">
         <property name="mappingFiles">