Author: davsclaus Date: Fri Oct 22 09:50:52 2010 New Revision: 1026271 URL: http://svn.apache.org/viewvc?rev=1026271&view=rev Log: CAMEL-3228: Upgraded to Dozer 5.3.0. Thanks to Dmitry Buzdin for patch.
Added: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java (with props) camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java (with props) Modified: camel/trunk/components/camel-dozer/pom.xml 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/DozerTestArtifactsFactory.java camel/trunk/parent/pom.xml camel/trunk/platforms/karaf/features/pom.xml Modified: camel/trunk/components/camel-dozer/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/pom.xml?rev=1026271&r1=1026270&r2=1026271&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/pom.xml (original) +++ camel/trunk/components/camel-dozer/pom.xml Fri Oct 22 09:50:52 2010 @@ -15,7 +15,8 @@ See the License for the specific language governing permissions and limitations under the License. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -42,20 +43,9 @@ <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> - </dependency> - <dependency> - <groupId>net.sf.dozer</groupId> - <artifactId>dozer-osgi</artifactId> - <version>5.2.2</version> + <version>${dozer-version}</version> </dependency> - <!-- xmlbeans is marked as optional in dozer by we need it for testing --> - <dependency> - <groupId>org.apache.xmlbeans</groupId> - <artifactId>xmlbeans</artifactId> - <version>2.4.0</version> - <scope>test</scope> - </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring</artifactId> @@ -76,6 +66,7 @@ <artifactId>log4j</artifactId> <scope>test</scope> </dependency> + </dependencies> </project> 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=1026271&r1=1026270&r2=1026271&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 Fri Oct 22 09:50:52 2010 @@ -18,6 +18,7 @@ package org.apache.camel.converter.dozer import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,6 +33,7 @@ import org.dozer.DozerBeanMapper; import org.dozer.Mapper; import org.dozer.classmap.ClassMap; import org.dozer.classmap.MappingFileData; +import org.dozer.loader.api.BeanMappingBuilder; import org.dozer.loader.xml.MappingFileReader; import org.dozer.loader.xml.XMLParserFactory; @@ -50,6 +52,7 @@ public class DozerTypeConverterLoader im private final Log log = LogFactory.getLog(getClass()); private CamelContext camelContext; + private DozerBeanMapper mapper; /** * Creates a <code>DozerTypeConverter</code> performing no @@ -94,6 +97,8 @@ public class DozerTypeConverterLoader im */ public void init(CamelContext camelContext, DozerBeanMapper mapper) { this.camelContext = camelContext; + this.mapper = mapper; + Map<String, DozerBeanMapper> mappers = new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().lookupByType(DozerBeanMapper.class)); if (mapper != null) { mappers.put("parameter", mapper); @@ -102,20 +107,25 @@ public class DozerTypeConverterLoader im 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()); + 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()) { List<ClassMap> all = loadMappings(camelContext, dozer); - DozerTypeConverter converter = new DozerTypeConverter(dozer); - 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); + registerClassMaps(registry, dozer, all); + } + } + + private void registerClassMaps(TypeConverterRegistry registry, DozerBeanMapper dozer, List<ClassMap> all) { + DozerTypeConverter converter = new DozerTypeConverter(dozer); + 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); } } @@ -124,7 +134,12 @@ public class DozerTypeConverterLoader im // 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()) { + List<String> mappingFiles = mapper.getMappingFiles(); + if (mappingFiles == null) { + return Collections.emptyList(); + } + + for (String name : mappingFiles) { URL url = camelContext.getClassResolver().loadResourceAsURL(name); MappingFileData data = reader.read(url); answer.addAll(data.getClassMaps()); @@ -133,6 +148,28 @@ public class DozerTypeConverterLoader im return answer; } + /** + * Registers Dozer <code>BeanMappingBuilder</code> in current mapper instance. + * This method should be called instead of direct <code>mapper.addMapping()</code> invocation for Camel + * being able to register given type conversion. + * + * @param beanMappingBuilder api-based mapping builder + */ + public void addMapping(BeanMappingBuilder beanMappingBuilder) { + if (mapper == null) { + log.warn("No mapper instance provided to " + this.getClass().getSimpleName() + + ". Mapping has not been registered!"); + return; + } + + mapper.addMapping(beanMappingBuilder); + MappingFileData mappingFileData = beanMappingBuilder.build(); + TypeConverterRegistry registry = camelContext.getTypeConverterRegistry(); + ArrayList<ClassMap> classMaps = new ArrayList<ClassMap>(); + classMaps.addAll(mappingFileData.getClassMaps()); + registerClassMaps(registry, mapper, classMaps); + } + public CamelContext getCamelContext() { return camelContext; } Modified: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java?rev=1026271&r1=1026270&r2=1026271&view=diff ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java (original) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTestArtifactsFactory.java Fri Oct 22 09:50:52 2010 @@ -18,6 +18,8 @@ package org.apache.camel.converter.dozer import java.util.Arrays; +import org.apache.camel.converter.dozer.dto.AddressDTO; +import org.apache.camel.converter.dozer.dto.CustomerDTO; import org.apache.camel.converter.dozer.model.Address; import org.apache.camel.converter.dozer.service.Customer; import org.dozer.DozerBeanMapper; @@ -35,8 +37,17 @@ public final class DozerTestArtifactsFac return new org.apache.camel.converter.dozer.model.Customer("Bob", "Roberts", new Address("12345", "1 main st")); } + public static CustomerDTO createDtoCustomer() { + return new CustomerDTO("Bob", "Roberts", new AddressDTO("12345", "1 main st")); + } + public static DozerBeanMapper createMapper() { return new DozerBeanMapper(Arrays.asList(new String[]{"mapping.xml"})); } + public static DozerBeanMapper createCleanMapper() { + return new DozerBeanMapper(); + } + + } Added: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java?rev=1026271&view=auto ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java (added) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/DozerTypeConverterDTOTest.java Fri Oct 22 09:50:52 2010 @@ -0,0 +1,66 @@ +/** + * 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.converter.dozer; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.converter.dozer.dto.CustomerDTO; +import org.apache.camel.converter.dozer.model.Customer; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.dozer.DozerBeanMapper; +import org.dozer.loader.api.BeanMappingBuilder; +import org.junit.Test; + +import static org.apache.camel.converter.dozer.DozerTestArtifactsFactory.createCleanMapper; +import static org.apache.camel.converter.dozer.DozerTestArtifactsFactory.createDtoCustomer; + +public class DozerTypeConverterDTOTest extends CamelTestSupport { + + @Override + public void setUp() throws Exception { + super.setUp(); + DozerBeanMapper mapper = createCleanMapper(); + DozerTypeConverterLoader loader = new DozerTypeConverterLoader(context, mapper); + loader.addMapping(new BeanMappingBuilder() { + @Override + protected void configure() { + mapping(CustomerDTO.class, Customer.class); + } + }); + } + + @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"); + } + }; + } + + @Test + public void verifyCamelConversionViaDozer() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:verify-model"); + mock.expectedMessageCount(1); + + template.sendBody("direct:service-in", createDtoCustomer()); + + assertMockEndpointsSatisfied(); + } + +} Added: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java?rev=1026271&view=auto ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java (added) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java Fri Oct 22 09:50:52 2010 @@ -0,0 +1,44 @@ +/** + * 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.converter.dozer.dto; + +public class AddressDTO { + + private String zipCode; + private String streetName; + + public AddressDTO(String zipCode, String streetName) { + this.zipCode = zipCode; + this.streetName = 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; + } +} Propchange: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/AddressDTO.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java?rev=1026271&view=auto ============================================================================== --- camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java (added) +++ camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java Fri Oct 22 09:50:52 2010 @@ -0,0 +1,57 @@ +/** + * 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.converter.dozer.dto; + + +import java.io.Serializable; + +public class CustomerDTO implements Serializable { + + private String firstName; + private String lastName; + private AddressDTO address; + + public CustomerDTO(String firstName, String lastName, AddressDTO 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 AddressDTO getAddress() { + return address; + } + + public void setAddress(AddressDTO address) { + this.address = address; + } +} Propchange: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/dto/CustomerDTO.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1026271&r1=1026270&r2=1026271&view=diff ============================================================================== --- camel/trunk/parent/pom.xml (original) +++ camel/trunk/parent/pom.xml Fri Oct 22 09:50:52 2010 @@ -54,7 +54,7 @@ <commons-dbcp-version>1.3</commons-dbcp-version> <cxf-version>2.2.11</cxf-version> <derby-version>10.4.2.0</derby-version> - <dozer-version>5.2.2</dozer-version> + <dozer-version>5.3.0</dozer-version> <easymock-version>2.5.2</easymock-version> <flatpack-version>3.2.0_1</flatpack-version> <ftpserver-version>1.0.5</ftpserver-version> Modified: camel/trunk/platforms/karaf/features/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/platforms/karaf/features/pom.xml?rev=1026271&r1=1026270&r2=1026271&view=diff ============================================================================== --- camel/trunk/platforms/karaf/features/pom.xml (original) +++ camel/trunk/platforms/karaf/features/pom.xml Fri Oct 22 09:50:52 2010 @@ -41,9 +41,8 @@ <aopalliance-bundle-version>1.0_3</aopalliance-bundle-version> <asm-bundle-version>2.2.3_3</asm-bundle-version> <bcel-bundle-version>5.2_2</bcel-bundle-version> - <dom4j-bundle-version>1.6.1_2</dom4j-bundle-version> - <dozer-bundle-version>5.2.2</dozer-bundle-version> <cglib-version>2.1_3_4</cglib-version> + <cometd-java-server-bundle-version>1.0.1_1</cometd-java-server-bundle-version> <commons-beanutils-bundle-version>1.7.0_3</commons-beanutils-bundle-version> <commons-csv-version>1.0-r706899_3</commons-csv-version> <commons-codec-version>1.4</commons-codec-version> @@ -55,6 +54,8 @@ <commons-net-version>2.0</commons-net-version> <commons-management-version>1.0</commons-management-version> <commons-pool-bundle-version>1.5.4_1</commons-pool-bundle-version> + <dom4j-bundle-version>1.6.1_2</dom4j-bundle-version> + <dozer-bundle-version>5.3.0</dozer-bundle-version> <el-api-1.0-version>1.0.1</el-api-1.0-version> <fastinfoset-version>1.2.7_2</fastinfoset-version> <features.file>features.xml</features.file> @@ -68,22 +69,21 @@ <geronimo-ws-metadata-spec-version>1.1.2</geronimo-ws-metadata-spec-version> <gernimo-annotation-spec-version>1.1.1</gernimo-annotation-spec-version> <hamcrest-bundle-version>1.2-dev1_1</hamcrest-bundle-version> + <hapi-bundle-version>0.5.1_3</hapi-bundle-version> <hibernate-validator-bundle-version>4.1.0.Final_1</hibernate-validator-bundle-version> + <httpcore-bundle-version>4.0-alpha6_1</httpcore-bundle-version> <ibatis-bundle-version>2.3.4.726_2</ibatis-bundle-version> + <irclib-bundle-version>1.10_2</irclib-bundle-version> + <isorelax-bundle-version>20050913_1</isorelax-bundle-version> <jackrabbit-version>1.5.3</jackrabbit-version> <jaxb-bundle-version>2.1.13_1</jaxb-bundle-version> <jasypt-bundle-version>1.6_1</jasypt-bundle-version> <jetty6-bundle-version>6.1.22_1</jetty6-bundle-version> <jexcelapi-bundle-version>2.4.2_2</jexcelapi-bundle-version> - <hapi-bundle-version>0.5.1_3</hapi-bundle-version> - <httpcore-bundle-version>4.0-alpha6_1</httpcore-bundle-version> - <irclib-bundle-version>1.10_2</irclib-bundle-version> - <isorelax-bundle-version>20050913_1</isorelax-bundle-version> <javax.el-bundle-version>2.1.0</javax.el-bundle-version> <jcr-bundle-version>1.0_2</jcr-bundle-version> <jdom-bundle-version>1.1_2</jdom-bundle-version> <jettison-bundle-version>1.2</jettison-bundle-version> - <cometd-java-server-bundle-version>1.0.1_1</cometd-java-server-bundle-version> <jing-bundle-version>20030619_1</jing-bundle-version> <jodatime-bundle-version>1.5.2_2</jodatime-bundle-version> <josql-bundle-version>1.5_3</josql-bundle-version>