Return-Path: Delivered-To: apmail-camel-commits-archive@www.apache.org Received: (qmail 78970 invoked from network); 22 Sep 2010 09:40:23 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 22 Sep 2010 09:40:23 -0000 Received: (qmail 52197 invoked by uid 500); 22 Sep 2010 09:40:23 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 52135 invoked by uid 500); 22 Sep 2010 09:40:21 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 52128 invoked by uid 99); 22 Sep 2010 09:40:20 -0000 Received: from Unknown (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Sep 2010 09:40:20 +0000 X-ASF-Spam-Status: No, hits=-1999.6 required=10.0 tests=ALL_TRUSTED,FILL_THIS_FORM_FRAUD_PHISH,T_FILL_THIS_FORM_SHORT X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Sep 2010 09:39:59 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 24DD0238890A; Wed, 22 Sep 2010 09:39:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r999836 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/ components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/ components/camel-dozer/sr... Date: Wed, 22 Sep 2010 09:39:36 -0000 To: commits@camel.apache.org From: davsclaus@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100922093937.24DD0238890A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: davsclaus Date: Wed Sep 22 09:39:36 2010 New Revision: 999836 URL: http://svn.apache.org/viewvc?rev=999836&view=rev Log: CAMEL-3143: Dozer is not OSGi compliant. OsgiTypeConverter is now a TypeConverterRegistry as well. Added: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java - copied, changed from r999771, camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jms/JmsTest.java camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Address.java camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Customer.java camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/Customer.java camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/ camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml - copied, changed from r999771, camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jms/CamelContext.xml camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/dozer-mapping.xml Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java camel/trunk/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/SpringDozerTypeConverterTest.java camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Address.java camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Customer.java camel/trunk/components/camel-dozer/src/test/resources/application-context.xml Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Wed Sep 22 09:39:36 2010 @@ -872,9 +872,8 @@ public class DefaultCamelContext extends if (typeConverter == null) { getTypeConverter(); } - // type converter is usually the default one that also is the registry - if (typeConverter instanceof DefaultTypeConverter) { - typeConverterRegistry = (DefaultTypeConverter) typeConverter; + if (typeConverter instanceof TypeConverterRegistry) { + typeConverterRegistry = (TypeConverterRegistry) typeConverter; } } return typeConverterRegistry; Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java Wed Sep 22 09:39:36 2010 @@ -27,6 +27,7 @@ import org.apache.camel.impl.ServiceSupp import org.apache.camel.impl.converter.DefaultTypeConverter; import org.apache.camel.impl.converter.TypeConverterLoader; import org.apache.camel.spi.Injector; +import org.apache.camel.spi.TypeConverterRegistry; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; @@ -34,14 +35,14 @@ import org.osgi.framework.ServiceReferen import org.osgi.util.tracker.ServiceTracker; import org.osgi.util.tracker.ServiceTrackerCustomizer; -public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, ServiceTrackerCustomizer { +public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, TypeConverterRegistry, ServiceTrackerCustomizer { private static final Log LOG = LogFactory.getLog(OsgiTypeConverter.class); private final BundleContext bundleContext; private final Injector injector; private final ServiceTracker tracker; - private volatile DefaultTypeConverter registry; + private volatile DefaultTypeConverter delegate; public OsgiTypeConverter(BundleContext bundleContext, Injector injector) { this.bundleContext = bundleContext; @@ -52,7 +53,7 @@ public class OsgiTypeConverter extends S public Object addingService(ServiceReference serviceReference) { TypeConverterLoader loader = (TypeConverterLoader) bundleContext.getService(serviceReference); try { - loader.load(getRegistry()); + loader.load(getDelegate()); } catch (Throwable t) { LOG.debug("Error while loading type converter", t); } @@ -63,7 +64,7 @@ public class OsgiTypeConverter extends S } public void removedService(ServiceReference serviceReference, Object o) { - this.registry = null; + this.delegate = null; } @Override @@ -74,39 +75,60 @@ public class OsgiTypeConverter extends S @Override protected void doStop() throws Exception { this.tracker.close(); - this.registry = null; + this.delegate = null; } public T convertTo(Class type, Object value) { - return getRegistry().convertTo(type, value); + return getDelegate().convertTo(type, value); } public T convertTo(Class type, Exchange exchange, Object value) { - return getRegistry().convertTo(type, exchange, value); + return getDelegate().convertTo(type, exchange, value); } public T mandatoryConvertTo(Class type, Object value) throws NoTypeConversionAvailableException { - return getRegistry().mandatoryConvertTo(type, value); + return getDelegate().mandatoryConvertTo(type, value); } public T mandatoryConvertTo(Class type, Exchange exchange, Object value) throws NoTypeConversionAvailableException { - return getRegistry().mandatoryConvertTo(type, exchange, value); + return getDelegate().mandatoryConvertTo(type, exchange, value); } - public DefaultTypeConverter getRegistry() { - if (registry == null) { + public void addTypeConverter(Class toType, Class fromType, TypeConverter typeConverter) { + getDelegate().addTypeConverter(toType, fromType, typeConverter); + } + + public void addFallbackTypeConverter(TypeConverter typeConverter, boolean canPromote) { + getDelegate().addFallbackTypeConverter(typeConverter, canPromote); + } + + public TypeConverter lookup(Class toType, Class fromType) { + return getDelegate().lookup(toType, fromType); + } + + public void setInjector(Injector injector) { + getDelegate().setInjector(injector); + } + + public Injector getInjector() { + return getDelegate().getInjector(); + } + + public DefaultTypeConverter getDelegate() { + if (delegate == null) { synchronized (this) { - if (registry != null) { - return registry; + if (delegate != null) { + return delegate; } else { - registry = createRegistry(); + delegate = createRegistry(); } } } - return registry; + return delegate; } protected DefaultTypeConverter createRegistry() { + // base the osgi type converter on the default type converter DefaultTypeConverter reg = new DefaultTypeConverter(new DefaultPackageScanClassResolver() { @Override public Set getClassLoaders() { @@ -126,5 +148,4 @@ public class OsgiTypeConverter extends S return reg; } - } 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=999836&r1=999835&r2=999836&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 Wed Sep 22 09:39:36 2010 @@ -16,7 +16,10 @@ */ package org.apache.camel.converter.dozer; +import java.net.URL; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.camel.CamelContext; @@ -28,13 +31,14 @@ import org.apache.commons.logging.LogFac import org.dozer.DozerBeanMapper; import org.dozer.Mapper; import org.dozer.classmap.ClassMap; -import org.dozer.loader.CustomMappingsLoader; -import org.dozer.loader.LoadMappingsResult; +import org.dozer.classmap.MappingFileData; +import org.dozer.loader.xml.MappingFileReader; +import org.dozer.loader.xml.XMLParserFactory; /** * DozerTypeConverterLoader provides the mechanism for registering * a Dozer {@link Mapper} as {@link TypeConverter} for a {@link CamelContext}. - *

+ *

* While a mapper can be explicitly supplied as a parameter the * {@link CamelContext}'s registry will also be searched for {@link Mapper} * instances. A {@link DozerTypeConverter} is created to wrap each @@ -61,7 +65,7 @@ public class DozerTypeConverterLoader im * register as a {@link TypeConverter} with the context * * @param camelContext the context to register the - * {@link DozerTypeConverter} in + * {@link DozerTypeConverter} in */ public DozerTypeConverterLoader(CamelContext camelContext) { init(camelContext, null); @@ -73,8 +77,8 @@ public class DozerTypeConverterLoader im * with the given context. It will also search the context for * * @param camelContext the context to register the - * {@link DozerTypeConverter} in - * @param mapper the DozerMapperBean to be wrapped as a type converter. + * {@link DozerTypeConverter} in + * @param mapper the DozerMapperBean to be wrapped as a type converter. */ public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapper mapper) { init(camelContext, mapper); @@ -85,8 +89,8 @@ public class DozerTypeConverterLoader im * with the {@link CamelContext}. * * @param camelContext the context to register the - * {@link DozerTypeConverter} in - * @param mapper the DozerMapperBean to be wrapped as a type converter. + * {@link DozerTypeConverter} in + * @param mapper the DozerMapperBean to be wrapped as a type converter. */ public void init(CamelContext camelContext, DozerBeanMapper mapper) { this.camelContext = camelContext; @@ -94,29 +98,39 @@ public class DozerTypeConverterLoader im if (mapper != null) { mappers.put("parameter", mapper); } - if (mappers.size() > 0) { - log.warn("Loaded %d dozer mappers from Camel's registry. Dozer is most efficient when there is a single mapper instance. Consider amalgamating instances."); + if (mappers.size() > 1) { + log.warn("Loaded " + mappers.size() + " Dozer mappers from Camel registry." + + " Dozer is most efficient when there is a single mapper instance. Consider amalgamating instances."); + } else if (mappers.size() == 0) { + log.warn("No Dozer mappers found in Camel registry. You should add Dozer mappers as beans to the registry of the type: " + DozerBeanMapper.class.getName()); } TypeConverterRegistry registry = camelContext.getTypeConverterRegistry(); for (DozerBeanMapper dozer : mappers.values()) { - Map all = loadMappings(dozer); + List all = loadMappings(camelContext, dozer); DozerTypeConverter converter = new DozerTypeConverter(dozer); - for (ClassMap map : all.values()) { + for (ClassMap map : all) { + if (log.isInfoEnabled()) { + log.info("Added " + map.getSrcClassName() + " -> " + map.getDestClassName() + " as type converter to: " + registry); + } registry.addTypeConverter(map.getSrcClassToMap(), map.getDestClassToMap(), converter); registry.addTypeConverter(map.getDestClassToMap(), map.getSrcClassToMap(), converter); } } } - private Map loadMappings(DozerBeanMapper mapper) { - // TODO: This is a little wasteful as dozer has already parsed this - // information, if does not expose it though so it must be done again. - // Create a patch for Dozer to expose this. - CustomMappingsLoader customMappingsLoader = new CustomMappingsLoader(); - LoadMappingsResult loadMappingsResult = customMappingsLoader.load(mapper.getMappingFiles()); - Map all = loadMappingsResult.getCustomMappings().getAll(); - return all; + private List loadMappings(CamelContext camelContext, DozerBeanMapper mapper) { + List answer = new ArrayList(); + + // load the class map using the class resolver so we can load from classpath in OSGi + MappingFileReader reader = new MappingFileReader(XMLParserFactory.getInstance()); + for (String name : mapper.getMappingFiles()) { + URL url = camelContext.getClassResolver().loadResourceAsURL(name); + MappingFileData data = reader.read(url); + answer.addAll(data.getClassMaps()); + } + + return answer; } public CamelContext getCamelContext() { Modified: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java (original) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterTest.java Wed Sep 22 09:39:36 2010 @@ -16,8 +16,6 @@ */ package org.apache.camel.converter.dozer; -import java.util.concurrent.TimeUnit; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.converter.dozer.service.Customer; @@ -33,14 +31,12 @@ public class DozerTypeConverterTest exte @Override public void setUp() throws Exception { super.setUp(); - new DozerTypeConverterLoader(context, createMapper()); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { - @Override public void configure() throws Exception { from("direct:service-in").bean(new CustomerProcessor()).to("mock:verify-model"); @@ -52,14 +48,14 @@ public class DozerTypeConverterTest exte public void verifyCamelConversionViaDozer() throws Exception { MockEndpoint mock = getMockEndpoint("mock:verify-model"); mock.expectedMessageCount(1); + template.sendBody("direct:service-in", createServiceCustomer()); - mock.await(5, TimeUnit.SECONDS); - mock.assertIsSatisfied(); + + assertMockEndpointsSatisfied(); } @Test public void verifyCustomerMapping() throws Exception { - Mapper mapper = DozerTestArtifactsFactory.createMapper(); Customer service = createServiceCustomer(); org.apache.camel.converter.dozer.model.Customer model = mapper.map(service, org.apache.camel.converter.dozer.model.Customer.class); @@ -67,5 +63,4 @@ public class DozerTypeConverterTest exte assertEquals(service, roundTrip); } - } Modified: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/SpringDozerTypeConverterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/SpringDozerTypeConverterTest.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/SpringDozerTypeConverterTest.java (original) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/SpringDozerTypeConverterTest.java Wed Sep 22 09:39:36 2010 @@ -16,8 +16,6 @@ */ package org.apache.camel.converter.dozer; -import java.util.concurrent.TimeUnit; - import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelSpringTestSupport; import org.junit.Test; @@ -37,8 +35,9 @@ public class SpringDozerTypeConverterTes public void verifyCamelConversionViaDozer() throws Exception { MockEndpoint mock = getMockEndpoint("mock:verify-model"); mock.expectedMessageCount(1); + template.sendBody("direct:service-in", createServiceCustomer()); - mock.await(5, TimeUnit.SECONDS); - mock.assertIsSatisfied(); + + assertMockEndpointsSatisfied(); } } Modified: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Address.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Address.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Address.java (original) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Address.java Wed Sep 22 09:39:36 2010 @@ -23,14 +23,12 @@ import org.apache.commons.lang.builder.T public class Address { private String zipCode; - private String streetName; public Address() { } public Address(String zipCode, String streetName) { - this.zipCode = zipCode; this.streetName = streetName; } Modified: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Customer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Customer.java?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Customer.java (original) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/model/Customer.java Wed Sep 22 09:39:36 2010 @@ -21,10 +21,9 @@ import org.apache.commons.lang.builder.H import org.apache.commons.lang.builder.ToStringBuilder; public class Customer { - private String firstName; + private String firstName; private String lastName; - private Address address; public Customer() { @@ -75,5 +74,4 @@ public class Customer { return ToStringBuilder.reflectionToString(this); } - } Modified: camel/trunk/components/camel-dozer/src/test/resources/application-context.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/resources/application-context.xml?rev=999836&r1=999835&r2=999836&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/resources/application-context.xml (original) +++ camel/trunk/components/camel-dozer/src/test/resources/application-context.xml Wed Sep 22 09:39:36 2010 @@ -16,25 +16,26 @@ limitations under the License. --> - - - - - - - - - - - - - - - - mapping.xml - - - + xsi:schemaLocation=" + 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"> + + + + + + + + + + + + + + + + mapping.xml + + + \ No newline at end of file Copied: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java (from r999771, camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jms/JmsTest.java) URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java?p2=camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java&p1=camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jms/JmsTest.java&r1=999771&r2=999836&rev=999836&view=diff ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jms/JmsTest.java (original) +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/DozerTest.java Wed Sep 22 09:39:36 2010 @@ -14,9 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.itest.osgi.jms; +package org.apache.camel.itest.osgi.dozer; +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; @@ -35,18 +38,33 @@ import static org.ops4j.pax.exam.contain * @version $Revision$ */ @RunWith(JUnit4TestRunner.class) -public class JmsTest extends OSGiIntegrationSpringTestSupport { +@Ignore("Dozer does not work in OSGi") +public class DozerTest extends OSGiIntegrationSpringTestSupport { @Override protected OsgiBundleXmlApplicationContext createApplicationContext() { - return new OsgiBundleXmlApplicationContext(new String[]{"org/apache/camel/itest/osgi/jms/CamelContext.xml"}); + return new OsgiBundleXmlApplicationContext(new String[]{"org/apache/camel/itest/osgi/dozer/CamelContext.xml"}); } @Test - public void testJms() throws Exception { - getMockEndpoint("mock:result").expectedBodiesReceived("Hello World"); + public void testDozer() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + // should be the model customer + mock.message(0).body().isInstanceOf(org.apache.camel.itest.osgi.dozer.model.Customer.class); + // and assert the model contains the expected data + mock.message(0).simple("${body.firstName} == Homer"); + mock.message(0).simple("${body.lastName} == Simpson"); + mock.message(0).simple("${body.address.streetMame} == 'Somestreet 123'"); + mock.message(0).simple("${body.address.zipCode} == 26000"); + + Customer serviceCustomer = new Customer(); + serviceCustomer.setFirstName("Homer"); + serviceCustomer.setLastName("Simpson"); + serviceCustomer.setStreet("Somestreet 123"); + serviceCustomer.setZip("26000"); - template.sendBody("activemq:queue:foo", "Hello World"); + template.sendBody("direct:start", serviceCustomer); assertMockEndpointsSatisfied(); } @@ -60,12 +78,9 @@ public class JmsTest extends OSGiIntegra // this is how you set the default log level when using pax logging (logProfile) org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"), - // using the features to install AMQ - scanFeatures("mvn:org.apache.activemq/activemq-karaf/5.4.0/xml/features", "activemq"), - // using the features to install the camel components scanFeatures(getCamelKarafFeatureUrl(), - "camel-core", "camel-spring", "camel-test", "camel-jms"), + "camel-core", "camel-spring", "camel-test", "camel-dozer"), workingDirectory("target/paxrunner/"), Added: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Address.java URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Address.java?rev=999836&view=auto ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Address.java (added) +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Address.java Wed Sep 22 09:39:36 2010 @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.itest.osgi.dozer.model; + +/** + * @version $Revision$ + */ +public class Address { + + private String zipCode; + private String streetName; + + public String getZipCode() { + return zipCode; + } + + public void setZipCode(String zipCode) { + this.zipCode = zipCode; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + +} Added: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Customer.java URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Customer.java?rev=999836&view=auto ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Customer.java (added) +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/model/Customer.java Wed Sep 22 09:39:36 2010 @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.itest.osgi.dozer.model; + +/** + * @version $Revision$ + */ +public class Customer { + + private String firstName; + private String lastName; + private Address address; + + public Customer() { + } + + public Customer(String firstName, String lastName, Address address) { + this.firstName = firstName; + this.lastName = lastName; + this.address = address; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + +} Added: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/Customer.java URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/Customer.java?rev=999836&view=auto ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/Customer.java (added) +++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/dozer/service/Customer.java Wed Sep 22 09:39:36 2010 @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.itest.osgi.dozer.service; + +/** + * @version $Revision$ + */ +public class Customer { + + private String firstName; + private String lastName; + private String street; + private String zip; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } + +} Copied: camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml (from r999771, camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jms/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?p2=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml&p1=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jms/CamelContext.xml&r1=999771&r2=999836&rev=999836&view=diff ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jms/CamelContext.xml (original) +++ camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/CamelContext.xml Wed Sep 22 09:39:36 2010 @@ -25,16 +25,20 @@ - + + + - - - - - + + + + + + org/apache/camel/itest/osgi/dozer/dozer-mapping.xml + Added: camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/dozer-mapping.xml URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/dozer-mapping.xml?rev=999836&view=auto ============================================================================== --- camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/dozer-mapping.xml (added) +++ camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/dozer/dozer-mapping.xml Wed Sep 22 09:39:36 2010 @@ -0,0 +1,32 @@ + + + + + org.apache.camel.itest.osgi.dozer.service.Customer + org.apache.camel.itest.osgi.dozer.model.Customer + + street + address.streetName + + + zip + address.zipCode + + + \ No newline at end of file