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 <[email protected]> Authored: Wed Jan 18 08:06:41 2017 +0900 Committer: Claus Ibsen <[email protected]> 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 -->")
