This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 1e25f3a5b183eb64962b791e0336c99b8fc24bfd Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Apr 10 10:59:46 2021 +0200 CAMEL-16458: Enricher EIP - Use SendDynamicProcessor to call endpoint instead of own code. --- .../org/apache/camel/catalog/models/enrich.json | 1 + .../resources/org/apache/camel/model/enrich.json | 1 + .../org/apache/camel/model/EnrichDefinition.java | 31 ++++++++++++++++++++++ .../apache/camel/model/ToDynamicDefinition.java | 11 +------- .../java/org/apache/camel/processor/Enricher.java | 10 +++++++ .../org/apache/camel/reifier/EnrichReifier.java | 3 +++ .../java/org/apache/camel/xml/in/ModelParser.java | 1 + .../dsl/yaml/deserializers/ModelDeserializers.java | 6 +++++ .../src/generated/resources/camel-yaml-dsl.json | 3 +++ 9 files changed, 57 insertions(+), 10 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json index 33c2950..c92a660c 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json @@ -19,6 +19,7 @@ "shareUnitOfWork": { "kind": "attribute", "displayName": "Share Unit Of Work", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the org.apache.camel.spi.UnitOfWork with the parent and the resource exchange. Enrich will by default not share unit of work between the parent exchange and the resource exchange. This means the resource exchange has its own individua [...] "cacheSize": { "kind": "attribute", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producer when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to [...] "ignoreInvalidEndpoint": { "kind": "attribute", "displayName": "Ignore Invalid Endpoint", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Ignore the invalidate endpoint exception when try to create a producer with that endpoint" }, + "allowOptimisedComponents": { "kind": "attribute", "displayName": "Allow Optimised Components", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware ." }, "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" }, "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" } } diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/enrich.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/enrich.json index 33c2950..c92a660c 100644 --- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/enrich.json +++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/enrich.json @@ -19,6 +19,7 @@ "shareUnitOfWork": { "kind": "attribute", "displayName": "Share Unit Of Work", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the org.apache.camel.spi.UnitOfWork with the parent and the resource exchange. Enrich will by default not share unit of work between the parent exchange and the resource exchange. This means the resource exchange has its own individua [...] "cacheSize": { "kind": "attribute", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producer when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to [...] "ignoreInvalidEndpoint": { "kind": "attribute", "displayName": "Ignore Invalid Endpoint", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Ignore the invalidate endpoint exception when try to create a producer with that endpoint" }, + "allowOptimisedComponents": { "kind": "attribute", "displayName": "Allow Optimised Components", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware ." }, "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" }, "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" } } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/EnrichDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/EnrichDefinition.java index 670519f..94fd2da 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/EnrichDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/EnrichDefinition.java @@ -57,6 +57,9 @@ public class EnrichDefinition extends ExpressionNode { @XmlAttribute @Metadata(javaType = "java.lang.Boolean") private String ignoreInvalidEndpoint; + @XmlAttribute + @Metadata(label = "advanced", defaultValue = "true", javaType = "java.lang.Boolean") + private String allowOptimisedComponents; public EnrichDefinition() { this(null); @@ -208,6 +211,25 @@ public class EnrichDefinition extends ExpressionNode { return this; } + /** + * Whether to allow components to optimise enricher if they are {@link org.apache.camel.spi.SendDynamicAware}. + * + * @return the builder + */ + public EnrichDefinition allowOptimisedComponents(boolean allowOptimisedComponents) { + return allowOptimisedComponents(Boolean.toString(allowOptimisedComponents)); + } + + /** + * Whether to allow components to optimise enricher if they are {@link org.apache.camel.spi.SendDynamicAware}. + * + * @return the builder + */ + public EnrichDefinition allowOptimisedComponents(String allowOptimisedComponents) { + setAllowOptimisedComponents(allowOptimisedComponents); + return this; + } + // Properties // ------------------------------------------------------------------------- @@ -283,4 +305,13 @@ public class EnrichDefinition extends ExpressionNode { public void setIgnoreInvalidEndpoint(String ignoreInvalidEndpoint) { this.ignoreInvalidEndpoint = ignoreInvalidEndpoint; } + + public String getAllowOptimisedComponents() { + return allowOptimisedComponents; + } + + public void setAllowOptimisedComponents(String allowOptimisedComponents) { + this.allowOptimisedComponents = allowOptimisedComponents; + } + } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/ToDynamicDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/ToDynamicDefinition.java index b66de78..86e25ae 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/ToDynamicDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/ToDynamicDefinition.java @@ -56,7 +56,7 @@ public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition> @Metadata(javaType = "java.lang.Boolean") private String ignoreInvalidEndpoint; @XmlAttribute - @Metadata(defaultValue = "true", javaType = "java.lang.Boolean") + @Metadata(label = "advanced", defaultValue = "true", javaType = "java.lang.Boolean") private String allowOptimisedComponents; @XmlAttribute @Metadata(label = "advanced", defaultValue = "true", javaType = "java.lang.Boolean") @@ -192,15 +192,6 @@ public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition> * * @return the builder */ - public ToDynamicDefinition allowOptimisedComponents() { - return allowOptimisedComponents(true); - } - - /** - * Whether to allow components to optimise toD if they are {@link org.apache.camel.spi.SendDynamicAware}. - * - * @return the builder - */ public ToDynamicDefinition allowOptimisedComponents(boolean allowOptimisedComponents) { return allowOptimisedComponents(Boolean.toString(allowOptimisedComponents)); } diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java index c465c0c..6a0c41f 100644 --- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java +++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java @@ -64,6 +64,7 @@ public class Enricher extends AsyncProcessorSupport implements IdAware, RouteIdA private boolean shareUnitOfWork; private int cacheSize; private boolean ignoreInvalidEndpoint; + protected boolean allowOptimisedComponents = true; private ProcessorExchangeFactory processorExchangeFactory; private SendDynamicProcessor sendDynamicProcessor; @@ -149,6 +150,14 @@ public class Enricher extends AsyncProcessorSupport implements IdAware, RouteIdA this.ignoreInvalidEndpoint = ignoreInvalidEndpoint; } + public boolean isAllowOptimisedComponents() { + return allowOptimisedComponents; + } + + public void setAllowOptimisedComponents(boolean allowOptimisedComponents) { + this.allowOptimisedComponents = allowOptimisedComponents; + } + @Override public boolean process(final Exchange exchange, final AsyncCallback callback) { final Exchange resourceExchange = createResourceExchange(exchange, ExchangePattern.InOut); @@ -232,6 +241,7 @@ public class Enricher extends AsyncProcessorSupport implements IdAware, RouteIdA this.sendDynamicProcessor.setCamelContext(camelContext); this.sendDynamicProcessor.setCacheSize(cacheSize); this.sendDynamicProcessor.setIgnoreInvalidEndpoint(ignoreInvalidEndpoint); + this.sendDynamicProcessor.setAllowOptimisedComponents(allowOptimisedComponents); // create a per processor exchange factory this.processorExchangeFactory = getCamelContext().adapt(ExtendedCamelContext.class) diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/EnrichReifier.java index ffe0387..f67d4b4 100644 --- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/EnrichReifier.java +++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/EnrichReifier.java @@ -52,6 +52,9 @@ public class EnrichReifier extends ExpressionReifier<EnrichDefinition> { if (definition.getAggregateOnException() != null) { enricher.setAggregateOnException(parseBoolean(definition.getAggregateOnException(), false)); } + if (definition.getAllowOptimisedComponents() != null) { + enricher.setAllowOptimisedComponents(parseBoolean(definition.getAllowOptimisedComponents(), true)); + } return enricher; } diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java index d5e9be0..c8c9b03 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java @@ -351,6 +351,7 @@ public class ModelParser extends BaseParser { return doParse(new EnrichDefinition(), (def, key, val) -> { switch (key) { case "aggregateOnException": def.setAggregateOnException(val); break; + case "allowOptimisedComponents": def.setAllowOptimisedComponents(val); break; case "cacheSize": def.setCacheSize(val); break; case "ignoreInvalidEndpoint": def.setIgnoreInvalidEndpoint(val); break; case "shareUnitOfWork": def.setShareUnitOfWork(val); break; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java index 7080892..4826e21 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java @@ -3978,6 +3978,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "strategy-method-allow-null", type = "string"), @YamlProperty(name = "strategy-method-name", type = "string"), @YamlProperty(name = "strategy-ref", type = "string"), + @YamlProperty(name = "allow-optimised-components", type = "boolean"), @YamlProperty(name = "cache-size", type = "number"), @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"), @YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"), @@ -4020,6 +4021,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport { target.setAggregationStrategyRef(val); break; } + case "allow-optimised-components": { + String val = asText(node); + target.setAllowOptimisedComponents(val); + break; + } case "cache-size": { String val = asText(node); target.setCacheSize(val); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json index 5fe6593..821b910 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json @@ -562,6 +562,9 @@ "aggregate-on-exception" : { "type" : "boolean" }, + "allow-optimised-components" : { + "type" : "boolean" + }, "cache-size" : { "type" : "number" },