You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2025/07/23 13:46:39 UTC

(camel) branch main updated: CAMEL-17339 - Avoid List as configuration parameter types in Endpoint configurations - Camel Web3j (#18701)

This is an automated email from the ASF dual-hosted git repository.

acosentino 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 af25bde4a34 CAMEL-17339 - Avoid List<String> as configuration parameter types in Endpoint configurations - Camel Web3j (#18701)
af25bde4a34 is described below

commit af25bde4a348d0f1bb3d1da6d90b71c0d8e3adad
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Jul 23 15:46:31 2025 +0200

    CAMEL-17339 - Avoid List<String> as configuration parameter types in Endpoint configurations - Camel Web3j (#18701)
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../org/apache/camel/catalog/components/web3j.json |   8 +-
 .../component/web3j/Web3jComponentConfigurer.java  |  18 +--
 .../component/web3j/Web3jEndpointConfigurer.java   |  18 +--
 .../org/apache/camel/component/web3j/web3j.json    |   8 +-
 .../camel/component/web3j/Web3jConfiguration.java  |  52 ++++++---
 .../camel/component/web3j/Web3jConsumer.java       |   4 +-
 .../camel/component/web3j/Web3jProducer.java       |   2 +-
 .../ROOT/pages/camel-4x-upgrade-guide-4_14.adoc    |   4 +
 .../dsl/Web3jComponentBuilderFactory.java          |  19 ++--
 .../endpoint/dsl/Web3jEndpointBuilderFactory.java  | 123 +++------------------
 10 files changed, 82 insertions(+), 174 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/web3j.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/web3j.json
index 079a6e6c43b..7e87d745661 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/web3j.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/web3j.json
@@ -24,13 +24,13 @@
     "remote": true
   },
   "componentProperties": {
-    "addresses": { "index": 0, "kind": "property", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a list of addresses." },
+    "addresses": { "index": 0, "kind": "property", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a comma separated list of addresses." },
     "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.web3j.Web3jConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Default configuration" },
     "fromAddress": { "index": 2, "kind": "property", "displayName": "From Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is send from" },
     "fromBlock": { "index": 3, "kind": "property", "displayName": "From Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for  [...]
     "fullTransactionObjects": { "index": 4, "kind": "property", "displayName": "Full Transaction Objects", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true it returns the full transaction objects, if false only the hashes [...]
     "gasLimit": { "index": 5, "kind": "property", "displayName": "Gas Limit", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.math.BigInteger", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The maximum gas allowed in this block." },
-    "privateFor": { "index": 6, "kind": "property", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A transaction privateFor nodes with public keys in a Quorum network" },
+    "privateFor": { "index": 6, "kind": "property", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A comma separated transaction privateFor nodes with public keys in a Quorum network" },
     "quorumAPI": { "index": 7, "kind": "property", "displayName": "Quorum API", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true, this will support Quorum API." },
     "toAddress": { "index": 8, "kind": "property", "displayName": "To Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is directed to." },
     "toBlock": { "index": 9, "kind": "property", "displayName": "To Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for not  [...]
@@ -105,12 +105,12 @@
   },
   "properties": {
     "nodeAddress": { "index": 0, "kind": "path", "displayName": "Node Address", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the node address used to communicate" },
-    "addresses": { "index": 1, "kind": "parameter", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a list of addresses." },
+    "addresses": { "index": 1, "kind": "parameter", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a comma separated list of addresses." },
     "fromAddress": { "index": 2, "kind": "parameter", "displayName": "From Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is send from" },
     "fromBlock": { "index": 3, "kind": "parameter", "displayName": "From Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for [...]
     "fullTransactionObjects": { "index": 4, "kind": "parameter", "displayName": "Full Transaction Objects", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true it returns the full transaction objects, if false only the hashe [...]
     "gasLimit": { "index": 5, "kind": "parameter", "displayName": "Gas Limit", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.math.BigInteger", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The maximum gas allowed in this block." },
-    "privateFor": { "index": 6, "kind": "parameter", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A transaction privateFor nodes with public keys in a Quorum network" },
+    "privateFor": { "index": 6, "kind": "parameter", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A comma separated transaction privateFor nodes with public keys in a Quorum network" },
     "quorumAPI": { "index": 7, "kind": "parameter", "displayName": "Quorum API", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true, this will support Quorum API." },
     "toAddress": { "index": 8, "kind": "parameter", "displayName": "To Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is directed to." },
     "toBlock": { "index": 9, "kind": "parameter", "displayName": "To Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for not [...]
diff --git a/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jComponentConfigurer.java b/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jComponentConfigurer.java
index bf0dd5c210c..40eb94e6105 100644
--- a/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jComponentConfigurer.java
+++ b/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jComponentConfigurer.java
@@ -31,7 +31,7 @@ public class Web3jComponentConfigurer extends PropertyConfigurerSupport implemen
         Web3jComponent target = (Web3jComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "address": getOrCreateConfiguration(target).setAddress(property(camelContext, java.lang.String.class, value)); return true;
-        case "addresses": getOrCreateConfiguration(target).setAddresses(property(camelContext, java.util.List.class, value)); return true;
+        case "addresses": getOrCreateConfiguration(target).setAddresses(property(camelContext, java.lang.String.class, value)); return true;
         case "atblock":
         case "atBlock": getOrCreateConfiguration(target).setAtBlock(property(camelContext, java.lang.String.class, value)); return true;
         case "autowiredenabled":
@@ -73,7 +73,7 @@ public class Web3jComponentConfigurer extends PropertyConfigurerSupport implemen
         case "position": getOrCreateConfiguration(target).setPosition(property(camelContext, java.math.BigInteger.class, value)); return true;
         case "priority": getOrCreateConfiguration(target).setPriority(property(camelContext, java.math.BigInteger.class, value)); return true;
         case "privatefor":
-        case "privateFor": getOrCreateConfiguration(target).setPrivateFor(property(camelContext, java.util.List.class, value)); return true;
+        case "privateFor": getOrCreateConfiguration(target).setPrivateFor(property(camelContext, java.lang.String.class, value)); return true;
         case "quorumapi":
         case "quorumAPI": getOrCreateConfiguration(target).setQuorumAPI(property(camelContext, boolean.class, value)); return true;
         case "sha3hashofdatatosign":
@@ -100,7 +100,7 @@ public class Web3jComponentConfigurer extends PropertyConfigurerSupport implemen
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "address": return java.lang.String.class;
-        case "addresses": return java.util.List.class;
+        case "addresses": return java.lang.String.class;
         case "atblock":
         case "atBlock": return java.lang.String.class;
         case "autowiredenabled":
@@ -142,7 +142,7 @@ public class Web3jComponentConfigurer extends PropertyConfigurerSupport implemen
         case "position": return java.math.BigInteger.class;
         case "priority": return java.math.BigInteger.class;
         case "privatefor":
-        case "privateFor": return java.util.List.class;
+        case "privateFor": return java.lang.String.class;
         case "quorumapi":
         case "quorumAPI": return boolean.class;
         case "sha3hashofdatatosign":
@@ -234,15 +234,5 @@ public class Web3jComponentConfigurer extends PropertyConfigurerSupport implemen
         default: return null;
         }
     }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "addresses": return java.lang.String.class;
-        case "privatefor":
-        case "privateFor": return java.lang.String.class;
-        default: return null;
-        }
-    }
 }
 
diff --git a/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jEndpointConfigurer.java b/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jEndpointConfigurer.java
index 05e645e3e02..29cf7f10a3e 100644
--- a/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jEndpointConfigurer.java
+++ b/components/camel-web3j/src/generated/java/org/apache/camel/component/web3j/Web3jEndpointConfigurer.java
@@ -24,7 +24,7 @@ public class Web3jEndpointConfigurer extends PropertyConfigurerSupport implement
         Web3jEndpoint target = (Web3jEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "address": target.getConfiguration().setAddress(property(camelContext, java.lang.String.class, value)); return true;
-        case "addresses": target.getConfiguration().setAddresses(property(camelContext, java.util.List.class, value)); return true;
+        case "addresses": target.getConfiguration().setAddresses(property(camelContext, java.lang.String.class, value)); return true;
         case "atblock":
         case "atBlock": target.getConfiguration().setAtBlock(property(camelContext, java.lang.String.class, value)); return true;
         case "blockhash":
@@ -67,7 +67,7 @@ public class Web3jEndpointConfigurer extends PropertyConfigurerSupport implement
         case "position": target.getConfiguration().setPosition(property(camelContext, java.math.BigInteger.class, value)); return true;
         case "priority": target.getConfiguration().setPriority(property(camelContext, java.math.BigInteger.class, value)); return true;
         case "privatefor":
-        case "privateFor": target.getConfiguration().setPrivateFor(property(camelContext, java.util.List.class, value)); return true;
+        case "privateFor": target.getConfiguration().setPrivateFor(property(camelContext, java.lang.String.class, value)); return true;
         case "quorumapi":
         case "quorumAPI": target.getConfiguration().setQuorumAPI(property(camelContext, boolean.class, value)); return true;
         case "sha3hashofdatatosign":
@@ -94,7 +94,7 @@ public class Web3jEndpointConfigurer extends PropertyConfigurerSupport implement
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "address": return java.lang.String.class;
-        case "addresses": return java.util.List.class;
+        case "addresses": return java.lang.String.class;
         case "atblock":
         case "atBlock": return java.lang.String.class;
         case "blockhash":
@@ -137,7 +137,7 @@ public class Web3jEndpointConfigurer extends PropertyConfigurerSupport implement
         case "position": return java.math.BigInteger.class;
         case "priority": return java.math.BigInteger.class;
         case "privatefor":
-        case "privateFor": return java.util.List.class;
+        case "privateFor": return java.lang.String.class;
         case "quorumapi":
         case "quorumAPI": return boolean.class;
         case "sha3hashofdatatosign":
@@ -230,15 +230,5 @@ public class Web3jEndpointConfigurer extends PropertyConfigurerSupport implement
         default: return null;
         }
     }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "addresses": return java.lang.String.class;
-        case "privatefor":
-        case "privateFor": return java.lang.String.class;
-        default: return null;
-        }
-    }
 }
 
diff --git a/components/camel-web3j/src/generated/resources/META-INF/org/apache/camel/component/web3j/web3j.json b/components/camel-web3j/src/generated/resources/META-INF/org/apache/camel/component/web3j/web3j.json
index 079a6e6c43b..7e87d745661 100644
--- a/components/camel-web3j/src/generated/resources/META-INF/org/apache/camel/component/web3j/web3j.json
+++ b/components/camel-web3j/src/generated/resources/META-INF/org/apache/camel/component/web3j/web3j.json
@@ -24,13 +24,13 @@
     "remote": true
   },
   "componentProperties": {
-    "addresses": { "index": 0, "kind": "property", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a list of addresses." },
+    "addresses": { "index": 0, "kind": "property", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a comma separated list of addresses." },
     "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.web3j.Web3jConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Default configuration" },
     "fromAddress": { "index": 2, "kind": "property", "displayName": "From Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is send from" },
     "fromBlock": { "index": 3, "kind": "property", "displayName": "From Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for  [...]
     "fullTransactionObjects": { "index": 4, "kind": "property", "displayName": "Full Transaction Objects", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true it returns the full transaction objects, if false only the hashes [...]
     "gasLimit": { "index": 5, "kind": "property", "displayName": "Gas Limit", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.math.BigInteger", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The maximum gas allowed in this block." },
-    "privateFor": { "index": 6, "kind": "property", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A transaction privateFor nodes with public keys in a Quorum network" },
+    "privateFor": { "index": 6, "kind": "property", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A comma separated transaction privateFor nodes with public keys in a Quorum network" },
     "quorumAPI": { "index": 7, "kind": "property", "displayName": "Quorum API", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true, this will support Quorum API." },
     "toAddress": { "index": 8, "kind": "property", "displayName": "To Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is directed to." },
     "toBlock": { "index": 9, "kind": "property", "displayName": "To Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for not  [...]
@@ -105,12 +105,12 @@
   },
   "properties": {
     "nodeAddress": { "index": 0, "kind": "path", "displayName": "Node Address", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the node address used to communicate" },
-    "addresses": { "index": 1, "kind": "parameter", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a list of addresses." },
+    "addresses": { "index": 1, "kind": "parameter", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "Contract address or a comma separated list of addresses." },
     "fromAddress": { "index": 2, "kind": "parameter", "displayName": "From Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is send from" },
     "fromBlock": { "index": 3, "kind": "parameter", "displayName": "From Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for [...]
     "fullTransactionObjects": { "index": 4, "kind": "parameter", "displayName": "Full Transaction Objects", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true it returns the full transaction objects, if false only the hashe [...]
     "gasLimit": { "index": 5, "kind": "parameter", "displayName": "Gas Limit", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.math.BigInteger", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The maximum gas allowed in this block." },
-    "privateFor": { "index": 6, "kind": "parameter", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A transaction privateFor nodes with public keys in a Quorum network" },
+    "privateFor": { "index": 6, "kind": "parameter", "displayName": "Private For", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "A comma separated transaction privateFor nodes with public keys in a Quorum network" },
     "quorumAPI": { "index": 7, "kind": "parameter", "displayName": "Quorum API", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "If true, this will support Quorum API." },
     "toAddress": { "index": 8, "kind": "parameter", "displayName": "To Address", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The address the transaction is directed to." },
     "toBlock": { "index": 9, "kind": "parameter", "displayName": "To Block", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.web3j.Web3jConfiguration", "configurationField": "configuration", "description": "The block number, or the string latest for the last mined block or pending, earliest for not [...]
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
index ced2535296d..a6dd8aef0d1 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.web3j;
 
 import java.math.BigInteger;
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.camel.RuntimeCamelException;
@@ -41,13 +40,13 @@ public class Web3jConfiguration implements Cloneable {
     private String atBlock;
 
     @UriParam(label = "common")
-    private List<String> addresses;
+    private String addresses;
 
     @UriParam(label = "producer")
     private String address;
 
     @UriParam(label = "common", javaType = "java.lang.String")
-    private List<String> topics;
+    private String topics;
 
     @UriParam(label = "producer")
     private BigInteger position;
@@ -128,16 +127,24 @@ public class Web3jConfiguration implements Cloneable {
     private boolean quorumAPI;
 
     @UriParam(label = "common")
-    private List<String> privateFor;
+    private String privateFor;
 
-    public List<String> getPrivateFor() {
+    public String getPrivateFor() {
         return privateFor;
     }
 
+    public List<String> getPrivateForAsList() {
+        if (privateFor != null) {
+            return List.of(privateFor.split(","));
+        } else {
+            return null;
+        }
+    }
+
     /**
-     * A transaction privateFor nodes with public keys in a Quorum network
+     * A comma separated transaction privateFor nodes with public keys in a Quorum network
      */
-    public void setPrivateFor(List<String> privateFor) {
+    public void setPrivateFor(String privateFor) {
         this.privateFor = privateFor;
     }
 
@@ -452,31 +459,42 @@ public class Web3jConfiguration implements Cloneable {
         this.atBlock = atBlock;
     }
 
-    public List<String> getAddresses() {
+    public String getAddresses() {
         return addresses;
     }
 
+    public List<String> getAddressesAsList() {
+        if (addresses != null) {
+            return List.of(addresses.split(","));
+        } else {
+            return null;
+        }
+    }
+
     /**
-     * Contract address or a list of addresses.
+     * Contract address or a comma separated list of addresses.
      */
-    public void setAddresses(List<String> addresses) {
+    public void setAddresses(String addresses) {
         this.addresses = addresses;
     }
 
-    public List<String> getTopics() {
+    public String getTopics() {
         return topics;
     }
 
+    public List<String> getTopicsAsList() {
+        if (topics != null) {
+            return List.of(topics.split(","));
+        } else {
+            return null;
+        }
+    }
+
     /**
      * Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma.
      */
-    public void setTopics(List<String> topics) {
-        this.topics = topics;
-    }
-
     public void setTopics(String topics) {
-        String[] arr = topics.split(",");
-        this.topics = Arrays.asList(arr);
+        this.topics = topics;
     }
 
     public String getAddress() {
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
index 8ae27134ac4..1716ab9e8ef 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConsumer.java
@@ -61,8 +61,8 @@ public class Web3jConsumer extends DefaultConsumer {
         switch (configuration.getOperation()) {
             case Web3jConstants.ETH_LOG_OBSERVABLE:
                 EthFilter ethFilter = Web3jEndpoint.buildEthFilter(toDefaultBlockParameter(configuration.getFromBlock()),
-                        toDefaultBlockParameter(configuration.getToBlock()), configuration.getAddresses(),
-                        configuration.getTopics());
+                        toDefaultBlockParameter(configuration.getToBlock()), configuration.getAddressesAsList(),
+                        configuration.getTopicsAsList());
                 subscription = web3j.ethLogFlowable(ethFilter).subscribe(
                         this::ethLogObservable,
                         t -> processError(t, Web3jConstants.ETH_LOG_OBSERVABLE),
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jProducer.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jProducer.java
index fcfb859954b..fd4ab876b38 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jProducer.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jProducer.java
@@ -975,7 +975,7 @@ public class Web3jProducer extends HeaderSelectorProducer {
         BigInteger gasLimit = message.getHeader(Web3jConstants.GAS_LIMIT, configuration::getGasLimit, BigInteger.class);
         BigInteger value = message.getHeader(Web3jConstants.VALUE, configuration::getValue, BigInteger.class);
         String data = message.getHeader(Web3jConstants.DATA, configuration::getData, String.class);
-        List<String> privateFor = message.getHeader(Web3jConstants.PRIVATE_FOR, configuration::getPrivateFor, List.class);
+        List<String> privateFor = message.getHeader(Web3jConstants.PRIVATE_FOR, configuration::getPrivateForAsList, List.class);
         String privateFrom = message.getHeader(Web3jConstants.PRIVATE_FROM, String.class);
         PrivateTransaction transaction
                 = new PrivateTransaction(fromAddress, nonce, gasLimit, toAddress, value, data, privateFrom, privateFor);
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
index b060534da84..8ccc0635239 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
@@ -46,3 +46,7 @@ The availableZones parameter for camel-huawei-dms has been defined as String ins
 
 The ids parameter for camel-weather has been defined as String instead of List<String>. For the migration users will need to, eventually, define ids as a comma separated list of id instead of a List instance. For more information the related issue is CAMEL-17339.
 
+=== camel-web3j
+
+The addresses, privateFor and Topics parameters for camel-web3j have been defined as String instead of List<String>. For the migration users will need to, eventually, define addresses, privateFor or topics  as a comma separated list of addresses, privateFor or topics instead of a List instance. For more information the related issue is CAMEL-17339.
+
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Web3jComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Web3jComponentBuilderFactory.java
index a6240b6e176..ba277e04355 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Web3jComponentBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Web3jComponentBuilderFactory.java
@@ -51,17 +51,16 @@ public interface Web3jComponentBuilderFactory {
     interface Web3jComponentBuilder extends ComponentBuilder<Web3jComponent> {
     
         /**
-         * Contract address or a list of addresses.
+         * Contract address or a comma separated list of addresses.
          * 
-         * The option is a:
-         * &lt;code&gt;java.util.List&amp;lt;java.lang.String&amp;gt;&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
          * Group: common
          * 
          * @param addresses the value to set
          * @return the dsl builder
          */
-        default Web3jComponentBuilder addresses(java.util.List<java.lang.String> addresses) {
+        default Web3jComponentBuilder addresses(java.lang.String addresses) {
             doSetProperty("addresses", addresses);
             return this;
         }
@@ -149,17 +148,17 @@ public interface Web3jComponentBuilderFactory {
         }
     
         /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
+         * A comma separated transaction privateFor nodes with public keys in a
+         * Quorum network.
          * 
-         * The option is a:
-         * &lt;code&gt;java.util.List&amp;lt;java.lang.String&amp;gt;&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
          * Group: common
          * 
          * @param privateFor the value to set
          * @return the dsl builder
          */
-        default Web3jComponentBuilder privateFor(java.util.List<java.lang.String> privateFor) {
+        default Web3jComponentBuilder privateFor(java.lang.String privateFor) {
             doSetProperty("privateFor", privateFor);
             return this;
         }
@@ -696,13 +695,13 @@ public interface Web3jComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
-            case "addresses": getOrCreateConfiguration((Web3jComponent) component).setAddresses((java.util.List) value); return true;
+            case "addresses": getOrCreateConfiguration((Web3jComponent) component).setAddresses((java.lang.String) value); return true;
             case "configuration": ((Web3jComponent) component).setConfiguration((org.apache.camel.component.web3j.Web3jConfiguration) value); return true;
             case "fromAddress": getOrCreateConfiguration((Web3jComponent) component).setFromAddress((java.lang.String) value); return true;
             case "fromBlock": getOrCreateConfiguration((Web3jComponent) component).setFromBlock((java.lang.String) value); return true;
             case "fullTransactionObjects": getOrCreateConfiguration((Web3jComponent) component).setFullTransactionObjects((boolean) value); return true;
             case "gasLimit": getOrCreateConfiguration((Web3jComponent) component).setGasLimit((java.math.BigInteger) value); return true;
-            case "privateFor": getOrCreateConfiguration((Web3jComponent) component).setPrivateFor((java.util.List) value); return true;
+            case "privateFor": getOrCreateConfiguration((Web3jComponent) component).setPrivateFor((java.lang.String) value); return true;
             case "quorumAPI": getOrCreateConfiguration((Web3jComponent) component).setQuorumAPI((boolean) value); return true;
             case "toAddress": getOrCreateConfiguration((Web3jComponent) component).setToAddress((java.lang.String) value); return true;
             case "toBlock": getOrCreateConfiguration((Web3jComponent) component).setToBlock((java.lang.String) value); return true;
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Web3jEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Web3jEndpointBuilderFactory.java
index 90b646d8f88..c4d2a3f4cb3 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Web3jEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Web3jEndpointBuilderFactory.java
@@ -44,25 +44,9 @@ public interface Web3jEndpointBuilderFactory {
             return (AdvancedWeb3jEndpointConsumerBuilder) this;
         }
         /**
-         * Contract address or a list of addresses.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param addresses the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointConsumerBuilder addresses(List<java.lang.String> addresses) {
-            doSetProperty("addresses", addresses);
-            return this;
-        }
-        /**
-         * Contract address or a list of addresses.
+         * Contract address or a comma separated list of addresses.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          * 
@@ -165,25 +149,10 @@ public interface Web3jEndpointBuilderFactory {
             return this;
         }
         /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param privateFor the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointConsumerBuilder privateFor(List<java.lang.String> privateFor) {
-            doSetProperty("privateFor", privateFor);
-            return this;
-        }
-        /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
+         * A comma separated transaction privateFor nodes with public keys in a
+         * Quorum network.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          * 
@@ -439,25 +408,9 @@ public interface Web3jEndpointBuilderFactory {
         }
 
         /**
-         * Contract address or a list of addresses.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param addresses the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointProducerBuilder addresses(List<java.lang.String> addresses) {
-            doSetProperty("addresses", addresses);
-            return this;
-        }
-        /**
-         * Contract address or a list of addresses.
+         * Contract address or a comma separated list of addresses.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          * 
@@ -560,25 +513,10 @@ public interface Web3jEndpointBuilderFactory {
             return this;
         }
         /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param privateFor the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointProducerBuilder privateFor(List<java.lang.String> privateFor) {
-            doSetProperty("privateFor", privateFor);
-            return this;
-        }
-        /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
+         * A comma separated transaction privateFor nodes with public keys in a
+         * Quorum network.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          * 
@@ -1198,25 +1136,9 @@ public interface Web3jEndpointBuilderFactory {
         }
 
         /**
-         * Contract address or a list of addresses.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param addresses the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointBuilder addresses(List<java.lang.String> addresses) {
-            doSetProperty("addresses", addresses);
-            return this;
-        }
-        /**
-         * Contract address or a list of addresses.
+         * Contract address or a comma separated list of addresses.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          * 
@@ -1319,25 +1241,10 @@ public interface Web3jEndpointBuilderFactory {
             return this;
         }
         /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
-         * 
-         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param privateFor the value to set
-         * @return the dsl builder
-         */
-        default Web3jEndpointBuilder privateFor(List<java.lang.String> privateFor) {
-            doSetProperty("privateFor", privateFor);
-            return this;
-        }
-        /**
-         * A transaction privateFor nodes with public keys in a Quorum network.
+         * A comma separated transaction privateFor nodes with public keys in a
+         * Quorum network.
          * 
-         * The option will be converted to a
-         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          *