You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/10/30 09:14:22 UTC
(camel) branch main updated: CAMEL-21398: Smooks autowire SmooksFactory.
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 <cl...@gmail.com>
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: <code>org.smooks.SmooksFactory</code>
+ * 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;
}
}