You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2022/04/06 15:22:48 UTC

[camel] 11/20: CAMEL-17792: Add doc about the message headers of camel-web3j

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

nfilotto pushed a commit to branch CAMEL-17792/doc-message-headers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f52fe6b951bee3fdd0f0ac4603ee8f21617003a8
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Wed Apr 6 15:17:57 2022 +0200

    CAMEL-17792: Add doc about the message headers of camel-web3j
---
 .../org/apache/camel/component/web3j/web3j.json    | 39 ++++++++++++
 .../camel-web3j/src/main/docs/web3j-component.adoc | 13 ++--
 .../camel/component/web3j/Web3jConstants.java      | 72 ++++++++++++++++++++++
 .../camel/component/web3j/Web3jConsumer.java       |  4 +-
 .../camel/component/web3j/Web3jEndpoint.java       |  2 +-
 5 files changed, 118 insertions(+), 12 deletions(-)

diff --git a/components/camel-web3j/src/generated/resources/org/apache/camel/component/web3j/web3j.json b/components/camel-web3j/src/generated/resources/org/apache/camel/component/web3j/web3j.json
index b5ac0346b18..bbf383320f5 100644
--- a/components/camel-web3j/src/generated/resources/org/apache/camel/component/web3j/web3j.json
+++ b/components/camel-web3j/src/generated/resources/org/apache/camel/component/web3j/web3j.json
@@ -61,6 +61,45 @@
     "value": { "kind": "property", "displayName": "Value", "group": "producer", "label": "producer", "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 value sent within a transaction." },
     "autowiredEnabled": { "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 type, which t [...]
   },
