This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch dataformat in repository https://gitbox.apache.org/repos/asf/camel.git
commit fc3567ffc5bcc5e1be04ef91a9b01d0f16efc87b Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Apr 21 10:46:37 2019 +0200 CAMEL-13439: Resolving data formats is a bit cumbersome. So lets initialize dataformats that has been setup via XML DSL or added as model, then they are ready to be used. Avoid using RouteContext as it was not needed and helps with modularization. Add some missing dataformats in the DSL. --- components/camel-dozer/pom.xml | 2 +- .../camel/component/dozer/DozerProducer.java | 7 ++---- .../apache/camel/impl/AbstractCamelContext.java | 11 ++++++++ .../impl/transformer/DataFormatTransformer.java | 13 ++++++---- .../apache/camel/model/DataFormatDefinition.java | 29 ++++++++++------------ .../org/apache/camel/model/MarshalDefinition.java | 6 +++++ .../apache/camel/model/UnmarshalDefinition.java | 6 +++++ .../camel/model/dataformat/BindyDataFormat.java | 7 +++--- .../camel/model/dataformat/BoonDataFormat.java | 6 ++--- .../camel/model/dataformat/CryptoDataFormat.java | 16 ++++++------ .../camel/model/dataformat/CustomDataFormat.java | 6 ++--- .../camel/model/dataformat/FlatpackDataFormat.java | 8 +++--- .../camel/model/dataformat/GzipDataFormat.java | 3 ++- .../model/dataformat/JacksonXMLDataFormat.java | 8 +++--- .../camel/model/dataformat/JibxDataFormat.java | 6 ++--- .../camel/model/dataformat/JsonDataFormat.java | 18 +++++++------- .../model/dataformat/SerializationDataFormat.java | 3 ++- .../camel/model/dataformat/StringDataFormat.java | 3 ++- .../model/dataformat/TidyMarkupDataFormat.java | 6 ++--- .../camel/model/dataformat/XStreamDataFormat.java | 8 +++--- .../camel/model/dataformat/YAMLDataFormat.java | 6 ++--- .../camel/model/dataformat/ZipDataFormat.java | 3 ++- .../org/apache/camel/reifier/MarshalReifier.java | 2 +- .../org/apache/camel/reifier/UnmarshalReifier.java | 2 +- .../impl/transformer/TransformerContractTest.java | 12 +++++---- .../impl/transformer/TransformerRouteTest.java | 12 ++++----- 26 files changed, 118 insertions(+), 91 deletions(-) diff --git a/components/camel-dozer/pom.xml b/components/camel-dozer/pom.xml index 30d3729..4a33dcf 100644 --- a/components/camel-dozer/pom.xml +++ b/components/camel-dozer/pom.xml @@ -40,7 +40,7 @@ <!-- requires camel-core --> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-core</artifactId> + <artifactId>camel-support</artifactId> </dependency> <dependency> <groupId>com.github.dozermapper</groupId> diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java index 77fc3e9..6038d75 100644 --- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java +++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java @@ -18,7 +18,6 @@ package org.apache.camel.component.dozer; import org.apache.camel.Exchange; import org.apache.camel.Message; -import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.support.DefaultProducer; import org.apache.camel.support.processor.MarshalProcessor; @@ -129,8 +128,7 @@ public class DozerProducer extends DefaultProducer { Exchange exchange, String dataFormatId) throws Exception { if (unmarshaller == null) { - DataFormat dataFormat = DataFormatDefinition.getDataFormat( - exchange.getUnitOfWork().getRouteContext(), null, dataFormatId); + DataFormat dataFormat = exchange.getContext().resolveDataFormat(dataFormatId); if (dataFormat == null) { throw new Exception("Unable to resolve data format for unmarshalling: " + dataFormatId); } @@ -152,8 +150,7 @@ public class DozerProducer extends DefaultProducer { Exchange exchange, String dataFormatId) throws Exception { if (marshaller == null) { - DataFormat dataFormat = DataFormatDefinition.getDataFormat( - exchange.getUnitOfWork().getRouteContext(), null, dataFormatId); + DataFormat dataFormat = exchange.getContext().resolveDataFormat(dataFormatId); if (dataFormat == null) { throw new Exception("Unable to resolve data format for marshalling: " + dataFormatId); } diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java b/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java index 2ea5ab7..fcb8743 100644 --- a/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java +++ b/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java @@ -2555,6 +2555,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Mod } // Start runtime catalog + // TODO: remove me as already started earlier getExtension(RuntimeCamelCatalog.class); // re-create endpoint registry as the cache size limit may be set after the constructor of this instance was called. @@ -2590,6 +2591,16 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Mod propertiesComponent = existing; } + // eager lookup data formats and bind to registry so the dataformats can be looked up and used + for (Map.Entry<String, DataFormatDefinition> e : dataFormats.entrySet()) { + String id = e.getKey(); + DataFormatDefinition def = e.getValue(); + log.debug("Creating Dataformat with id: {} and definition: {}", id, def); + DataFormat df = def.getDataFormat(this); + addService(df, true); + getRegistry().bind(id, df); + } + // start components startServices(components.values()); diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/transformer/DataFormatTransformer.java b/core/camel-core/src/main/java/org/apache/camel/impl/transformer/DataFormatTransformer.java index b537cac..7e9b409 100644 --- a/core/camel-core/src/main/java/org/apache/camel/impl/transformer/DataFormatTransformer.java +++ b/core/camel-core/src/main/java/org/apache/camel/impl/transformer/DataFormatTransformer.java @@ -93,13 +93,16 @@ public class DataFormatTransformer extends Transformer { } } - /** - * A bit dirty hack to create DataFormat instance, as it requires a RouteContext anyway. - */ private DataFormat getDataFormat(Exchange exchange) throws Exception { + // TODO: Move this to doStart and remove this method if (this.dataFormat == null) { - this.dataFormat = DataFormatDefinition.getDataFormat( - exchange.getUnitOfWork().getRouteContext(), this.dataFormatType, this.dataFormatRef); + if (this.dataFormatType != null) { + this.dataFormat = this.dataFormatType.getDataFormat(exchange.getContext()); + } else if (this.dataFormatRef != null) { + this.dataFormat = exchange.getContext().resolveDataFormat(this.dataFormatRef); + } +// this.dataFormat = DataFormatDefinition.getDataFormat( +// exchange.getContext(), this.dataFormatType, this.dataFormatRef); if (this.dataFormat != null && !getCamelContext().hasService(this.dataFormat)) { getCamelContext().addService(this.dataFormat, false); } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java index 6916e8d..7a1a3f1 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java @@ -29,11 +29,8 @@ import javax.xml.namespace.QName; import org.apache.camel.CamelContext; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RouteContext; import org.apache.camel.support.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; - - import static org.apache.camel.support.EndpointHelper.isReferenceParameter; /** @@ -67,55 +64,55 @@ public class DataFormatDefinition extends IdentifiedType implements OtherAttribu /** * Factory method to create the data format * - * @param routeContext route context + * @param camelContext the camel context * @param type the data format type * @param ref reference to lookup for a data format * @return the data format or null if not possible to create */ - public static DataFormat getDataFormat(RouteContext routeContext, DataFormatDefinition type, String ref) { + public static DataFormat getDataFormat(CamelContext camelContext, DataFormatDefinition type, String ref) { if (type == null) { ObjectHelper.notNull(ref, "ref or type"); // try to let resolver see if it can resolve it, its not always possible - type = routeContext.getCamelContext().adapt(ModelCamelContext.class).resolveDataFormatDefinition(ref); + type = camelContext.adapt(ModelCamelContext.class).resolveDataFormatDefinition(ref); if (type != null) { - return type.getDataFormat(routeContext); + return type.getDataFormat(camelContext); } - DataFormat dataFormat = routeContext.getCamelContext().resolveDataFormat(ref); + DataFormat dataFormat = camelContext.resolveDataFormat(ref); if (dataFormat == null) { throw new IllegalArgumentException("Cannot find data format in registry with ref: " + ref); } return dataFormat; } else { - return type.getDataFormat(routeContext); + return type.getDataFormat(camelContext); } } - public DataFormat getDataFormat(RouteContext routeContext) { + public DataFormat getDataFormat(CamelContext camelContext) { if (dataFormat == null) { Runnable propertyPlaceholdersChangeReverter = ProcessorDefinitionHelper.createPropertyPlaceholdersChangeReverter(); // resolve properties before we create the data format try { - ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), this); + ProcessorDefinitionHelper.resolvePropertyPlaceholders(camelContext, this); } catch (Exception e) { throw new IllegalArgumentException("Error resolving property placeholders on data format: " + this, e); } try { - dataFormat = createDataFormat(routeContext); + dataFormat = createDataFormat(camelContext); if (dataFormat != null) { // is enabled by default so assume true if null final boolean contentTypeHeader = this.contentTypeHeader == null || this.contentTypeHeader; try { - setProperty(routeContext.getCamelContext(), dataFormat, "contentTypeHeader", contentTypeHeader); + setProperty(camelContext, dataFormat, "contentTypeHeader", contentTypeHeader); } catch (Exception e) { // ignore as this option is optional and not all data formats support this } // configure the rest of the options - configureDataFormat(dataFormat, routeContext.getCamelContext()); + configureDataFormat(dataFormat, camelContext); } else { throw new IllegalArgumentException( "Data format '" + (dataFormatName != null ? dataFormatName : "<null>") + "' could not be created. " @@ -131,10 +128,10 @@ public class DataFormatDefinition extends IdentifiedType implements OtherAttribu /** * Factory method to create the data format instance */ - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { // must use getDataFormatName() as we need special logic in json dataformat if (getDataFormatName() != null) { - return routeContext.getCamelContext().createDataFormat(getDataFormatName()); + return camelContext.createDataFormat(getDataFormatName()); } return null; } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java index f5dc02f..6fd3233 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java @@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlRootElement; import org.apache.camel.model.dataformat.ASN1DataFormat; import org.apache.camel.model.dataformat.AvroDataFormat; +import org.apache.camel.model.dataformat.BarcodeDataFormat; import org.apache.camel.model.dataformat.Base64DataFormat; import org.apache.camel.model.dataformat.BeanioDataFormat; import org.apache.camel.model.dataformat.BindyDataFormat; @@ -42,6 +43,8 @@ import org.apache.camel.model.dataformat.JaxbDataFormat; import org.apache.camel.model.dataformat.JibxDataFormat; import org.apache.camel.model.dataformat.JsonApiDataFormat; import org.apache.camel.model.dataformat.JsonDataFormat; +import org.apache.camel.model.dataformat.LZFDataFormat; +import org.apache.camel.model.dataformat.MimeMultipartDataFormat; import org.apache.camel.model.dataformat.PGPDataFormat; import org.apache.camel.model.dataformat.ProtobufDataFormat; import org.apache.camel.model.dataformat.RssDataFormat; @@ -74,6 +77,7 @@ public class MarshalDefinition extends NoOutputDefinition<MarshalDefinition> { @XmlElements({ @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class), @XmlElement(required = false, name = "avro", type = AvroDataFormat.class), + @XmlElement(required = false, name = "barcode", type = BarcodeDataFormat.class), @XmlElement(required = false, name = "base64", type = Base64DataFormat.class), @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class), @XmlElement(required = false, name = "bindy", type = BindyDataFormat.class), @@ -92,6 +96,8 @@ public class MarshalDefinition extends NoOutputDefinition<MarshalDefinition> { @XmlElement(required = false, name = "jibx", type = JibxDataFormat.class), @XmlElement(required = false, name = "json", type = JsonDataFormat.class), @XmlElement(required = false, name = "jsonApi", type = JsonApiDataFormat.class), + @XmlElement(required = false, name = "lzf", type = LZFDataFormat.class), + @XmlElement(required = false, name = "mimeMultipart", type = MimeMultipartDataFormat.class), @XmlElement(required = false, name = "protobuf", type = ProtobufDataFormat.class), @XmlElement(required = false, name = "rss", type = RssDataFormat.class), @XmlElement(required = false, name = "secureXML", type = XMLSecurityDataFormat.class), diff --git a/core/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java index 444870a..1d6117f 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java @@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlRootElement; import org.apache.camel.model.dataformat.ASN1DataFormat; import org.apache.camel.model.dataformat.AvroDataFormat; +import org.apache.camel.model.dataformat.BarcodeDataFormat; import org.apache.camel.model.dataformat.Base64DataFormat; import org.apache.camel.model.dataformat.BeanioDataFormat; import org.apache.camel.model.dataformat.BindyDataFormat; @@ -42,6 +43,8 @@ import org.apache.camel.model.dataformat.JaxbDataFormat; import org.apache.camel.model.dataformat.JibxDataFormat; import org.apache.camel.model.dataformat.JsonApiDataFormat; import org.apache.camel.model.dataformat.JsonDataFormat; +import org.apache.camel.model.dataformat.LZFDataFormat; +import org.apache.camel.model.dataformat.MimeMultipartDataFormat; import org.apache.camel.model.dataformat.PGPDataFormat; import org.apache.camel.model.dataformat.ProtobufDataFormat; import org.apache.camel.model.dataformat.RssDataFormat; @@ -74,6 +77,7 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition> @XmlElements({ @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class), @XmlElement(required = false, name = "avro", type = AvroDataFormat.class), + @XmlElement(required = false, name = "barcode", type = BarcodeDataFormat.class), @XmlElement(required = false, name = "base64", type = Base64DataFormat.class), @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class), @XmlElement(required = false, name = "bindy", type = BindyDataFormat.class), @@ -92,6 +96,8 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition> @XmlElement(required = false, name = "jibx", type = JibxDataFormat.class), @XmlElement(required = false, name = "json", type = JsonDataFormat.class), @XmlElement(required = false, name = "jsonApi", type = JsonApiDataFormat.class), + @XmlElement(required = false, name = "lzf", type = LZFDataFormat.class), + @XmlElement(required = false, name = "mimeMultipart", type = MimeMultipartDataFormat.class), @XmlElement(required = false, name = "protobuf", type = ProtobufDataFormat.class), @XmlElement(required = false, name = "rss", type = RssDataFormat.class), @XmlElement(required = false, name = "secureXML", type = XMLSecurityDataFormat.class), diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java index 3962f72..681b1ad 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java @@ -104,7 +104,8 @@ public class BindyDataFormat extends DataFormatDefinition { this.unwrapSingleInstance = unwrapSingleInstance; } - protected DataFormat createDataFormat(RouteContext routeContext) { + @Override + protected DataFormat createDataFormat(CamelContext camelContext) { if (classType == null && clazz == null) { throw new IllegalArgumentException("Either packages or classType must be specified"); } @@ -119,12 +120,12 @@ public class BindyDataFormat extends DataFormatDefinition { if (clazz == null && classType != null) { try { - clazz = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(classType); + clazz = camelContext.getClassResolver().resolveMandatoryClass(classType); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java index 6b43e49..85e56ef 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java @@ -87,15 +87,15 @@ public class BoonDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (unmarshalType == null && unmarshalTypeName != null) { try { - unmarshalType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshalTypeName); + unmarshalType = camelContext.getClassResolver().resolveMandatoryClass(unmarshalTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java index 1a143a2..e9a411e 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java @@ -63,21 +63,21 @@ public class CryptoDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { - DataFormat cryptoFormat = super.createDataFormat(routeContext); + protected DataFormat createDataFormat(CamelContext camelContext) { + DataFormat cryptoFormat = super.createDataFormat(camelContext); if (ObjectHelper.isNotEmpty(keyRef)) { - Key key = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), keyRef, Key.class); - setProperty(routeContext.getCamelContext(), cryptoFormat, "key", key); + Key key = CamelContextHelper.mandatoryLookup(camelContext, keyRef, Key.class); + setProperty(camelContext, cryptoFormat, "key", key); } if (ObjectHelper.isNotEmpty(algorithmParameterRef)) { - AlgorithmParameterSpec spec = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), + AlgorithmParameterSpec spec = CamelContextHelper.mandatoryLookup(camelContext, algorithmParameterRef, AlgorithmParameterSpec.class); - setProperty(routeContext.getCamelContext(), cryptoFormat, "AlgorithmParameterSpec", spec); + setProperty(camelContext, cryptoFormat, "AlgorithmParameterSpec", spec); } if (ObjectHelper.isNotEmpty(initVectorRef)) { - byte[] iv = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), initVectorRef, byte[].class); - setProperty(routeContext.getCamelContext(), cryptoFormat, "InitializationVector", iv); + byte[] iv = CamelContextHelper.mandatoryLookup(camelContext, initVectorRef, byte[].class); + setProperty(camelContext, cryptoFormat, "InitializationVector", iv); } return cryptoFormat; } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java index d6039c9..a321e3d 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java @@ -21,10 +21,10 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RouteContext; /** * To use a custom data format implementation that does not come out of the box from Apache Camel. @@ -44,8 +44,8 @@ public class CustomDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { - return DataFormatDefinition.getDataFormat(routeContext, null, ref); + protected DataFormat createDataFormat(CamelContext camelContext) { + return DataFormatDefinition.getDataFormat(camelContext, null, ref); } /** diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java index 7e20d56..6e1ddf5 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java @@ -151,12 +151,12 @@ public class FlatpackDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { - DataFormat flatpack = super.createDataFormat(routeContext); + protected DataFormat createDataFormat(CamelContext camelContext) { + DataFormat flatpack = super.createDataFormat(camelContext); if (ObjectHelper.isNotEmpty(parserFactoryRef)) { - Object parserFactory = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), parserFactoryRef); - setProperty(routeContext.getCamelContext(), flatpack, "parserFactory", parserFactory); + Object parserFactory = CamelContextHelper.mandatoryLookup(camelContext, parserFactoryRef); + setProperty(camelContext, flatpack, "parserFactory", parserFactory); } return flatpack; diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java index a8483f5..1f62737 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java @@ -18,6 +18,7 @@ package org.apache.camel.model.dataformat; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; @@ -35,7 +36,7 @@ public class GzipDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { return new org.apache.camel.impl.GzipDataFormat(); } } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java index e48a99f..7442a91 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java @@ -276,24 +276,24 @@ public class JacksonXMLDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (unmarshalType == null && unmarshalTypeName != null) { try { - unmarshalType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshalTypeName); + unmarshalType = camelContext.getClassResolver().resolveMandatoryClass(unmarshalTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } if (collectionType == null && collectionTypeName != null) { try { - collectionType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(collectionTypeName); + collectionType = camelContext.getClassResolver().resolveMandatoryClass(collectionTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java index 6e97dbb..0bc157c 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java @@ -86,16 +86,16 @@ public class JibxDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (unmarshallClass == null && unmarshallTypeName != null) { try { - unmarshallClass = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshallTypeName); + unmarshallClass = camelContext.getClassResolver().resolveMandatoryClass(unmarshallTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java index f8ebd20..744c51e 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java @@ -369,35 +369,35 @@ public class JsonDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (library == JsonLibrary.XStream) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-xstream"); + setProperty(camelContext, this, "dataFormatName", "json-xstream"); } else if (library == JsonLibrary.Jackson) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-jackson"); + setProperty(camelContext, this, "dataFormatName", "json-jackson"); } else if (library == JsonLibrary.Gson) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-gson"); + setProperty(camelContext, this, "dataFormatName", "json-gson"); } else if (library == JsonLibrary.Fastjson) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-fastjson"); + setProperty(camelContext, this, "dataFormatName", "json-fastjson"); } else { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-johnzon"); + setProperty(camelContext, this, "dataFormatName", "json-johnzon"); } if (unmarshalType == null && unmarshalTypeName != null) { try { - unmarshalType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshalTypeName); + unmarshalType = camelContext.getClassResolver().resolveMandatoryClass(unmarshalTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } if (collectionType == null && collectionTypeName != null) { try { - collectionType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(collectionTypeName); + collectionType = camelContext.getClassResolver().resolveMandatoryClass(collectionTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java index fa33b95..5eeb40d 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java @@ -18,6 +18,7 @@ package org.apache.camel.model.dataformat; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; @@ -36,7 +37,7 @@ public class SerializationDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { return new org.apache.camel.impl.SerializationDataFormat(); } } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java index ad28a1f..ce34d48 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java @@ -21,6 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; @@ -41,7 +42,7 @@ public class StringDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { return new org.apache.camel.impl.StringDataFormat(charset); } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java index 08991ec..b165a00 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java @@ -96,16 +96,16 @@ public class TidyMarkupDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (dataObjectType == null && dataObjectTypeName != null) { try { - dataObjectType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(dataObjectTypeName); + dataObjectType = camelContext.getClassResolver().resolveMandatoryClass(dataObjectTypeName); } catch (ClassNotFoundException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java index 47bae70..509bc06 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java @@ -219,14 +219,14 @@ public class XStreamDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if ("json".equals(this.driver)) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "json-xstream"); + setProperty(camelContext, this, "dataFormatName", "json-xstream"); } - DataFormat answer = super.createDataFormat(routeContext); + DataFormat answer = super.createDataFormat(camelContext); // need to lookup the reference for the xstreamDriver if (ObjectHelper.isNotEmpty(driverRef)) { - setProperty(routeContext.getCamelContext(), answer, "xstreamDriver", CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), driverRef)); + setProperty(camelContext, answer, "xstreamDriver", CamelContextHelper.mandatoryLookup(camelContext, driverRef)); } return answer; } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java index 88bebec..750bbaa 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java @@ -218,12 +218,12 @@ public class YAMLDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (library == YAMLLibrary.SnakeYAML) { - setProperty(routeContext.getCamelContext(), this, "dataFormatName", "yaml-snakeyaml"); + setProperty(camelContext, this, "dataFormatName", "yaml-snakeyaml"); } - return super.createDataFormat(routeContext); + return super.createDataFormat(camelContext); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java index ece7655..9ffe245 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java @@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Metadata; @@ -47,7 +48,7 @@ public class ZipDataFormat extends DataFormatDefinition { } @Override - protected DataFormat createDataFormat(RouteContext routeContext) { + protected DataFormat createDataFormat(CamelContext camelContext) { if (compressionLevel == null) { return new org.apache.camel.impl.ZipDataFormat(Deflater.DEFAULT_COMPRESSION); } else { diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java index 0699d3f..e749dcb 100644 --- a/core/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java +++ b/core/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java @@ -32,7 +32,7 @@ class MarshalReifier extends ProcessorReifier<MarshalDefinition> { @Override public Processor createProcessor(RouteContext routeContext) { - DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext, definition.getDataFormatType(), null); + DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext.getCamelContext(), definition.getDataFormatType(), null); return new MarshalProcessor(dataFormat); } diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java index 62a6602..dca3dbe 100644 --- a/core/camel-core/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java +++ b/core/camel-core/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java @@ -32,7 +32,7 @@ class UnmarshalReifier extends ProcessorReifier<UnmarshalDefinition> { @Override public Processor createProcessor(RouteContext routeContext) { - DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext, definition.getDataFormatType(), null); + DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext.getCamelContext(), definition.getDataFormatType(), null); return new UnmarshalProcessor(dataFormat); } } diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java index e79b19b..adc3417 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java @@ -23,6 +23,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import org.apache.camel.CamelContext; import org.apache.camel.ContextTestSupport; import org.apache.camel.Converter; import org.apache.camel.Exchange; @@ -33,7 +34,6 @@ import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeAware; -import org.apache.camel.spi.RouteContext; import org.junit.Test; public class TransformerContractTest extends ContextTestSupport { @@ -142,12 +142,12 @@ public class TransformerContractTest extends ContextTestSupport { } public static class MyDataFormatDefinition extends DataFormatDefinition { - public static DataFormat getDataFormat(RouteContext routeContext, DataFormatDefinition type, String ref) { - return new MyDataFormatDefinition().createDataFormat(); - } - public DataFormat getDataFormat(RouteContext routeContext) { + + @Override + public DataFormat getDataFormat(CamelContext camelContext) { return createDataFormat(); } + private DataFormat createDataFormat() { return new DataFormat() { @Override @@ -157,6 +157,7 @@ public class TransformerContractTest extends ContextTestSupport { pw.print("<fooResponse/>"); pw.close(); } + @Override public Object unmarshal(Exchange exchange, InputStream stream) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(stream)); @@ -168,5 +169,6 @@ public class TransformerContractTest extends ContextTestSupport { } public static class A { } + public static class B { } } diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java index 2ca4d3d..1a2148b 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java @@ -23,6 +23,7 @@ import java.io.OutputStream; import java.util.Map; import org.apache.camel.AsyncCallback; +import org.apache.camel.CamelContext; import org.apache.camel.Consumer; import org.apache.camel.ContextTestSupport; import org.apache.camel.Converter; @@ -39,7 +40,6 @@ import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeAware; -import org.apache.camel.spi.RouteContext; import org.apache.camel.spi.Transformer; import org.apache.camel.support.DefaultAsyncProducer; import org.apache.camel.support.DefaultComponent; @@ -249,12 +249,12 @@ public class TransformerRouteTest extends ContextTestSupport { } public static class MyJsonDataFormatDefinition extends DataFormatDefinition { - public static DataFormat getDataFormat(RouteContext routeContext, DataFormatDefinition type, String ref) { - return new MyJsonDataFormatDefinition().createDataFormat(); - } - public DataFormat getDataFormat(RouteContext routeContext) { + + @Override + public DataFormat getDataFormat(CamelContext camelContext) { return createDataFormat(); } + private DataFormat createDataFormat() { return new DataFormat() { @Override @@ -263,6 +263,7 @@ public class TransformerRouteTest extends ContextTestSupport { LOG.info("DataFormat: XOrderResponse -> JSON"); stream.write("{name:XOrderResponse}".getBytes()); } + @Override public Object unmarshal(Exchange exchange, InputStream stream) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); @@ -285,7 +286,6 @@ public class TransformerRouteTest extends ContextTestSupport { protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { return new MyXmlEndpoint(); } - } public static class MyXmlEndpoint extends DefaultEndpoint {