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 2b8b47d70c7 CAMEL-21398: Smooks autowire SmooksFactory.
2b8b47d70c7 is described below

commit 2b8b47d70c7d0bf396a2a05f77435b602d44865c
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Oct 30 10:11:17 2024 +0100

    CAMEL-21398: Smooks autowire SmooksFactory.
---
 .../org/apache/camel/catalog/components/smooks.json     |  3 ++-
 .../component/smooks/SmooksComponentConfigurer.java     | 11 +++++++++++
 .../org/apache/camel/component/smooks/smooks.json       |  3 ++-
 .../apache/camel/component/smooks/SmooksComponent.java  | 17 +++++++++++++++++
 .../apache/camel/component/smooks/SmooksProcessor.java  | 11 +++++++++--
 .../camel/dataformat/smooks/SmooksDataFormat.java       |  5 +++--
 .../component/dsl/SmooksComponentBuilderFactory.java    | 17 +++++++++++++++++
 7 files changed, 61 insertions(+), 6 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smooks.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smooks.json
index 29535b928ee..3eeb420617c 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smooks.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smooks.json
@@ -25,7 +25,8 @@
   },
   "componentProperties": {
     "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "smooksFactory": { "index": 2, "kind": "property", "displayName": "Smooks 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.smooks.SmooksFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "To use a custom factory for 
creating Smooks." }
   },
   "properties": {
     "smooksConfig": { "index": 0, "kind": "path", "displayName": "Smooks 
Config", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "supportFileReference": true, 
"description": "Path to the Smooks configuration file" },
diff --git 
a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/SmooksComponentConfigurer.java
 
b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/SmooksComponentConfigurer.java
index 5ab86eb2b31..a84d7fb1e0b 100644
--- 
a/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/SmooksComponentConfigurer.java
+++ 
b/components/camel-smooks/src/generated/java/org/apache/camel/component/smooks/SmooksComponentConfigurer.java
@@ -27,10 +27,17 @@ public class SmooksComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "smooksfactory":
+        case "smooksFactory": target.setSmooksFactory(property(camelContext, 
org.smooks.SmooksFactory.class, value)); return true;
         default: return false;
         }
     }
 
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"smooksFactory"};
+    }
+
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
@@ -38,6 +45,8 @@ public class SmooksComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "autowiredEnabled": return boolean.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
+        case "smooksfactory":
+        case "smooksFactory": return org.smooks.SmooksFactory.class;
         default: return null;
         }
     }
@@ -50,6 +59,8 @@ public class SmooksComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "autowiredEnabled": return target.isAutowiredEnabled();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "smooksfactory":
+        case "smooksFactory": return target.getSmooksFactory();
         default: return null;
         }
     }
diff --git 
a/components/camel-smooks/src/generated/resources/META-INF/org/apache/camel/component/smooks/smooks.json
 
b/components/camel-smooks/src/generated/resources/META-INF/org/apache/camel/component/smooks/smooks.json
index 29535b928ee..3eeb420617c 100644
--- 
a/components/camel-smooks/src/generated/resources/META-INF/org/apache/camel/component/smooks/smooks.json
+++ 
b/components/camel-smooks/src/generated/resources/META-INF/org/apache/camel/component/smooks/smooks.json
@@ -25,7 +25,8 @@
   },
   "componentProperties": {
     "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "smooksFactory": { "index": 2, "kind": "property", "displayName": "Smooks 
Factory", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.smooks.SmooksFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "To use a custom factory for 
creating Smooks." }
   },
   "properties": {
     "smooksConfig": { "index": 0, "kind": "path", "displayName": "Smooks 
Config", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "supportFileReference": true, 
"description": "Path to the Smooks configuration file" },
diff --git 
a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksComponent.java
 
b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksComponent.java
index 1de22821c99..f7c9697b846 100644
--- 
a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksComponent.java
+++ 
b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksComponent.java
@@ -19,12 +19,17 @@ package org.apache.camel.component.smooks;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
+import org.smooks.SmooksFactory;
 
 @Component("smooks")
 public class SmooksComponent extends DefaultComponent {
 
+    @Metadata(label = "advanced", autowired = true)
+    private SmooksFactory smooksFactory;
+
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         SmooksProcessor smooksProcessor = new SmooksProcessor(remaining, 
getCamelContext());
         configureSmooksProcessor(smooksProcessor, uri, remaining, parameters);
@@ -39,7 +44,19 @@ public class SmooksComponent extends DefaultComponent {
             SmooksProcessor smooksProcessor, String uri, String remaining,
             Map<String, Object> parameters)
             throws Exception {
+        smooksProcessor.setSmooksFactory(smooksFactory);
         setProperties(smooksProcessor, parameters);
+
     }
 
+    public SmooksFactory getSmooksFactory() {
+        return smooksFactory;
+    }
+
+    /**
+     * To use a custom factory for creating Smooks.
+     */
+    public void setSmooksFactory(SmooksFactory smooksFactory) {
+        this.smooksFactory = smooksFactory;
+    }
 }
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 36c298b9325..1a318ac6f17 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
@@ -78,6 +78,7 @@ public class SmooksProcessor extends ServiceSupport 
implements Processor, CamelC
     private static final TypedKey<Exchange> EXCHANGE_TYPED_KEY = TypedKey.of();
     private static final Logger LOG = 
LoggerFactory.getLogger(SmooksProcessor.class);
 
+    private SmooksFactory smooksFactory;
     private Smooks smooks;
     private String configUri;
     private String reportPath;
@@ -234,9 +235,15 @@ public class SmooksProcessor extends ServiceSupport 
implements Processor, CamelC
         this.reportPath = reportPath;
     }
 