+  "headers": {
+    "ETH_HASHRATE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A hexadecimal string representation (32 bytes) of the hash rate." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id" },
+    "AT_BLOCK": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions." },
+    "ADDRESS": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Contract address." },
+    "ADDRESSES": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Contract address or a list of addresses." },
+    "FROM_ADDRESS": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The address the transaction is send from" },
+    "TO_ADDRESS": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The address the transaction is directed to" },
+    "POSITION": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transaction index position withing a block." },
+    "BLOCK_HASH": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Hash of the block where this transaction was in." },
+    "TRANSACTION_HASH": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The information about a transaction requested by transaction hash." },
+    "SHA3_HASH_OF_DATA_TO_SIGN": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Message to sign by calculating an Ethereum specific signature." },
+    "SIGNED_TRANSACTION_DATA": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The signed transaction data for a new message call transaction or a contract creation for signed transactions." },
+    "FULL_TRANSACTION_OBJECTS": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If true it returns the full transaction objects, if false only the hashes of the transactions." },
+    "INDEX": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transactions\/uncle index position in the block." },
+    "SOURCE_CODE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The source code to compile." },
+    "FILTER_ID": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The filter id to use." },
+    "DATABASE_NAME": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The local database name." },
+    "KEY_NAME": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The key name in the database." },
+    "NONCE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The nonce found (64 bits) used for submitting a proof-of-work solution." },
+    "HEADER_POW_HASH": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The header's pow-hash (256 bits) used for submitting a proof-of-work solution." },
+    "MIX_DIGEST": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The mix digest (256 bits) used for submitting a proof-of-work solution." },
+    "CLIENT_ID": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A random hexadecimal(32 bytes) ID identifying the client." },
+    "GAS_PRICE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Gas price used for each paid gas." },
+    "GAS_LIMIT": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum gas allowed in this block." },
+    "VALUE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The value sent within a transaction." },
+    "DATA": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The compiled code of a contract OR the hash of the invoked method signature and encoded parameters." },
+    "FROM_BLOCK": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions." },
+    "TO_BLOCK": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions." },
+    "TOPICS": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma." },
+    "PRIORITY": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority of a whisper message." },
+    "TTL": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.math.BigInteger", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The time to live in seconds of a whisper message." },
+    "PRIVATE_FOR": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A transaction privateFor nodes with public keys in a Quorum network" },
+    "ERROR_CODE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The error code" },
+    "ERROR_DATA": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The error data" },
+    "ERROR_MESSAGE": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The error message" },
+    "status": { "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The status of the operation" },
+    "operation": { "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation" }
+  },
   "properties": {
     "nodeAddress": { "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": { "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." },
diff --git a/components/camel-web3j/src/main/docs/web3j-component.adoc b/components/camel-web3j/src/main/docs/web3j-component.adoc
index 148a41f868c..fa1a81a51b7 100644
--- a/components/camel-web3j/src/main/docs/web3j-component.adoc
+++ b/components/camel-web3j/src/main/docs/web3j-component.adoc
@@ -51,16 +51,11 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
-== Message Headers
-
-[width="100%",cols="10%,90%",options="header",]
-|=======================================================================
-|Header |Description
-
-|`All URI options` |All URI options can also be set as exchange headers.
-
-|=======================================================================
+All URI options can also be set as exchange headers.
 
 == Samples
 
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConstants.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConstants.java
index c770556ec59..1385f9ad3ca 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConstants.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConstants.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.web3j;
 
+import org.apache.camel.spi.Metadata;
+
 public interface Web3jConstants {
     String WEB3_CLIENT_VERSION = "WEB3_CLIENT_VERSION";
     String WEB3_SHA3 = "WEB3_SHA3";
@@ -26,6 +28,8 @@ public interface Web3jConstants {
     String ETH_COINBASE = "ETH_COINBASE";
     String ETH_SYNCING = "ETH_SYNCING";
     String ETH_MINING = "ETH_MINING";
+    @Metadata(label = "producer", description = "A hexadecimal string representation (32 bytes) of the hash rate.",
+              javaType = "String")
     String ETH_HASHRATE = "ETH_HASHRATE";
     String ETH_GAS_PRICE = "ETH_GAS_PRICE";
     String ETH_ACCOUNTS = "ETH_ACCOUNTS";
@@ -106,41 +110,109 @@ public interface Web3jConstants {
     String CATCH_UP_TO_LATEST_AND_SUBSCRIBE_TO_NEW_TRANSACTIONS_OBSERVABLE
             = "CATCH_UP_TO_LATEST_AND_SUBSCRIBE_TO_NEW_TRANSACTIONS_OBSERVABLE";
 
+    @Metadata(label = "producer", description = "The id", javaType = "Long")
     String ID = "ID";
     String OPERATION = "OPERATION";
     String TRANSACTION = "TRANSACTION";
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined
+     * transactions.
+     */
+    @Metadata(label = "producer", javaType = "String")
     String AT_BLOCK = "AT_BLOCK";
+    @Metadata(label = "producer", description = "Contract address.", javaType = "String")
     String ADDRESS = "ADDRESS";
+    @Metadata(label = "producer", description = "Contract address or a list of addresses.", javaType = "List<String>")
     String ADDRESSES = "ADDRESSES";
+    @Metadata(label = "producer", description = "The address the transaction is send from", javaType = "String")
     String FROM_ADDRESS = "FROM_ADDRESS";
+    @Metadata(label = "producer", description = "The address the transaction is directed to", javaType = "String")
     String TO_ADDRESS = "TO_ADDRESS";
+    @Metadata(label = "producer", description = "The transaction index position withing a block.", javaType = "String")
     String POSITION = "POSITION";
+    @Metadata(label = "producer", description = "Hash of the block where this transaction was in.", javaType = "String")
     String BLOCK_HASH = "BLOCK_HASH";
+    @Metadata(label = "producer", description = "The information about a transaction requested by transaction hash.",
+              javaType = "String")
     String TRANSACTION_HASH = "TRANSACTION_HASH";
+    @Metadata(label = "producer", description = "Message to sign by calculating an Ethereum specific signature.",
+              javaType = "String")
     String SHA3_HASH_OF_DATA_TO_SIGN = "SHA3_HASH_OF_DATA_TO_SIGN";
+    @Metadata(label = "producer",
+              description = "The signed transaction data for a new message call transaction or a contract creation for signed transactions.",
+              javaType = "String")
     String SIGNED_TRANSACTION_DATA = "SIGNED_TRANSACTION_DATA";
+    @Metadata(label = "producer",
+              description = "If true it returns the full transaction objects, if false only the hashes of the transactions.",
+              javaType = "Boolean")
     String FULL_TRANSACTION_OBJECTS = "FULL_TRANSACTION_OBJECTS";
+    @Metadata(label = "producer", description = "The transactions/uncle index position in the block.", javaType = "String")
     String INDEX = "INDEX";
+    @Metadata(label = "producer", description = "The source code to compile.", javaType = "String")
     String SOURCE_CODE = "SOURCE_CODE";
+    @Metadata(label = "producer", description = "The filter id to use.", javaType = "java.math.BigInteger")
     String FILTER_ID = "FILTER_ID";
+    @Metadata(label = "producer", description = "The local database name.", javaType = "String")
     String DATABASE_NAME = "DATABASE_NAME";
+    @Metadata(label = "producer", description = "The key name in the database.", javaType = "String")
     String KEY_NAME = "KEY_NAME";
+    @Metadata(label = "producer", description = "The nonce found (64 bits) used for submitting a proof-of-work solution.",
+              javaType = "java.math.BigInteger")
     String NONCE = "NONCE";
+    @Metadata(label = "producer",
+              description = "The header's pow-hash (256 bits) used for submitting a proof-of-work solution.",
+              javaType = "String")
     String HEADER_POW_HASH = "HEADER_POW_HASH";
+    @Metadata(label = "producer", description = "The mix digest (256 bits) used for submitting a proof-of-work solution.",
+              javaType = "String")
     String MIX_DIGEST = "MIX_DIGEST";
+    @Metadata(label = "producer", description = "A random hexadecimal(32 bytes) ID identifying the client.",
+              javaType = "String")
     String CLIENT_ID = "CLIENT_ID";
+    @Metadata(label = "producer", description = "Gas price used for each paid gas.", javaType = "java.math.BigInteger")
     String GAS_PRICE = "GAS_PRICE";
+    @Metadata(label = "producer", description = "The maximum gas allowed in this block.", javaType = "java.math.BigInteger")
     String GAS_LIMIT = "GAS_LIMIT";
+    @Metadata(label = "producer", description = "The value sent within a transaction.", javaType = "java.math.BigInteger")
     String VALUE = "VALUE";
+    @Metadata(label = "producer",
+              description = "The compiled code of a contract OR the hash of the invoked method signature and encoded parameters.",
+              javaType = "String")
     String DATA = "DATA";
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined
+     * transactions.
+     */
+    @Metadata(label = "producer", javaType = "String")
     String FROM_BLOCK = "FROM_BLOCK";
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined
+     * transactions.
+     */
+    @Metadata(label = "producer", javaType = "String")
     String TO_BLOCK = "TO_BLOCK";
+    @Metadata(label = "producer", description = "Topics are order-dependent. Each topic can also be a list of topics. " +
+                                                "Specify multiple topics separated by comma.",
+              javaType = "List<String>")
     String TOPICS = "TOPICS";
+    @Metadata(label = "producer", description = "The priority of a whisper message.", javaType = "java.math.BigInteger")
     String PRIORITY = "PRIORITY";
+    @Metadata(label = "producer", description = "The time to live in seconds of a whisper message.",
+              javaType = "java.math.BigInteger")
     String TTL = "TTL";
+    @Metadata(label = "producer", description = "A transaction privateFor nodes with public keys in a Quorum network",
+              javaType = "List<String>")
     String PRIVATE_FOR = "PRIVATE_FOR";
 
+    @Metadata(label = "producer", description = "The error code", javaType = "int")
     String ERROR_CODE = "ERROR_CODE";
+    @Metadata(label = "producer", description = "The error data", javaType = "String")
     String ERROR_DATA = "ERROR_DATA";
+    @Metadata(label = "producer", description = "The error message", javaType = "String")
     String ERROR_MESSAGE = "ERROR_MESSAGE";
+
+    @Metadata(label = "consumer", description = "The status of the operation", javaType = "String")
+    String HEADER_STATUS = "status";
+    @Metadata(label = "consumer", description = "The operation", javaType = "String")
+    String HEADER_OPERATION = "operation";
 }
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 b88a7b488d5..ca4ae170ea3 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
@@ -213,8 +213,8 @@ public class Web3jConsumer extends DefaultConsumer {
     private void processDone(String operation) {
         LOG.debug("processDone for operation: {}", operation);
         Exchange exchange = this.getEndpoint().createExchange();
-        exchange.getIn().setHeader("status", "done");
-        exchange.getIn().setHeader("operation", operation);
+        exchange.getIn().setHeader(Web3jConstants.HEADER_STATUS, "done");
+        exchange.getIn().setHeader(Web3jConstants.HEADER_OPERATION, operation);
         processEvent(exchange);
     }
 
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
index 0fc98e4e173..5b4a8c51592 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
@@ -44,7 +44,7 @@ import org.web3j.quorum.Quorum;
  * Interact with Ethereum nodes using web3j client API.
  */
 @UriEndpoint(firstVersion = "2.22.0", scheme = "web3j", title = "Web3j Ethereum Blockchain", syntax = "web3j:nodeAddress",
-             category = { Category.BITCOIN, Category.BLOCKCHAIN, Category.API })
+             category = { Category.BITCOIN, Category.BLOCKCHAIN, Category.API }, headersClass = Web3jConstants.class)
 public class Web3jEndpoint extends DefaultEndpoint {
     private static final Logger LOG = LoggerFactory.getLogger(Web3jEndpoint.class);