This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new cd3268d3cab CAMEL-213670: Upgrade to smooks 2.0.1 cd3268d3cab is described below commit cd3268d3cab381172428df472f7262d9343bdd6c Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Oct 22 09:40:28 2024 +0200 CAMEL-213670: Upgrade to smooks 2.0.1 --- ...nverterLoader.java => SinkConverterLoader.java} | 30 ++++++------ .../smooks/converter/SourceConverterLoader.java | 18 ++++---- .../services/org/apache/camel/TypeConverterLoader | 2 +- .../camel/component/smooks/SmooksProcessor.java | 41 ++++++++++------ .../{ResultConverter.java => SinkConverter.java} | 54 +++++++++------------- .../smooks/converter/SourceConverter.java | 45 ++++++++++-------- .../component/smooks/SmooksProcessorTest.java | 21 ++++----- ...ltConverterTest.java => SinkConverterTest.java} | 20 ++++---- .../smooks/converter/SourceConverterTest.java | 2 +- .../test/resources/edi-to-xml-smooks-config.xml | 2 +- .../ROOT/pages/camel-4x-upgrade-guide-4_9.adoc | 11 ++--- parent/pom.xml | 2 +- 12 files changed, 127 insertions(+), 121 deletions(-) diff --git a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/ResultConverterLoader.java b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SinkConverterLoader.java similarity index 70% rename from components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/ResultConverterLoader.java rename to components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SinkConverterLoader.java index 2280a868479..244eb11a9a2 100644 --- a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/ResultConverterLoader.java +++ b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SinkConverterLoader.java @@ -21,11 +21,11 @@ import org.apache.camel.util.DoubleMap; @Generated("org.apache.camel.maven.packaging.TypeConverterLoaderGeneratorMojo") @SuppressWarnings("unchecked") @DeferredContextBinding -public final class ResultConverterLoader implements TypeConverterLoader, CamelContextAware { +public final class SinkConverterLoader implements TypeConverterLoader, CamelContextAware { private CamelContext camelContext; - public ResultConverterLoader() { + public SinkConverterLoader() { } @Override @@ -45,18 +45,18 @@ public final class ResultConverterLoader implements TypeConverterLoader, CamelCo } private void registerConverters(TypeConverterRegistry registry) { - addTypeConverter(registry, java.lang.Double.class, org.smooks.io.payload.JavaResult.ResultMap.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toDouble((org.smooks.io.payload.JavaResult.ResultMap) value)); - addTypeConverter(registry, java.lang.Integer.class, org.smooks.io.payload.JavaResult.ResultMap.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toInteger((org.smooks.io.payload.JavaResult.ResultMap) value)); - addTypeConverter(registry, java.lang.String.class, org.smooks.io.payload.StringResult.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toString((org.smooks.io.payload.StringResult) value)); - addTypeConverter(registry, java.util.List.class, org.smooks.io.payload.JavaResult.ResultMap.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toList((org.smooks.io.payload.JavaResult.ResultMap) value, exchange)); - addTypeConverter(registry, javax.xml.transform.stream.StreamSource.class, org.smooks.io.payload.StringResult.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toStreamSource((org.smooks.io.payload.StringResult) value)); - addTypeConverter(registry, org.w3c.dom.Node.class, javax.xml.transform.dom.DOMResult.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.toDocument((javax.xml.transform.dom.DOMResult) value)); + addTypeConverter(registry, java.lang.Double.class, org.smooks.io.sink.JavaSink.ResultMap.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toDouble((org.smooks.io.sink.JavaSink.ResultMap) value)); + addTypeConverter(registry, java.lang.Integer.class, org.smooks.io.sink.JavaSink.ResultMap.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toInteger((org.smooks.io.sink.JavaSink.ResultMap) value)); + addTypeConverter(registry, java.lang.String.class, org.smooks.io.sink.StringSink.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toString((org.smooks.io.sink.StringSink) value)); + addTypeConverter(registry, java.util.List.class, org.smooks.io.sink.JavaSink.ResultMap.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toList((org.smooks.io.sink.JavaSink.ResultMap) value, exchange)); + addTypeConverter(registry, org.smooks.io.source.StringSource.class, org.smooks.io.sink.StringSink.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toStringSource((org.smooks.io.sink.StringSink) value)); + addTypeConverter(registry, org.w3c.dom.Node.class, org.smooks.io.sink.DOMSink.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.toDocument((org.smooks.io.sink.DOMSink) value)); } private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { @@ -64,7 +64,7 @@ public final class ResultConverterLoader implements TypeConverterLoader, CamelCo } private void registerFallbackConverters(TypeConverterRegistry registry) { - addFallbackTypeConverter(registry, false, false, (type, exchange, value) -> org.apache.camel.component.smooks.converter.ResultConverter.convertTo(type, exchange, value, registry)); + addFallbackTypeConverter(registry, false, false, (type, exchange, value) -> org.apache.camel.component.smooks.converter.SinkConverter.convertTo(type, exchange, value, registry)); } private static void addFallbackTypeConverter(TypeConverterRegistry registry, boolean allowNull, boolean canPromote, SimpleTypeConverter.ConversionMethod method) { diff --git a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SourceConverterLoader.java b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SourceConverterLoader.java index ab1c69772f8..16504fb65cb 100644 --- a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SourceConverterLoader.java +++ b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/converter/SourceConverterLoader.java @@ -44,16 +44,18 @@ public final class SourceConverterLoader implements TypeConverterLoader, CamelCo } private void registerConverters(TypeConverterRegistry registry) { - addTypeConverter(registry, javax.xml.transform.Source.class, java.io.InputStream.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toStreamSource((java.io.InputStream) value)); - addTypeConverter(registry, javax.xml.transform.Source.class, org.apache.camel.WrappedFile.class, true, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toStreamSource((org.apache.camel.WrappedFile) value, exchange)); - addTypeConverter(registry, org.smooks.io.payload.JavaSource.class, java.lang.Object.class, false, + addTypeConverter(registry, org.smooks.api.io.Source.class, org.apache.camel.WrappedFile.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toURISource((org.apache.camel.WrappedFile) value)); + addTypeConverter(registry, org.smooks.io.source.JavaSource.class, java.lang.Object.class, false, (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toJavaSource(value)); - addTypeConverter(registry, org.smooks.io.payload.JavaSource.class, org.smooks.io.payload.JavaResult.class, false, - (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toJavaSource((org.smooks.io.payload.JavaResult) value)); - addTypeConverter(registry, org.smooks.io.payload.JavaSourceWithoutEventStream.class, java.lang.Object.class, false, + addTypeConverter(registry, org.smooks.io.source.JavaSource.class, org.smooks.io.sink.JavaSink.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toJavaSource((org.smooks.io.sink.JavaSink) value)); + addTypeConverter(registry, org.smooks.io.source.JavaSourceWithoutEventStream.class, java.lang.Object.class, false, (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toJavaSourceWithoutEventStream(value)); + addTypeConverter(registry, org.smooks.io.source.StreamSource.class, java.io.InputStream.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toStreamSource((java.io.InputStream) value)); + addTypeConverter(registry, org.smooks.io.source.StringSource.class, java.lang.String.class, false, + (type, exchange, value) -> org.apache.camel.component.smooks.converter.SourceConverter.toStringSource((java.lang.String) value)); } private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { diff --git a/components/camel-smooks/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader b/components/camel-smooks/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader index 5b76f723f6b..507592d2816 100644 --- a/components/camel-smooks/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader +++ b/components/camel-smooks/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader @@ -1,3 +1,3 @@ # Generated by camel build tools - do NOT edit this file! -org.apache.camel.component.smooks.converter.ResultConverterLoader +org.apache.camel.component.smooks.converter.SinkConverterLoader org.apache.camel.component.smooks.converter.SourceConverterLoader diff --git a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java index 1464347362a..94e5aa7128a 100644 --- a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java +++ b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java @@ -20,14 +20,12 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.Reader; +import java.net.MalformedURLException; +import java.net.URL; import java.util.*; import java.util.Map.Entry; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Node; @@ -50,10 +48,16 @@ import org.smooks.api.ExecutionContext; import org.smooks.api.SmooksException; import org.smooks.api.TypedKey; import org.smooks.api.delivery.VisitorAppender; +import org.smooks.api.io.Sink; +import org.smooks.api.io.Source; import org.smooks.api.resource.visitor.Visitor; import org.smooks.engine.lookup.ExportsLookup; import org.smooks.engine.report.HtmlReportGenerator; import org.smooks.io.payload.Exports; +import org.smooks.io.source.DOMSource; +import org.smooks.io.source.ReaderSource; +import org.smooks.io.source.StreamSource; +import org.smooks.io.source.URLSource; /** * Smooks {@link Processor} for Camel. @@ -109,20 +113,20 @@ public class SmooksProcessor extends ServiceSupport implements Processor, CamelC final Exports exports = smooks.getApplicationContext().getRegistry().lookup(new ExportsLookup()); if (exports.hasExports()) { - final Result[] results = exports.createResults(); - smooks.filterSource(executionContext, getSource(exchange), results); - setResultOnBody(exports, results, exchange); + final Sink[] sinks = exports.createSinks(); + smooks.filterSource(executionContext, getSource(exchange, executionContext), sinks); + setResultOnBody(exports, sinks, exchange); } else { - smooks.filterSource(executionContext, getSource(exchange)); + smooks.filterSource(executionContext, getSource(exchange, executionContext)); } } finally { executionContext.remove(EXCHANGE_TYPED_KEY); } } - protected void setResultOnBody(final Exports exports, final Result[] results, final Exchange exchange) { + protected void setResultOnBody(final Exports exports, final Sink[] sinks, final Exchange exchange) { final Message message = exchange.getMessage(); - final List<Object> objects = Exports.extractResults(results, exports); + final List<Object> objects = Exports.extractSinks(sinks, exports); if (objects.size() == 1) { Object value = objects.get(0); message.setBody(value); @@ -144,11 +148,11 @@ public class SmooksProcessor extends ServiceSupport implements Processor, CamelC } } - private Source getSource(final Exchange exchange) { + private Source getSource(final Exchange exchange, ExecutionContext executionContext) { Object payload = exchange.getIn().getBody(); if (payload instanceof SAXSource) { - return new StreamSource((Reader) ((SAXSource) payload).getXMLReader()); + return new ReaderSource<>((Reader) ((SAXSource) payload).getXMLReader()); } if (payload instanceof Source) { @@ -160,15 +164,22 @@ public class SmooksProcessor extends ServiceSupport implements Processor, CamelC } if (payload instanceof InputStream) { - return new StreamSource((InputStream) payload); + return new StreamSource<>((InputStream) payload); } if (payload instanceof Reader) { - return new StreamSource((Reader) payload); + return new ReaderSource<>((Reader) payload); } if (payload instanceof WrappedFile) { - return new StreamSource((File) exchange.getIn().getBody(WrappedFile.class).getFile()); + String systemId + = new javax.xml.transform.stream.StreamSource((File) exchange.getIn().getBody(WrappedFile.class).getFile()) + .getSystemId(); + try { + return new URLSource(new URL(systemId)); + } catch (MalformedURLException e) { + throw new SmooksException(e); + } } return exchange.getIn().getBody(Source.class); diff --git a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/ResultConverter.java b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SinkConverter.java similarity index 63% rename from components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/ResultConverter.java rename to components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SinkConverter.java index c467e81333b..beb66fbd1fe 100644 --- a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/ResultConverter.java +++ b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SinkConverter.java @@ -16,71 +16,68 @@ */ package org.apache.camel.component.smooks.converter; -import java.io.StringReader; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.xml.transform.Result; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.stream.StreamSource; - import org.w3c.dom.Node; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.spi.TypeConverterRegistry; -import org.smooks.io.payload.JavaResult; -import org.smooks.io.payload.StringResult; +import org.smooks.io.sink.DOMSink; +import org.smooks.io.sink.JavaSink; +import org.smooks.io.sink.StringSink; +import org.smooks.io.source.StringSource; /** - * ResultConverter converts from different {@link Result} types. + * Converts from different {@link org.smooks.api.io.Sink} types. */ @Converter(generateLoader = true) -public class ResultConverter { +public class SinkConverter { public static final String SMOOKS_RESULT_KEY = "SmooksResultKeys"; - private ResultConverter() { + private SinkConverter() { } @Converter - public static Node toDocument(DOMResult domResult) { - return domResult.getNode(); + public static Node toDocument(DOMSink domSink) { + return domSink.getNode(); } @SuppressWarnings("rawtypes") @Converter - public static List toList(JavaResult.ResultMap javaResult, Exchange exchange) { + public static List toList(JavaSink.ResultMap javaResult, Exchange exchange) { String resultKey = (String) exchange.getProperty(SMOOKS_RESULT_KEY); if (resultKey != null) { - return (List) getResultsFromJavaResult(javaResult, resultKey); + return (List) getResultsFromJavaSink(javaResult, resultKey); } else { - return (List) getSingleObjectFromJavaResult(javaResult); + return (List) getSingleObjectFromJavaSink(javaResult); } } @SuppressWarnings("rawtypes") @Converter - public static Integer toInteger(JavaResult.ResultMap result) { - return (Integer) getSingleObjectFromJavaResult(result); + public static Integer toInteger(JavaSink.ResultMap result) { + return (Integer) getSingleObjectFromJavaSink(result); } @SuppressWarnings("rawtypes") @Converter - public static Double toDouble(JavaResult.ResultMap result) { - return (Double) getSingleObjectFromJavaResult(result); + public static Double toDouble(JavaSink.ResultMap result) { + return (Double) getSingleObjectFromJavaSink(result); } @Converter - public static String toString(StringResult result) { + public static String toString(StringSink result) { return result.getResult(); } @SuppressWarnings("rawtypes") - public static Map toMap(JavaResult.ResultMap resultBeans, Exchange exchange) { + public static Map toMap(JavaSink.ResultMap resultBeans, Exchange exchange) { Message outMessage = exchange.getOut(); outMessage.setBody(resultBeans); @@ -93,11 +90,11 @@ public class ResultConverter { } @SuppressWarnings("rawtypes") - private static Object getResultsFromJavaResult(JavaResult.ResultMap resultMap, String resultKey) { + private static Object getResultsFromJavaSink(JavaSink.ResultMap resultMap, String resultKey) { return resultMap.get(resultKey); } - private static Object getSingleObjectFromJavaResult(@SuppressWarnings("rawtypes") JavaResult.ResultMap resultMap) { + private static Object getSingleObjectFromJavaSink(@SuppressWarnings("rawtypes") JavaSink.ResultMap resultMap) { if (resultMap.size() == 1) { return resultMap.values().iterator().next(); } @@ -105,20 +102,15 @@ public class ResultConverter { } @Converter - public static StreamSource toStreamSource(StringResult stringResult) { + public static StringSource toStringSource(StringSink stringResult) { String result = stringResult.getResult(); - if (result != null) { - StringReader stringReader = new StringReader(result); - return new StreamSource(stringReader); - } - - return null; + return new StringSource(result); } @SuppressWarnings("rawtypes") @Converter(fallback = true) public static <T> T convertTo(Class<T> type, Exchange exchange, Object value, TypeConverterRegistry registry) { - if (value instanceof JavaResult.ResultMap) { + if (value instanceof JavaSink.ResultMap) { for (Object mapValue : ((Map) value).values()) { if (type.isInstance(mapValue)) { return type.cast(mapValue); diff --git a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SourceConverter.java b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SourceConverter.java index 47333c9b63b..773bf4127ed 100644 --- a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SourceConverter.java +++ b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/converter/SourceConverter.java @@ -18,16 +18,19 @@ package org.apache.camel.component.smooks.converter; import java.io.File; import java.io.InputStream; - -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamSource; +import java.net.MalformedURLException; +import java.net.URL; import org.apache.camel.Converter; -import org.apache.camel.Exchange; import org.apache.camel.WrappedFile; -import org.smooks.io.payload.JavaResult; -import org.smooks.io.payload.JavaSource; -import org.smooks.io.payload.JavaSourceWithoutEventStream; +import org.smooks.api.SmooksException; +import org.smooks.api.io.Source; +import org.smooks.io.sink.JavaSink; +import org.smooks.io.source.JavaSource; +import org.smooks.io.source.JavaSourceWithoutEventStream; +import org.smooks.io.source.StreamSource; +import org.smooks.io.source.StringSource; +import org.smooks.io.source.URLSource; /** * SourceConverter is a Camel {@link Converter} that converts from different formats to {@link Source} instances. @@ -35,6 +38,7 @@ import org.smooks.io.payload.JavaSourceWithoutEventStream; */ @Converter(generateLoader = true) public class SourceConverter { + private SourceConverter() { } @@ -49,24 +53,27 @@ public class SourceConverter { } @Converter - public static Source toStreamSource(InputStream in) { - return new StreamSource(in); + public static StreamSource toStreamSource(InputStream in) { + return new StreamSource<>(in); } @Converter - public static JavaSource toJavaSource(JavaResult result) { + public static JavaSource toJavaSource(JavaSink result) { return new JavaSource(result.getResultMap().values()); } - @Converter(allowNull = true) - public static Source toStreamSource(WrappedFile<?> file, Exchange exchange) throws Exception { - Object obj = file.getFile(); - if (obj instanceof File f) { - return new StreamSource(f); - } else { - InputStream is = exchange.getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, file.getBody()); - return new StreamSource(is); - } + @Converter + public static StringSource toStringSource(String string) { + return new StringSource(string); } + @Converter + public static Source toURISource(WrappedFile<File> genericFile) { + String systemId = new javax.xml.transform.stream.StreamSource((File) genericFile.getBody()).getSystemId(); + try { + return new URLSource(new URL(systemId)); + } catch (MalformedURLException e) { + throw new SmooksException(e); + } + } } diff --git a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java index 503728f1e7f..30fc5ad4cf7 100644 --- a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java +++ b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java @@ -27,8 +27,6 @@ import java.util.Map; import jakarta.activation.DataHandler; import jakarta.activation.DataSource; -import javax.xml.transform.stream.StreamSource; - import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -45,9 +43,10 @@ import org.smooks.Smooks; import org.smooks.cartridges.javabean.Bean; import org.smooks.cartridges.javabean.Value; import org.smooks.io.payload.Exports; -import org.smooks.io.payload.JavaResult; -import org.smooks.io.payload.StringResult; -import org.smooks.io.payload.StringSource; +import org.smooks.io.sink.JavaSink; +import org.smooks.io.sink.StringSink; +import org.smooks.io.source.StreamSource; +import org.smooks.io.source.StringSource; import org.smooks.support.StreamUtils; import org.xmlunit.builder.DiffBuilder; @@ -134,7 +133,7 @@ public class SmooksProcessorTest extends CamelTestSupport { context.addRoutes(new RouteBuilder() { @Override public void configure() { - Smooks smooks = new Smooks().setExports(new Exports(JavaResult.class)); + Smooks smooks = new Smooks().setExports(new Exports(JavaSink.class)); from("direct:a") .process(new SmooksProcessor(smooks, context) .addVisitor(new Value( @@ -161,7 +160,7 @@ public class SmooksProcessorTest extends CamelTestSupport { context.addRoutes(new RouteBuilder() { public void configure() { from("file://target/smooks") - .process(new SmooksProcessor(new Smooks().setExports(new Exports(StringResult.class)), context)) + .process(new SmooksProcessor(new Smooks().setExports(new Exports(StringSink.class)), context)) .to("mock:a"); } }); @@ -178,7 +177,7 @@ public class SmooksProcessorTest extends CamelTestSupport { @Test public void testProcessWhenSmooksExportIsJavaResultAndBodyIsVisitedByJavaBeanValue() throws Exception { - Smooks smooks = new Smooks().setExports(new Exports(JavaResult.class)); + Smooks smooks = new Smooks().setExports(new Exports(JavaSink.class)); context.addRoutes(new RouteBuilder() { @Override public void configure() { @@ -197,7 +196,7 @@ public class SmooksProcessorTest extends CamelTestSupport { @Test public void testProcessWhenSmooksExportIsJavaResultAndBodyIsVisitedByMultipleJavaBeanValues() throws Exception { - Smooks smooks = new Smooks().setExports(new Exports(JavaResult.class)); + Smooks smooks = new Smooks().setExports(new Exports(JavaSink.class)); context.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { @@ -218,7 +217,7 @@ public class SmooksProcessorTest extends CamelTestSupport { @Test public void testProcessWhenSmooksExportIsJavaResultAndBodyIsVisitedByBean() throws Exception { - Smooks smooks = new Smooks().setExports(new Exports(JavaResult.class)); + Smooks smooks = new Smooks().setExports(new Exports(JavaSink.class)); context.addRoutes(new RouteBuilder() { @Override public void configure() { @@ -242,7 +241,7 @@ public class SmooksProcessorTest extends CamelTestSupport { context.addRoutes(new RouteBuilder() { public void configure() { from("direct:a") - .process(new SmooksProcessor(new Smooks().setExports(new Exports(StringResult.class)), context)) + .process(new SmooksProcessor(new Smooks().setExports(new Exports(StringSink.class)), context)) .to("direct:b"); from("direct:b").convertBodyTo(String.class).process(new DirectBProcessor()); diff --git a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/ResultConverterTest.java b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SinkConverterTest.java similarity index 73% rename from components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/ResultConverterTest.java rename to components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SinkConverterTest.java index 08d3e52cb9d..ebb673f9354 100644 --- a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/ResultConverterTest.java +++ b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SinkConverterTest.java @@ -17,19 +17,17 @@ package org.apache.camel.component.smooks.converter; import java.io.BufferedReader; -import java.io.StringWriter; - -import javax.xml.transform.stream.StreamSource; import org.apache.camel.TypeConverter; import org.apache.camel.impl.DefaultCamelContext; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.smooks.io.payload.StringResult; +import org.smooks.io.sink.StringSink; +import org.smooks.io.source.ReaderSource; import static org.junit.jupiter.api.Assertions.assertEquals; -public class ResultConverterTest { +public class SinkConverterTest { private TypeConverter typeConverter; @@ -41,19 +39,17 @@ public class ResultConverterTest { @Test public void convertStringResultToStreamSource() throws Exception { - StringResult stringResult = createStringResult("Bajja"); + StringSink stringResult = createStringSink("Bajja"); - StreamSource streamSource = typeConverter.convertTo(StreamSource.class, stringResult); + ReaderSource<?> streamSource = typeConverter.convertTo(ReaderSource.class, stringResult); BufferedReader reader = new BufferedReader(streamSource.getReader()); assertEquals("Bajja", reader.readLine()); } - private StringResult createStringResult(String string) { - StringWriter stringWriter = new StringWriter(); - stringWriter.write(string); - StringResult stringResult = new StringResult(); - stringResult.setWriter(stringWriter); + private StringSink createStringSink(String string) { + StringSink stringResult = new StringSink(); + stringResult.getStringWriter().write(string); return stringResult; } diff --git a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SourceConverterTest.java b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SourceConverterTest.java index fdc52368d11..ba93c5b2ce8 100644 --- a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SourceConverterTest.java +++ b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/converter/SourceConverterTest.java @@ -23,7 +23,7 @@ import org.apache.camel.TypeConverter; import org.apache.camel.impl.DefaultCamelContext; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.smooks.io.payload.JavaSourceWithoutEventStream; +import org.smooks.io.source.JavaSourceWithoutEventStream; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/components/camel-smooks/src/test/resources/edi-to-xml-smooks-config.xml b/components/camel-smooks/src/test/resources/edi-to-xml-smooks-config.xml index 82a5641a4e2..6d7e90daaa9 100644 --- a/components/camel-smooks/src/test/resources/edi-to-xml-smooks-config.xml +++ b/components/camel-smooks/src/test/resources/edi-to-xml-smooks-config.xml @@ -29,7 +29,7 @@ compositeDataElementSeparator="^"/> <core:exports> - <core:result type="javax.xml.transform.dom.DOMResult"/> + <core:result type="org.smooks.io.sink.DOMSink"/> </core:exports> </smooks-resource-list> diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_9.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_9.adoc index 7f63a78c87d..45ba2b3da35 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_9.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_9.adoc @@ -34,6 +34,11 @@ The `camel-opentelemetry` component has had significant bug fixes to handle span better when Camel route messages synchronously and asynchronously. This component should also work better on Spring Boot. +=== camel-smooks + +Upgraded Smooks from 2.0.0-RC4 to 2.0.1 which has +https://www.smooks.org/documentation/#migrating_from_smooks_1_7_to_2_0[API breaking changes] in Smooks. + === camel-hashicorp-vault properties function The syntax for retrieving a single field of a secret has been changed. @@ -133,9 +138,3 @@ The following modules has been removed: * camel-kotlin-dsl * camel-kotlin-api - -=== Deprecated Components - -The following components that were marked as deprecated: - -* diff --git a/parent/pom.xml b/parent/pom.xml index 0c4a85ad172..91ce169e991 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -450,7 +450,7 @@ <smallrye-health-version>4.1.0</smallrye-health-version> <smallrye-fault-tolerance-version>6.5.0</smallrye-fault-tolerance-version> <smbj-version>0.13.0</smbj-version> - <smooks-version>2.0.0-RC4</smooks-version> + <smooks-version>2.0.1</smooks-version> <snakeyaml-version>2.3</snakeyaml-version> <snakeyaml-engine-version>2.8</snakeyaml-engine-version> <snmp4j-version>3.8.2</snmp4j-version>