+    public SmooksFactory getSmooksFactory() {
+        return smooksFactory;
+    }
+
+    public void setSmooksFactory(SmooksFactory smooksFactory) {
+        this.smooksFactory = smooksFactory;
+    }
+
     private Smooks createSmooks() {
-        final SmooksFactory smooksFactory
-                = (SmooksFactory) 
camelContext.getRegistry().lookupByName(SmooksFactory.class.getName());
         return smooksFactory != null ? smooksFactory.createInstance() : new 
Smooks();
     }
 
diff --git 
a/components/camel-smooks/src/main/java/org/apache/camel/dataformat/smooks/SmooksDataFormat.java
 
b/components/camel-smooks/src/main/java/org/apache/camel/dataformat/smooks/SmooksDataFormat.java
index e3ff53e1235..fe9728725b5 100644
--- 
a/components/camel-smooks/src/main/java/org/apache/camel/dataformat/smooks/SmooksDataFormat.java
+++ 
b/components/camel-smooks/src/main/java/org/apache/camel/dataformat/smooks/SmooksDataFormat.java
@@ -31,6 +31,7 @@ import org.apache.camel.component.smooks.SmooksComponent;
 import org.apache.camel.component.smooks.SmooksProcessor;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.annotations.Dataformat;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.processor.MarshalProcessor;
 import org.apache.camel.support.processor.UnmarshalProcessor;
 import org.apache.camel.support.service.ServiceSupport;
@@ -58,6 +59,7 @@ import org.smooks.io.source.StreamSource;
  */
 @Dataformat("smooks")
 public class SmooksDataFormat extends ServiceSupport implements DataFormat, 
CamelContextAware {
+
     private Smooks smooks;
     private CamelContext camelContext;
     private String smooksConfig;
@@ -123,8 +125,7 @@ public class SmooksDataFormat extends ServiceSupport 
implements DataFormat, Came
 
     @Override
     public void doStart() {
-        final SmooksFactory smooksFactory
-                = (SmooksFactory) 
camelContext.getRegistry().lookupByName(SmooksFactory.class.getName());
+        final SmooksFactory smooksFactory = 
CamelContextHelper.findSingleByType(camelContext, SmooksFactory.class);
         try {
             if (smooksFactory != null) {
                 smooks = smooksFactory.createInstance(smooksConfig);
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmooksComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmooksComponentBuilderFactory.java
index 6de19d7fcf4..0f8b56b98e2 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmooksComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmooksComponentBuilderFactory.java
@@ -98,6 +98,22 @@ public interface SmooksComponentBuilderFactory {
             doSetProperty("autowiredEnabled", autowiredEnabled);
             return this;
         }
+    
+        /**
+         * To use a custom factory for creating Smooks.
+         * 
+         * The option is a: &lt;code&gt;org.smooks.SmooksFactory&lt;/code&gt;
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param smooksFactory the value to set
+         * @return the dsl builder
+         */
+        default SmooksComponentBuilder smooksFactory(org.smooks.SmooksFactory 
smooksFactory) {
+            doSetProperty("smooksFactory", smooksFactory);
+            return this;
+        }
     }
 
     class SmooksComponentBuilderImpl
@@ -115,6 +131,7 @@ public interface SmooksComponentBuilderFactory {
             switch (name) {
             case "lazyStartProducer": ((SmooksComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((SmooksComponent) 
component).setAutowiredEnabled((boolean) value); return true;
+            case "smooksFactory": ((SmooksComponent) 
component).setSmooksFactory((org.smooks.SmooksFactory) value); return true;
             default: return false;
             }
         }

Reply via email to