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">