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 2017/01/19 12:21:13 UTC

[1/4] camel git commit: CAMEL-10531 Aligned XML DSL attribute names to Java DSL, fromType and toType instead of from and to

Repository: camel
Updated Branches:
  refs/heads/master 388b787bb -> a2d3dd7c4


CAMEL-10531 Aligned XML DSL attribute names to Java DSL, fromType and toType instead of from and to


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a2d3dd7c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a2d3dd7c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a2d3dd7c

Branch: refs/heads/master
Commit: a2d3dd7c4407619c09a42cd3d10614feba268880
Parents: 82733d1
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Thu Jan 19 13:08:29 2017 +0900
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 19 13:20:55 2017 +0100

----------------------------------------------------------------------
 camel-core/src/main/docs/transformer.adoc       | 14 +++---
 .../camel/builder/TransformerBuilder.java       |  4 +-
 .../camel/impl/transformer/TransformerKey.java  |  6 +--
 .../CustomTransformerDefinition.java            |  4 +-
 .../DataFormatTransformerDefinition.java        |  4 +-
 .../EndpointTransformerDefinition.java          |  4 +-
 .../transformer/TransformerDefinition.java      | 48 ++++++++++++--------
 .../transformer/SpringTransformerRouteTest.xml  |  8 ++--
 .../OSGI-INF/blueprint/camel-context.xml        |  2 +-
 .../resources/META-INF/spring/camel-context.xml |  2 +-
 .../AbstractLocalCamelControllerTest.java       | 11 ++---
 .../commands/TransformerListCommandTest.java    |  8 ++--
 12 files changed, 61 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/docs/transformer.adoc
----------------------------------------------------------------------
diff --git a/camel-core/src/main/docs/transformer.adoc b/camel-core/src/main/docs/transformer.adoc
index 543c58c..abe57b3 100644
--- a/camel-core/src/main/docs/transformer.adoc
+++ b/camel-core/src/main/docs/transformer.adoc
@@ -50,15 +50,15 @@ Supported Transformers
 [[Transformer-CommonOptions]]
 Common Options
 ^^^^^^^^^^^^^
-All transformers have following common options to specify which data type is supported by the transformer. `scheme` or both of `from` and `to` must be specified.
+All transformers have following common options to specify which data type is supported by the transformer. `scheme` or both of `fromType` and `toType` must be specified.
 |=======================================================================
 | Name | Description
 
 | scheme | Type of data model like `xml` or `json`. For example if `xml` is specified, the transformer is applied for all java -&gt; xml and xml -&gt; java transformation.
  
-| from | <<Transformer-DataTypeFormat,Data type>> to transform from.
+| fromType | <<Transformer-DataTypeFormat,Data type>> to transform from.
  
-| to | <<Transformer-DataTypeFormat,Data type>> to transform to.
+| toType | <<Transformer-DataTypeFormat,Data type>> to transform to.
 |=======================================================================
 
 
@@ -90,7 +90,7 @@ transformer()
 XML DSL:
 [source,xml]
 -------------------------------------------------------------------
-<dataFormatTransformer from="java:com.example.Order" to="csv:CSVOrder">
+<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
     <bindy id="csvdf" type="Csv" classType="com.example.Order"/>
 </dataFormatTransformer>
 -------------------------------------------------------------------
@@ -119,7 +119,7 @@ transformer()
 And here is an example to specify endpoint ref in XML DSL:
 [source,xml]
 -------------------------------------------------------------------
-<endpointTransformer ref="myDozerEndpoint" from="xml" to="json"/>
+<endpointTransformer ref="myDozerEndpoint" fromType="xml" toType="json"/>
 -------------------------------------------------------------------
 
 
@@ -148,7 +148,7 @@ transformer()
 XML DSL:
 [source,xml]
 -------------------------------------------------------------------
-<customTransformer type="com.example.MyCustomTransformer" from="xml" to="json"/>
+<customTransformer type="com.example.MyCustomTransformer" fromType="xml" toType="json"/>
 -------------------------------------------------------------------
 
 
@@ -174,7 +174,7 @@ XML DSL:
 -------------------------------------------------------------------
 <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
     <transformers>
