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"
           },

Reply via email to