You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/07/28 11:27:03 UTC
[camel] branch master updated: [CAMEL-12696] Updated docs for dozer
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new ec8765e [CAMEL-12696] Updated docs for dozer
ec8765e is described below
commit ec8765e05d858eecbd9af43afd8a378f159823c9
Author: Gareth Healy <ga...@gmail.com>
AuthorDate: Fri Jul 27 17:41:30 2018 +0100
[CAMEL-12696] Updated docs for dozer
---
docs/user-manual/en/dozer-type-conversion.adoc | 68 ++++++++++++++------------
1 file changed, 36 insertions(+), 32 deletions(-)
diff --git a/docs/user-manual/en/dozer-type-conversion.adoc b/docs/user-manual/en/dozer-type-conversion.adoc
index 239c303..4661afd 100644
--- a/docs/user-manual/en/dozer-type-conversion.adoc
+++ b/docs/user-manual/en/dozer-type-conversion.adoc
@@ -8,7 +8,7 @@ Coupled with Camel's automatic type conversion, it's a formidable tool
for dealing object to object mapping headaches that crop up in
enterprise integration projects.
-To explain how Dozer can be uses within Camel we'll use the following
+To explain how Dozer can be used within Camel we'll use the following
example of a simple Customer Support Service. The initial version of the
Service defined a 'Customer' object used with a very flat structure.
@@ -43,8 +43,8 @@ public class Customer {
-----------------------------------------------------------------------------------
In the next version it was decided to structure the data better in the
-model by moving the address data into its own type, with the resultin
-domain object ending up looking like
+model by moving the address data into its own type, with the resulting
+domain object ending up looking like the below.
*Next Gen Customer object*
@@ -87,18 +87,18 @@ may not be the only service/domain inconsistency and these tedious and
error prone custom mappings could quickly start to add up, and bugs with
them.
-To a large extent the two object share identical structure, with only
+To a large extent the two objects share an identical structure, with only
the address representation being different. It would be very helpful if
there were a practical way to to automate this kind of mapping, such
that the similar properties could get mapped automatically and only the
inconsistencies requiring custom mapping.
-This is where Dozer comes in; It uses reflection to map data between two
+This is where Dozer comes in; it uses reflection to map data between two
bean types using a set of simple mapping rules. Where no rule is
-specified, dozer will attempt to map between them by using matching
-properties of two beans. In this way focus can be given to the
+specified, Dozer will attempt to map between them by using matching
+properties of two beans. In this way, focus can be given to the
inconsistencies between the beans i.e. the address properties, knowing
-that dozer will automatically match and convert the others.
+that Dozer will automatically match and convert the others.
[[DozerTypeConversion-ConfiguringDozer]]
Configuring Dozer
@@ -112,8 +112,9 @@ For our simple example, the configuration looks like the following.
[source,xml]
---------------------------------------------------------------------------------------------------------
-<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
+<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.apache.camel.converter.dozer.service.Customer</class-a>
<class-b>org.apache.camel.converter.dozer.model.Customer</class-b>
@@ -139,7 +140,7 @@ Conversion] framework. Its configured by creating an instance of
`DozerTypeConverterLoader` providing it the camel context and an
optional Dozer mapper. If no mapper is supplied, Camel's registry will
be searched for suitable instances. The loader will query the Dozer
-Mapper for the types it converts and a register them with Camel's
+Mapper for the types it converts and register them with Camel's
type conversion framework to be handled by the mapper.
[NOTE]
@@ -154,45 +155,45 @@ In Java it can be configured as follows:
[source,java]
-----------------------------------------------------------------------------------------
-DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{"mapping.xml"}));
+Mapper mapper = DozerBeanMapperBuilder.create()
+ .withMappingFiles("mapping.xml")
+ .build();
+
new DozerTypeConverterLoader(camelContext, mapper);
-----------------------------------------------------------------------------------------
-Or in Spring
+Or in Spring:
[source,xml]
-----------------------------------------------------------------------------------------------------
-<!-- the registry will be scanned and 'mapper' below will be found and installed -->
-<bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader" />
+--------------------------------------------------------------------------------------------------
+<bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader">
+ <argument index="0" ref="myCamel"/>
+ <argument index="1" ref="mapperConfiguration"/>
+</bean>
-<bean id="mapper" class="org.dozer.DozerBeanMapper">
+<bean id="mapperConfiguration" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
<property name="mappingFiles">
<list>
<value>mapping.xml</value>
</list>
</property>
</bean>
-----------------------------------------------------------------------------------------------------
-
-[[DozerTypeConversion-ConfiguringinOSGiblueprint]]
-Configuring in OSGi blueprint
------------------------------
-
-*Available as of Camel 2.12*
+
+<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">
+ ...
+</camelContext>
+--------------------------------------------------------------------------------------------------
-When using Dozer with OSGi Blueprint then its works better by
-configuring Dozer using the
-`org.apache.camel.converter.dozer.DozerBeanMapperConfiguration` instead
-of `org.dozer.DozerBeanMapper`, as shown below:
+Or in OSGi Blueprints:
[source,xml]
--------------------------------------------------------------------------------------------------
<bean id="dozerConverterLoader" class="org.apache.camel.converter.dozer.DozerTypeConverterLoader">
<argument index="0" ref="myCamel"/>
- <argument index="1" ref="mapper"/>
+ <argument index="1" ref="mapperConfiguration"/>
</bean>
-<bean id="mapper" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
+<bean id="mapperConfiguration" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
<property name="mappingFiles">
<list>
<value>mapping.xml</value>
@@ -205,7 +206,10 @@ of `org.dozer.DozerBeanMapper`, as shown below:
</camelContext>
--------------------------------------------------------------------------------------------------
-Now, where necessary, Camel will use Dozer to do conversions; In our
+You should of noticed that the configuration for Spring or OSGi Blueprints
+is the same, except for the 'xmlns' for the 'camelContext'.
+
+Now, where necessary, Camel will use Dozer to do conversions; in our
case between the new domain and legacy Customer types e.g.
[source,java]
@@ -223,5 +227,5 @@ public class CustomerProcessor {
}
// service objects can be sent to the processor and automagically converted by Camel & Dozer
-template.sendBody("direct:legacy-service-in",new org.apache.camel.converter.dozer.service.Customer("Bob", "Roberts", "12345", "1 Main st."));
+template.sendBody("direct:legacy-service-in", new org.apache.camel.converter.dozer.service.Customer("Bob", "Roberts", "12345", "1 Main st."));
---------------------------------------------------------------------------------------------------------------------------------------------