You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/10/22 11:50:53 UTC

svn commit: r1026271 - in /camel/trunk: components/camel-dozer/ components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/ components/camel-dozer/src/test/java/org/apache/camel/converter/dozer/ components/camel-dozer/src/test/java/org/apach...

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>