-        <endpointTransformer uri="xslt:transform.xsl" from="xml:ABCOrder" to="xml:XYZOrder"/>
+        <endpointTransformer uri="xslt:transform.xsl" fromType="xml:ABCOrder" toType="xml:XYZOrder"/>
     </transformers>
     ....
 </camelContext>

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
index 5bb0243..9f5f2ec 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
@@ -186,8 +186,8 @@ public class TransformerBuilder {
         if (scheme != null) {
             transformer.setScheme(scheme);
         } else {
-            transformer.setFrom(from);
-            transformer.setTo(to);
+            transformer.setFromType(from);
+            transformer.setToType(to);
         }
         
         camelContext.getTransformers().add(transformer);

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/impl/transformer/TransformerKey.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/transformer/TransformerKey.java b/camel-core/src/main/java/org/apache/camel/impl/transformer/TransformerKey.java
index d5034d2..f75f9b5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/transformer/TransformerKey.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/transformer/TransformerKey.java
@@ -58,12 +58,12 @@ public final class TransformerKey extends ValueHolder<String> {
             return scheme.equals(def.getScheme());
         }
         if (from == null) {
-            return to.toString().equals(def.getTo());
+            return to.toString().equals(def.getToType());
         }
         if (to == null) {
-            return from.toString().equals(def.getFrom());
+            return from.toString().equals(def.getFromType());
         }
-        return from.toString().equals(def.getFrom()) && to.toString().equals(def.getTo());
+        return from.toString().equals(def.getFromType()) && to.toString().equals(def.getToType());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
index b66f601..bce6a22 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
@@ -65,8 +65,8 @@ public class CustomTransformerDefinition extends TransformerDefinition {
         }
         transformer.setCamelContext(context);
         return transformer.setModel(getScheme())
-                          .setFrom(getFrom())
-                          .setTo(getTo());
+                          .setFrom(getFromType())
+                          .setTo(getToType());
     }
 
     public String getRef() {

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
index db1c98b..97c3496 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
@@ -137,8 +137,8 @@ public class DataFormatTransformerDefinition extends TransformerDefinition {
                 .setDataFormatType(dataFormatType)
                 .setDataFormatRef(ref)
                 .setModel(getScheme())
-                .setFrom(getFrom())
-                .setTo(getTo());
+                .setFrom(getFromType())
+                .setTo(getToType());
     }
 
     public String getRef() {

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
index 7c0dc32..e799f88 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
@@ -55,8 +55,8 @@ public class EndpointTransformerDefinition extends TransformerDefinition {
         return new ProcessorTransformer(context)
             .setProcessor(processor)
             .setModel(getScheme())
-            .setFrom(getFrom())
-            .setTo(getTo());
+            .setFrom(getFromType())
+            .setTo(getToType());
     }
 
     public String getRef() {

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
index 590bb5a..d321a11 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.InputTypeDefinition;
 import org.apache.camel.model.OutputTypeDefinition;
+import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Transformer;
 
@@ -50,9 +51,9 @@ public abstract class TransformerDefinition {
     @XmlAttribute
     private String scheme;
     @XmlAttribute
-    private String from;
+    private String fromType;
     @XmlAttribute
-    private String to;
+    private String toType;
 
     public Transformer createTransformer(CamelContext context) throws Exception {
         return doCreateTransformer(context);
@@ -66,6 +67,9 @@ public abstract class TransformerDefinition {
 
     /**
      * Set a scheme name supported by the transformer.
+     * If you specify 'csv', the transformer will be picked up for all of 'csv' from/to
+     * Java transformation. Note that the scheme matching is performed only when
+     * no exactly matched transformer exists.
      *
      * @param scheme scheme name
      */
@@ -73,17 +77,20 @@ public abstract class TransformerDefinition {
         this.scheme = scheme;
     }
 
-    public String getFrom() {
-        return from;
+    public String getFromType() {
+        return fromType;
     }
 
     /**
-     * Set the 'from' data type .
-     *
-     * @param from 'from' data type
+     * Set the 'from' data type name.
+     * If you specify 'xml:XYZ', the transformer will be picked up if source type is
+     * 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of
+     * 'xml' source type like 'xml:ABC' or 'xml:DEF'.
+     * 
+     * @param from 'from' data type name
      */
-    public void setFrom(String from) {
-        this.from = from;
+    public void setFromType(String from) {
+        this.fromType = from;
     }
 
     /**
@@ -91,21 +98,24 @@ public abstract class TransformerDefinition {
      *
      * @param clazz 'from' Java class
      */
-    public void setFrom(Class<?> clazz) {
-        this.from = "java:" + clazz.getName();
+    public void setFromType(Class<?> clazz) {
+        this.fromType = new DataType(clazz).toString();
     }
 
-    public String getTo() {
-        return to;
+    public String getToType() {
+        return toType;
     }
 
     /**
-     * Set the 'to' data type.
+     * Set the 'to' data type name.
+     * If you specify 'json:XYZ', the transformer will be picked up if destination type is
+     * 'json:XYZ'. If you specify just 'json', the transformer matches with all of
+     * 'json' destination type like 'json:ABC' or 'json:DEF'.
      *
-     * @param to 'to' data type 
+     * @param to 'to' data type name
      */
-    public void setTo(String to) {
-        this.to = to;
+    public void setToType(String to) {
+        this.toType = to;
     }
 
     /**
@@ -113,8 +123,8 @@ public abstract class TransformerDefinition {
      *
      * @param clazz 'to' Java class
      */
-    public void setTo(Class<?> clazz) {
-        this.to = "java:" + clazz.getName();
+    public void setToType(Class<?> clazz) {
+        this.toType = new DataType(clazz).toString();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/transformer/SpringTransformerRouteTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/transformer/SpringTransformerRouteTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/transformer/SpringTransformerRouteTest.xml
index d8b4f72..1687c6e 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/transformer/SpringTransformerRouteTest.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/transformer/SpringTransformerRouteTest.xml
@@ -36,10 +36,10 @@
             <dataFormatTransformer scheme="json">
                 <custom ref="myJsonDataFormatDef"/>
             </dataFormatTransformer>
-            <endpointTransformer ref="myXmlEndpoint" from="xml:XmlXOrder" to="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrder"/>
-            <endpointTransformer ref="myXmlEndpoint" from="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrderResponse" to="xml:XmlXOrderResponse"/>
-            <customTransformer ref="otherToXOrder" from="other:OtherXOrder" to="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrder"/>
-            <customTransformer ref="xOrderResponseToOther" from="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrderResponse" to="other:OtherXOrderResponse"/>
+            <endpointTransformer ref="myXmlEndpoint" fromType="xml:XmlXOrder" toType="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrder"/>
+            <endpointTransformer ref="myXmlEndpoint" fromType="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrderResponse" toType="xml:XmlXOrderResponse"/>
+            <customTransformer ref="otherToXOrder" fromType="other:OtherXOrder" toType="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrder"/>
+            <customTransformer ref="xOrderResponseToOther" fromType="java:org.apache.camel.impl.transformer.TransformerRouteTest$XOrderResponse" toType="other:OtherXOrderResponse"/>
         </transformers>
         
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/examples/camel-example-transformer-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml
----------------------------------------------------------------------
diff --git a/examples/camel-example-transformer-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml b/examples/camel-example-transformer-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml
index 67e3373..a0fea6f 100644
--- a/examples/camel-example-transformer-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml
+++ b/examples/camel-example-transformer-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml
@@ -23,7 +23,7 @@
 
     <!-- START SNIPPET: e1 -->
     <transformers>
-        <endpointTransformer uri="xslt:transform.xsl" from="xml:MyRequest" to="xml:MyResponse"/>
+        <endpointTransformer uri="xslt:transform.xsl" fromType="xml:MyRequest" toType="xml:MyResponse"/>
     </transformers>
     <!-- END SNIPPET: e1 -->
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/examples/camel-example-transformer-demo/src/main/resources/META-INF/spring/camel-context.xml
----------------------------------------------------------------------
diff --git a/examples/camel-example-transformer-demo/src/main/resources/META-INF/spring/camel-context.xml b/examples/camel-example-transformer-demo/src/main/resources/META-INF/spring/camel-context.xml
index f8fa92f..09c3b72 100644
--- a/examples/camel-example-transformer-demo/src/main/resources/META-INF/spring/camel-context.xml
+++ b/examples/camel-example-transformer-demo/src/main/resources/META-INF/spring/camel-context.xml
@@ -40,7 +40,7 @@
         <!-- START SNIPPET: e3 -->
         <camel:transformers>
             <!-- specifying from&to data type for the Java-CSV transformation -->
-            <camel:dataFormatTransformer from="java:org.apache.camel.example.transformer.demo.Order" to="csv:CSVOrder">
+            <camel:dataFormatTransformer fromType="java:org.apache.camel.example.transformer.demo.Order" toType="csv:CSVOrder">
                 <camel:bindy id="csvdf" type="Csv" classType="org.apache.camel.example.transformer.demo.Order"/>
             </camel:dataFormatTransformer>
             <!-- instead of exact from&to type, scheme name can be specified to apply for all the Java-XML transformation -->

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/AbstractLocalCamelControllerTest.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/AbstractLocalCamelControllerTest.java b/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/AbstractLocalCamelControllerTest.java
index 0a24e2c..682ac0d 100644
--- a/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/AbstractLocalCamelControllerTest.java
+++ b/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/AbstractLocalCamelControllerTest.java
@@ -24,7 +24,6 @@ import org.apache.camel.Message;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.ExplicitCamelContextNameStrategy;
-import org.apache.camel.model.transformer.CustomTransformerDefinition;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Transformer;
 import org.junit.After;
@@ -47,17 +46,15 @@ public class AbstractLocalCamelControllerTest {
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                transformer()
+                    .fromType("xml:foo")
+                    .toType("json:bar")
+                    .withJava(DummyTransformer.class);
                 from("direct:start1").id("route1").delay(100).to("mock:result1");
                 from("direct:start2").id("route2").delay(100).to("mock:result2");
                 from("direct:start3").id("route3").delay(100).to("mock:result3");
             }
         });
-
-        CustomTransformerDefinition def = new CustomTransformerDefinition();
-        def.setType(DummyTransformer.class.getName());
-        def.setFrom("xml:foo");
-        def.setTo("json:bar");
-        context.getTransformers().add(def);
         localCamelController = new DummyCamelController(context);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a2d3dd7c/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/TransformerListCommandTest.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/TransformerListCommandTest.java b/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/TransformerListCommandTest.java
index a826f5d..5f71849 100644
--- a/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/TransformerListCommandTest.java
+++ b/platforms/commands/commands-core/src/test/java/org/apache/camel/commands/TransformerListCommandTest.java
@@ -74,14 +74,14 @@ public class TransformerListCommandTest {
     private String doTest(boolean verbose) throws Exception {
         CamelContext context = new DefaultCamelContext();
         EndpointTransformerDefinition etd = new EndpointTransformerDefinition();
-        etd.setFrom("xml:foo");
-        etd.setTo("json:bar");
+        etd.setFromType("xml:foo");
+        etd.setToType("json:bar");
         etd.setUri("direct:transformer");
         context.getTransformers().add(etd);
         context.resolveTransformer(new DataType("xml:foo"), new DataType("json:bar"));
         DataFormatTransformerDefinition dftd = new DataFormatTransformerDefinition();
-        dftd.setFrom(this.getClass());
-        dftd.setTo("xml:test");
+        dftd.setFromType(this.getClass());
+        dftd.setToType("xml:test");
         dftd.setDataFormatType(new StringDataFormat());
         context.getTransformers().add(dftd);
         context.resolveTransformer(new DataType(this.getClass()), new DataType("xml:test"));


[2/4] camel git commit: CAMEL-10531 Use fromType() and toType() instead of from() and to() to avoid confusion

Posted by da...@apache.org.
CAMEL-10531 Use fromType() and toType() instead of from() and to() to avoid confusion


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8270e3e9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8270e3e9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8270e3e9

Branch: refs/heads/master
Commit: 8270e3e93bc4aab1c2a18d7d996f82281babe234
Parents: 11c7840
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Thu Jan 19 00:03:50 2017 +0900
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 19 13:20:55 2017 +0100

----------------------------------------------------------------------
 .../org/apache/camel/builder/RouteBuilder.java  |  4 +-
 .../camel/builder/TransformerBuilder.java       | 41 +++++++++++++-------
 .../java/org/apache/camel/spi/DataType.java     |  6 ++-
 .../camel/builder/TransformerBuilderTest.java   |  4 +-
 .../impl/transformer/TransformerRouteTest.java  | 16 ++++----
 .../ManagedTransformerRegistryTest.java         |  8 ++--
 .../camel/example/transformer/cdi/MyRoutes.java |  4 +-
 7 files changed, 48 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index ba7b828..fde9494 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -53,7 +53,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
     private AtomicBoolean initialized = new AtomicBoolean(false);
     private RestsDefinition restCollection = new RestsDefinition();
     private Map<String, RestConfigurationDefinition> restConfigurations;
-    private List<TransformerBuilder> transformerBuilders = new ArrayList<TransformerBuilder>();
+    private List<TransformerBuilder> transformerBuilders = new ArrayList<>();
     private RoutesDefinition routeCollection = new RoutesDefinition();
 
     public RouteBuilder() {
@@ -133,7 +133,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
     }
 
     /**
-     * Create a new Transformer.
+     * Create a new {@code TransformerBuilder}.
      * 
      * @return the builder
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
index 4858fc9..5bb0243 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
@@ -22,11 +22,14 @@ import org.apache.camel.model.transformer.CustomTransformerDefinition;
 import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
 import org.apache.camel.model.transformer.EndpointTransformerDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
+import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Transformer;
 
 /**
  * A <a href="http://camel.apache.org/dsl.html">Java DSL</a> which is
  * used to build a {@link org.apache.camel.spi.Transformer} and register into {@link org.apache.camel.CamelContext}.
+ * It requires 'scheme' or a pair of 'from' and 'to' to be specified by scheme(), from() and to() method.
+ * And then you can choose a type of transformer by withUri(), withDataFormat(), withJava() or withBean() method.
  */
 public class TransformerBuilder {
 
@@ -39,7 +42,10 @@ public class TransformerBuilder {
     private String beanRef;
 
     /**
-     * Set a scheme name supported by the transformer.
+     * Set the scheme name supported by the transformer.
+     * If you specify 'csv', the transformer will be picked up for all of 'csv' from/to
+     * Java transformation. Note that the scheme matching is performed only when
+     * no exactly matched transformer exists.
      *
      * @param scheme scheme name
      */
@@ -49,11 +55,14 @@ public class TransformerBuilder {
     }
 
     /**
-     * Set the 'from' data type .
+     * Set the 'from' data type name.
+     * If you specify 'xml:XYZ', the transformer will be picked up if source type is
+     * 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of
+     * 'xml' source type like 'xml:ABC' or 'xml:DEF'.
      *
-     * @param from 'from' data type
+     * @param from 'from' data type name
      */
-    public TransformerBuilder from(String from) {
+    public TransformerBuilder fromType(String from) {
         this.from = from;
         return this;
     }
@@ -63,17 +72,20 @@ public class TransformerBuilder {
      *
      * @param clazz 'from' Java class
      */
-    public TransformerBuilder from(Class<?> from) {
-        this.from = "java:" + from.getName();
+    public TransformerBuilder fromType(Class<?> from) {
+        this.from = new DataType(from).toString();
         return this;
     }
 
     /**
-     * Set the 'to' data type .
+     * Set the 'to' data type name.
+     * If you specify 'json:XYZ', the transformer will be picked up if destination type is
+     * 'json:XYZ'. If you specify just 'json', the transformer matches with all of
+     * 'json' destination type like 'json:ABC' or 'json:DEF'.
      *
      * @param to 'to' data type
      */
-    public TransformerBuilder to(String to) {
+    public TransformerBuilder toType(String to) {
         this.to = to;
         return this;
     }
@@ -83,8 +95,8 @@ public class TransformerBuilder {
      *
      * @param clazz 'to' Java class
      */
-    public TransformerBuilder to(Class<?> to) {
-        this.to = "java:" + to.getName();
+    public TransformerBuilder toType(Class<?> to) {
+        this.to = new DataType(to).toString();
         return this;
     }
 
@@ -104,17 +116,16 @@ public class TransformerBuilder {
      * Set the {@code DataFormatDefinition} to be used for the {@code DataFormat} {@code Transformer}.
      * @see {@code DataFormatTransformerDefinition}, {@code DataFormatTransformer}
      * 
-     * @param dfd {@code DataFormatDefinition}
+     * @param dataFormatDefinition {@code DataFormatDefinition}
      */
-    public TransformerBuilder withDataFormat(DataFormatDefinition dfd) {
+    public TransformerBuilder withDataFormat(DataFormatDefinition dataFormatDefinition) {
         resetType();
-        this.dataFormat = dfd;
+        this.dataFormat = dataFormatDefinition;
         return this;
     }
 
     /**
-     * Set the Java {@code Class} represents a custom {@code Transformer} implementation class
-     * to be used for custom Transformer.
+     * Set the Java {@code Class} represents a custom {@code Transformer} implementation class.
      * @see {@code CustomTransformerDefinition}
      * 
      * @param clazz {@code Class} object represents custom transformer implementation

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/main/java/org/apache/camel/spi/DataType.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataType.java b/camel-core/src/main/java/org/apache/camel/spi/DataType.java
index 3efae96..5d96839 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/DataType.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/DataType.java
@@ -23,6 +23,8 @@ import org.apache.camel.util.StringHelper;
  */
 public class DataType {
 
+    public static final String JAVA_TYPE_PREFIX = "java";
+
     private String model;
     private String name;
     private boolean isJavaType;
@@ -32,7 +34,7 @@ public class DataType {
         if (urn != null) {
             String split[] = StringHelper.splitOnCharacter(urn, ":", 2);
             model = split[0];
-            isJavaType = model.equals("java");
+            isJavaType = model.equals(JAVA_TYPE_PREFIX);
             if (split.length > 1) {
                 name = split[1];
             }
@@ -40,7 +42,7 @@ public class DataType {
     }
     
     public DataType(Class<?> clazz) {
-        model = "java";
+        model = JAVA_TYPE_PREFIX;
         isJavaType = true;
         name = clazz.getName();
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java b/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
index 1a7c54f..9a7e895 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
@@ -58,7 +58,7 @@ public class TransformerBuilderTest extends TestSupport {
         RouteBuilder builder = new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                transformer().from("xml:foo").to("json:bar").withDataFormat(new StringDataFormat());
+                transformer().fromType("xml:foo").toType("json:bar").withDataFormat(new StringDataFormat());
             }
         };
         ctx.addRoutes(builder);
@@ -77,7 +77,7 @@ public class TransformerBuilderTest extends TestSupport {
         RouteBuilder builder = new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                transformer().from("json:foo").to("xml:bar").withUri("direct:transformer");
+                transformer().fromType("json:foo").toType("xml:bar").withUri("direct:transformer");
                 from("direct:transformer");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
index ddb1daf..4d5a0d1 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
@@ -188,12 +188,12 @@ public class TransformerRouteTest extends ContextTestSupport {
                 
                 context.addComponent("myxml", new MyXmlComponent());
                 transformer()
-                    .from("xml:XmlXOrder")
-                    .to(XOrder.class)
+                    .fromType("xml:XmlXOrder")
+                    .toType(XOrder.class)
                     .withUri("myxml:endpoint");
                 transformer()
-                    .from(XOrderResponse.class)
-                    .to("xml:XmlXOrderResponse")
+                    .fromType(XOrderResponse.class)
+                    .toType("xml:XmlXOrderResponse")
                     .withUri("myxml:endpoint");
                 from("direct:endpoint")
                     .inputType("xml:XmlXOrder")
@@ -201,12 +201,12 @@ public class TransformerRouteTest extends ContextTestSupport {
                     .inOut("direct:xyz");
                 
                 transformer()
-                    .from("other:OtherXOrder")
-                    .to(XOrder.class)
+                    .fromType("other:OtherXOrder")
+                    .toType(XOrder.class)
                     .withJava(OtherToXOrderTransformer.class);
                 transformer()
-                    .from(XOrderResponse.class)
-                    .to("other:OtherXOrderResponse")
+                    .fromType(XOrderResponse.class)
+                    .toType("other:OtherXOrderResponse")
                     .withJava(XOrderResponseToOtherTransformer.class);
                 from("direct:custom")
                     .inputType("other:OtherXOrder")

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
index d1b500f..cc1023f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
@@ -117,12 +117,12 @@ public class ManagedTransformerRegistryTest extends ManagementTestSupport {
             @Override
             public void configure() throws Exception {
                 transformer()
-                    .from("xml:foo")
-                    .to("json:bar")
+                    .fromType("xml:foo")
+                    .toType("json:bar")
                     .withUri("direct:transformer");
                 transformer()
-                    .from(ManagedTransformerRegistryTest.class)
-                    .to("xml:test")
+                    .fromType(ManagedTransformerRegistryTest.class)
+                    .toType("xml:test")
                     .withDataFormat(new StringDataFormat());
                 transformer()
                     .scheme("custom")

http://git-wip-us.apache.org/repos/asf/camel/blob/8270e3e9/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java b/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
index c19d6ed..49290aa 100644
--- a/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
+++ b/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
@@ -26,8 +26,8 @@ public class MyRoutes extends RouteBuilder {
     @Override
     public void configure() {
         transformer()
-            .from("xml:MyRequest")
-            .to("xml:MyResponse")
+            .fromType("xml:MyRequest")
+            .toType("xml:MyResponse")
             .withUri("xslt:transform.xsl");
         
         from("timer:foo?period=5000").id("timer-route")


[3/4] camel git commit: CAMEL-10531 fixed adoc

Posted by da...@apache.org.
CAMEL-10531 fixed adoc


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/82733d11
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/82733d11
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/82733d11

Branch: refs/heads/master
Commit: 82733d1128bcf2ded1b59d70745c7886f96eebc7
Parents: 8270e3e
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Thu Jan 19 11:02:07 2017 +0900
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 19 13:20:55 2017 +0100

----------------------------------------------------------------------
 camel-core/src/main/docs/transformer.adoc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/82733d11/camel-core/src/main/docs/transformer.adoc
----------------------------------------------------------------------
diff --git a/camel-core/src/main/docs/transformer.adoc b/camel-core/src/main/docs/transformer.adoc
index aff0207..543c58c 100644
--- a/camel-core/src/main/docs/transformer.adoc
+++ b/camel-core/src/main/docs/transformer.adoc
@@ -82,8 +82,8 @@ BindyDataFormat bindy = new BindyDataFormat();
 bindy.setType(BindyType.Csv);
 bindy.setClassType(com.example.Order.class);
 transformer()
-    .from(com.example.Order.class)
-    .to("csv:CSVOrder")
+    .fromType(com.example.Order.class)
+    .toType("csv:CSVOrder")
     .withDataFormat(bindy);
 -------------------------------------------------------------------
 
@@ -111,8 +111,8 @@ Here is an example to specify endpoint URI in Java DSL:
 [source,java]
 -------------------------------------------------------------------
 transformer()
-    .from("xml")
-    .to("json")
+    .fromType("xml")
+    .toType("json")
     .withUri("dozer:myDozer?mappingFile=myMapping.xml...");
 -------------------------------------------------------------------
 
@@ -140,8 +140,8 @@ Java DSL:
 [source,java]
 -------------------------------------------------------------------
 transformer()
-    .from("xml")
-    .to("json")
+    .fromType("xml")
+    .toType("json")
     .withJava(com.example.MyCustomTransformer.class);
 -------------------------------------------------------------------
 
@@ -164,8 +164,8 @@ Java DSL:
 [source,java]
 -------------------------------------------------------------------
 transformer()
-    .from("xml:ABCOrder")
-    .to("xml:XYZOrder")
+    .fromType("xml:ABCOrder")
+    .toType("xml:XYZOrder")
     .withUri("xslt:transform.xsl");
 -------------------------------------------------------------------
 


[4/4] camel git commit: CAMEL-10531 Introduce fluent builder for Transformer

Posted by da...@apache.org.
CAMEL-10531 Introduce fluent builder for Transformer


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/11c78407
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/11c78407
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/11c78407

Branch: refs/heads/master
Commit: 11c7840712de23c98c2754b684f42d94dc837612
Parents: 388b787
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Wed Jan 18 08:06:41 2017 +0900
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 19 13:20:55 2017 +0100

----------------------------------------------------------------------
 camel-core/src/main/docs/transformer.adoc       |  44 ++++-
 .../org/apache/camel/builder/RouteBuilder.java  |  23 +++
 .../camel/builder/TransformerBuilder.java       | 184 +++++++++++++++++++
 .../camel/builder/TransformerBuilderTest.java   | 117 ++++++++++++
 .../transformer/TransformerContractTest.java    |   8 +-
 .../impl/transformer/TransformerRouteTest.java  |  46 ++---
 .../ManagedTransformerRegistryTest.java         |  33 ++--
 .../camel/example/transformer/cdi/MyRoutes.java |  10 +-
 8 files changed, 402 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/main/docs/transformer.adoc
----------------------------------------------------------------------
diff --git a/camel-core/src/main/docs/transformer.adoc b/camel-core/src/main/docs/transformer.adoc
index d8020db..aff0207 100644
--- a/camel-core/src/main/docs/transformer.adoc
+++ b/camel-core/src/main/docs/transformer.adoc
@@ -73,7 +73,21 @@ DataFormat Transformer Options
 
 | ref | reference to the link:data-format.html[Data Format] ID
 |=======================================================================
-Here is an example to specify bindy DataFormat type in XML DSL:
+Here is an example to specify bindy DataFormat type:
+
+Java DSL:
+[source,java]
+-------------------------------------------------------------------
+BindyDataFormat bindy = new BindyDataFormat();
+bindy.setType(BindyType.Csv);
+bindy.setClassType(com.example.Order.class);
+transformer()
+    .from(com.example.Order.class)
+    .to("csv:CSVOrder")
+    .withDataFormat(bindy);
+-------------------------------------------------------------------
+
+XML DSL:
 [source,xml]
 -------------------------------------------------------------------
 <dataFormatTransformer from="java:com.example.Order" to="csv:CSVOrder">
@@ -93,7 +107,16 @@ Endpoint Transformer Options
 
 | uri | link:endpoint.html[Endpoint] URI
 |=======================================================================
-Here is an example to specify endpoint ref in XML DSL:
+Here is an example to specify endpoint URI in Java DSL:
+[source,java]
+-------------------------------------------------------------------
+transformer()
+    .from("xml")
+    .to("json")
+    .withUri("dozer:myDozer?mappingFile=myMapping.xml...");
+-------------------------------------------------------------------
+
+And here is an example to specify endpoint ref in XML DSL:
 [source,xml]
 -------------------------------------------------------------------
 <endpointTransformer ref="myDozerEndpoint" from="xml" to="json"/>
@@ -112,7 +135,17 @@ Note that Transformer must be a subclass of `org.apache.camel.spi.Transformer`
 
 | type | Fully qualified class name of the custom Transformer class
 |=======================================================================
-Here is an example to specify custom Transformer class in XML DSL:
+Here is an example to specify custom Transformer class:
+Java DSL:
+[source,java]
+-------------------------------------------------------------------
+transformer()
+    .from("xml")
+    .to("json")
+    .withJava(com.example.MyCustomTransformer.class);
+-------------------------------------------------------------------
+
+XML DSL:
 [source,xml]
 -------------------------------------------------------------------
 <customTransformer type="com.example.MyCustomTransformer" from="xml" to="json"/>
@@ -130,7 +163,10 @@ xslt component to transform from `xml:ABCOrder` to `xml:XYZOrder`, we can do as
 Java DSL:
 [source,java]
 -------------------------------------------------------------------
-// TODO implement fluent builder for transformers
+transformer()
+    .from("xml:ABCOrder")
+    .to("xml:XYZOrder")
+    .withUri("xslt:transform.xsl");
 -------------------------------------------------------------------
 
 XML DSL:

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index bc5b61f..ba7b828 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -53,6 +53,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
     private AtomicBoolean initialized = new AtomicBoolean(false);
     private RestsDefinition restCollection = new RestsDefinition();
     private Map<String, RestConfigurationDefinition> restConfigurations;
+    private List<TransformerBuilder> transformerBuilders = new ArrayList<TransformerBuilder>();
     private RoutesDefinition routeCollection = new RoutesDefinition();
 
     public RouteBuilder() {
@@ -132,6 +133,17 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
     }
 
     /**
+     * Create a new Transformer.
+     * 
+     * @return the builder
+     */
+    public TransformerBuilder transformer() {
+        TransformerBuilder tdb = new TransformerBuilder();
+        transformerBuilders.add(tdb);
+        return tdb;
+    }
+
+    /**
      * Creates a new route from the given URI input
      *
      * @param uri  the from uri
@@ -328,6 +340,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
 
         // but populate rests before routes, as we want to turn rests into routes
         populateRests();
+        populateTransformers();
         populateRoutes();
     }
 
@@ -471,6 +484,16 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         }
     }
 
+    protected void populateTransformers() {
+        ModelCamelContext camelContext = getContext();
+        if (camelContext == null) {
+            throw new IllegalArgumentException("CamelContext has not been injected!");
+        }
+        for (TransformerBuilder tdb : transformerBuilders) {
+            tdb.configure(camelContext);
+        }
+    }
+
     public RestsDefinition getRestCollection() {
         return restCollection;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
new file mode 100644
index 0000000..4858fc9
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
@@ -0,0 +1,184 @@
+/**
+ * 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.builder;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.transformer.CustomTransformerDefinition;
+import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
+import org.apache.camel.model.transformer.EndpointTransformerDefinition;
+import org.apache.camel.model.transformer.TransformerDefinition;
+import org.apache.camel.spi.Transformer;
+
+/**
+ * A <a href="http://camel.apache.org/dsl.html">Java DSL</a> which is
+ * used to build a {@link org.apache.camel.spi.Transformer} and register into {@link org.apache.camel.CamelContext}.
+ */
+public class TransformerBuilder {
+
+    private String scheme;
+    private String from;
+    private String to;
+    private String uri;
+    private DataFormatDefinition dataFormat;
+    private Class<? extends Transformer> clazz;
+    private String beanRef;
+
+    /**
+     * Set a scheme name supported by the transformer.
+     *
+     * @param scheme scheme name
+     */
+    public TransformerBuilder scheme(String scheme) {
+        this.scheme = scheme;
+        return this;
+    }
+
+    /**
+     * Set the 'from' data type .
+     *
+     * @param from 'from' data type
+     */
+    public TransformerBuilder from(String from) {
+        this.from = from;
+        return this;
+    }
+
+    /**
+     * Set the 'from' data type using Java class.
+     *
+     * @param clazz 'from' Java class
+     */
+    public TransformerBuilder from(Class<?> from) {
+        this.from = "java:" + from.getName();
+        return this;
+    }
+
+    /**
+     * Set the 'to' data type .
+     *
+     * @param to 'to' data type
+     */
+    public TransformerBuilder to(String to) {
+        this.to = to;
+        return this;
+    }
+
+    /**
+     * Set the 'to' data type using Java class.
+     *
+     * @param clazz 'to' Java class
+     */
+    public TransformerBuilder to(Class<?> to) {
+        this.to = "java:" + to.getName();
+        return this;
+    }
+
+    /**
+     * Set the URI to be used for the endpoint {@code Transformer}.
+     * @see {@code EndpointTransformerDefinition}, {@code ProcessorTransformer}
+     * 
+     * @param uri endpoint URI
+     */
+    public TransformerBuilder withUri(String uri) {
+        resetType();
+        this.uri = uri;
+        return this;
+    }
+
+    /**
+     * Set the {@code DataFormatDefinition} to be used for the {@code DataFormat} {@code Transformer}.
+     * @see {@code DataFormatTransformerDefinition}, {@code DataFormatTransformer}
+     * 
+     * @param dfd {@code DataFormatDefinition}
+     */
+    public TransformerBuilder withDataFormat(DataFormatDefinition dfd) {
+        resetType();
+        this.dataFormat = dfd;
+        return this;
+    }
+
+    /**
+     * Set the Java {@code Class} represents a custom {@code Transformer} implementation class
+     * to be used for custom Transformer.
+     * @see {@code CustomTransformerDefinition}
+     * 
+     * @param clazz {@code Class} object represents custom transformer implementation
+     */
+    public TransformerBuilder withJava(Class<? extends Transformer> clazz) {
+        resetType();
+        this.clazz = clazz;
+        return this;
+    }
+
+    /**
+     * Set the Java Bean name to be used for custom {@code Transformer}.
+     * @see {@code CustomTransformerDefinition}
+     * 
+     * @param ref bean name for the custom {@code Transformer}
+     */
+    public TransformerBuilder withBean(String ref) {
+        resetType();
+        this.beanRef = ref;
+        return this;
+    }
+
+    private void resetType() {
+        this.uri = null;
+        this.dataFormat = null;
+        this.clazz = null;
+        this.beanRef = null;
+    }
+
+    /**
+     * Configure a Transformer according to the configurations built on this builder
+     * and register it into given {@code CamelContext}.
+     * 
+     * @param camelContext {@code CamelContext}
+     */
+    public void configure(CamelContext camelContext) {
+        TransformerDefinition transformer;
+        if (uri != null) {
+            EndpointTransformerDefinition etd = new EndpointTransformerDefinition();
+            etd.setUri(uri);
+            transformer = etd;
+        } else if (dataFormat != null) {
+            DataFormatTransformerDefinition dtd = new DataFormatTransformerDefinition();
+            dtd.setDataFormatType(dataFormat);
+            transformer = dtd;
+        } else if (clazz != null) {
+            CustomTransformerDefinition ctd = new CustomTransformerDefinition();
+            ctd.setType(clazz.getName());
+            transformer = ctd;
+        } else if (beanRef != null) {
+            CustomTransformerDefinition ctd = new CustomTransformerDefinition();
+            ctd.setRef(beanRef);
+            transformer = ctd;
+        } else {
+            throw new IllegalArgumentException("No Transformer type was specified");
+        }
+        
+        if (scheme != null) {
+            transformer.setScheme(scheme);
+        } else {
+            transformer.setFrom(from);
+            transformer.setTo(to);
+        }
+        
+        camelContext.getTransformers().add(transformer);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java b/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
new file mode 100644
index 0000000..1a7c54f
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/builder/TransformerBuilderTest.java
@@ -0,0 +1,117 @@
+/**
+ * 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.builder;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Channel;
+import org.apache.camel.DelegateProcessor;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.Route;
+import org.apache.camel.TestSupport;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.EventDrivenConsumerRoute;
+import org.apache.camel.impl.transformer.DataFormatTransformer;
+import org.apache.camel.impl.transformer.ProcessorTransformer;
+import org.apache.camel.model.dataformat.StringDataFormat;
+import org.apache.camel.processor.ChoiceProcessor;
+import org.apache.camel.processor.DeadLetterChannel;
+import org.apache.camel.processor.EvaluateExpressionProcessor;
+import org.apache.camel.processor.FilterProcessor;
+import org.apache.camel.processor.MulticastProcessor;
+import org.apache.camel.processor.Pipeline;
+import org.apache.camel.processor.RecipientList;
+import org.apache.camel.processor.SendProcessor;
+import org.apache.camel.processor.Splitter;
+import org.apache.camel.processor.ThreadsProcessor;
+import org.apache.camel.processor.idempotent.IdempotentConsumer;
+import org.apache.camel.processor.idempotent.MemoryIdempotentRepository;
+import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.Transformer;
+
+public class TransformerBuilderTest extends TestSupport {
+
+    public void testDataFormatTransformer() throws Exception {
+        CamelContext ctx = new DefaultCamelContext();
+        RouteBuilder builder = new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                transformer().from("xml:foo").to("json:bar").withDataFormat(new StringDataFormat());
+            }
+        };
+        ctx.addRoutes(builder);
+        Transformer transformer = ctx.resolveTransformer(new DataType("xml:foo"), new DataType("json:bar"));
+        assertNotNull(transformer);
+        assertEquals(DataFormatTransformer.class, transformer.getClass());
+        DataFormatTransformer dft = (DataFormatTransformer)transformer;
+        Field f = DataFormatTransformer.class.getDeclaredField("dataFormatType");
+        f.setAccessible(true);
+        Object dataFormatType = f.get(dft);
+        assertEquals(StringDataFormat.class, dataFormatType.getClass());
+    }
+
+    public void testEndpointTransformer() throws Exception {
+        CamelContext ctx = new DefaultCamelContext();
+        RouteBuilder builder = new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                transformer().from("json:foo").to("xml:bar").withUri("direct:transformer");
+                from("direct:transformer");
+            }
+        };
+        ctx.addRoutes(builder);
+        Transformer transformer = ctx.resolveTransformer(new DataType("json:foo"), new DataType("xml:bar"));
+        assertNotNull(transformer);
+        assertEquals(ProcessorTransformer.class, transformer.getClass());
+        ProcessorTransformer pt = (ProcessorTransformer)transformer;
+        Field f = ProcessorTransformer.class.getDeclaredField("processor");
+        f.setAccessible(true);
+        Object processor = f.get(pt);
+        assertEquals(SendProcessor.class, processor.getClass());
+        SendProcessor sp = (SendProcessor)processor;
+        assertEquals("direct://transformer", sp.getEndpoint().getEndpointUri());
+    }
+
+    public void testCustomTransformer() throws Exception {
+        CamelContext ctx = new DefaultCamelContext();
+        RouteBuilder builder = new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                transformer().scheme("other").withJava(MyTransformer.class);
+            }
+        };
+        ctx.addRoutes(builder);
+        Transformer transformer = ctx.resolveTransformer("other");
+        assertNotNull(transformer);
+        assertEquals(MyTransformer.class, transformer.getClass());
+    }
+
+    public static class MyTransformer extends Transformer {
+        @Override
+        public void transform(Message message, DataType from, DataType to) throws Exception {
+            message.getBody();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java
index 6a72d95..56cf91d 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java
@@ -29,7 +29,6 @@ import org.apache.camel.TypeConverters;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -87,13 +86,12 @@ public class TransformerContractTest extends ContextTestSupport {
 
     @Test
     public void testScheme() throws Exception {
-        DataFormatTransformerDefinition transformerDef = new DataFormatTransformerDefinition();
-        transformerDef.setScheme("xml");
-        transformerDef.setDataFormatType(new MyDataFormatDefinition());
-        context.getTransformers().add(transformerDef);
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                transformer()
+                    .scheme("xml")
+                    .withDataFormat(new MyDataFormatDefinition());
                 from("direct:a")
                     .inputType("xml")
                     .outputType("xml")

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
index 29bd215..ddb1daf 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
@@ -40,9 +40,6 @@ import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.transformer.CustomTransformerDefinition;
-import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
-import org.apache.camel.model.transformer.EndpointTransformerDefinition;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.RouteContext;
@@ -181,41 +178,36 @@ public class TransformerRouteTest extends ContextTestSupport {
                         }
                     }).to("mock:xyzresult");
                 
-                DataFormatTransformerDefinition dfdef = new DataFormatTransformerDefinition();
-                dfdef.setDataFormatType(new MyJsonDataFormatDefinition());
-                dfdef.setScheme("json");
-                context.getTransformers().add(dfdef);
+                transformer()
+                    .scheme("json")
+                    .withDataFormat(new MyJsonDataFormatDefinition());
                 from("direct:dataFormat")
                     .inputType("json:JsonXOrder")
                     .outputType("json:JsonXOrderResponse")
                     .inOut("direct:xyz");
                 
                 context.addComponent("myxml", new MyXmlComponent());
-                EndpointTransformerDefinition edef1 = new EndpointTransformerDefinition();
-                edef1.setUri("myxml:endpoint");
-                edef1.setFrom("xml:XmlXOrder");
-                edef1.setTo(XOrder.class);
-                EndpointTransformerDefinition edef2 = new EndpointTransformerDefinition();
-                edef2.setUri("myxml:endpoint");
-                edef2.setFrom(XOrderResponse.class);
-                edef2.setTo("xml:XmlXOrderResponse");
-                context.getTransformers().add(edef1);
-                context.getTransformers().add(edef2);
+                transformer()
+                    .from("xml:XmlXOrder")
+                    .to(XOrder.class)
+                    .withUri("myxml:endpoint");
+                transformer()
+                    .from(XOrderResponse.class)
+                    .to("xml:XmlXOrderResponse")
+                    .withUri("myxml:endpoint");
                 from("direct:endpoint")
                     .inputType("xml:XmlXOrder")
                     .outputType("xml:XmlXOrderResponse")
                     .inOut("direct:xyz");
                 
-                CustomTransformerDefinition bdef1 = new CustomTransformerDefinition();
-                bdef1.setType(OtherToXOrderTransformer.class.getName());
-                bdef1.setFrom("other:OtherXOrder");
-                bdef1.setTo(XOrder.class);
-                CustomTransformerDefinition bdef2 = new CustomTransformerDefinition();
-                bdef2.setType(XOrderResponseToOtherTransformer.class.getName());
-                bdef2.setFrom(XOrderResponse.class);
-                bdef2.setTo("other:OtherXOrderResponse");
-                context.getTransformers().add(bdef1);
-                context.getTransformers().add(bdef2);
+                transformer()
+                    .from("other:OtherXOrder")
+                    .to(XOrder.class)
+                    .withJava(OtherToXOrderTransformer.class);
+                transformer()
+                    .from(XOrderResponse.class)
+                    .to("other:OtherXOrderResponse")
+                    .withJava(XOrderResponseToOtherTransformer.class);
                 from("direct:custom")
                     .inputType("other:OtherXOrder")
                     .outputType("other:OtherXOrderResponse")

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
index 37754df..d1b500f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
@@ -28,9 +28,6 @@ import javax.management.openmbean.TabularData;
 import org.apache.camel.Message;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.dataformat.StringDataFormat;
-import org.apache.camel.model.transformer.CustomTransformerDefinition;
-import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
-import org.apache.camel.model.transformer.EndpointTransformerDefinition;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Transformer;
 import org.slf4j.Logger;
@@ -119,25 +116,19 @@ public class ManagedTransformerRegistryTest extends ManagementTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").to("mock:result");
+                transformer()
+                    .from("xml:foo")
+                    .to("json:bar")
+                    .withUri("direct:transformer");
+                transformer()
+                    .from(ManagedTransformerRegistryTest.class)
+                    .to("xml:test")
+                    .withDataFormat(new StringDataFormat());
+                transformer()
+                    .scheme("custom")
+                    .withJava(MyTransformer.class);
                 
-                EndpointTransformerDefinition etd = new EndpointTransformerDefinition();
-                etd.setFrom("xml:foo");
-                etd.setTo("json:bar");
-                etd.setUri("direct:transformer");
-                context.getTransformers().add(etd);
-                context.resolveTransformer(new DataType("xml:foo"), new DataType("json:bar"));
-                DataFormatTransformerDefinition dftd = new DataFormatTransformerDefinition();
-                dftd.setFrom(ManagedTransformerRegistryTest.class);
-                dftd.setTo("xml:test");
-                dftd.setDataFormatType(new StringDataFormat());
-                context.getTransformers().add(dftd);
-                context.resolveTransformer(new DataType(ManagedTransformerRegistryTest.class), new DataType("xml:test"));
-                CustomTransformerDefinition ctd = new CustomTransformerDefinition();
-                ctd.setScheme("custom");
-                ctd.setType(MyTransformer.class.getName());
-                context.getTransformers().add(ctd);
-                context.resolveTransformer("custom");
+                from("direct:start").to("mock:result");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/11c78407/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java b/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
index 9a9fbe0..c19d6ed 100644
--- a/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
+++ b/examples/camel-example-transformer-cdi/src/main/java/org/apache/camel/example/transformer/cdi/MyRoutes.java
@@ -17,7 +17,6 @@
 package org.apache.camel.example.transformer.cdi;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.transformer.EndpointTransformerDefinition;
 
 /**
  * Configures all our Camel routes, components, endpoints and beans
@@ -26,11 +25,10 @@ public class MyRoutes extends RouteBuilder {
 
     @Override
     public void configure() {
-        EndpointTransformerDefinition eptd = new EndpointTransformerDefinition();
-        eptd.setUri("xslt:transform.xsl");
-        eptd.setFrom("xml:MyRequest");
-        eptd.setTo("xml:MyResponse");
-        getContext().getTransformers().add(eptd);
+        transformer()
+            .from("xml:MyRequest")
+            .to("xml:MyResponse")
+            .withUri("xslt:transform.xsl");
         
         from("timer:foo?period=5000").id("timer-route")
             .log("start -->")