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 <[email protected]> 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);
