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/05 16:15:03 UTC
[camel] 16/20: CAMEL-17792: Add doc about the message headers of camel-sql
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 a2d2d90f23f0e15634bfc3a77afd7a2517684726
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Tue Apr 5 17:19:13 2022 +0200
CAMEL-17792: Add doc about the message headers of camel-sql
---
.../org/apache/camel/component/sql/sql.json | 10 ++++++
.../camel/component/sql/stored/sql-stored.json | 5 +++
.../camel-sql/src/main/docs/sql-component.adoc | 40 ++--------------------
.../src/main/docs/sql-stored-component.adoc | 6 ++--
.../apache/camel/component/sql/SqlConstants.java | 25 ++++++++++++--
.../apache/camel/component/sql/SqlEndpoint.java | 2 +-
.../component/sql/stored/SqlStoredConstants.java | 8 +++--
.../component/sql/stored/SqlStoredEndpoint.java | 2 +-
8 files changed, 52 insertions(+), 46 deletions(-)
diff --git a/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/sql.json b/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/sql.json
index ca4fd76e9db..f94612c8ad0 100644
--- a/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/sql.json
+++ b/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/sql.json
@@ -28,6 +28,16 @@
"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 [...]
"usePlaceholder": { "kind": "property", "displayName": "Use Placeholder", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. This option is default true" }
},
+ "headers": {
+ "CamelSqlQuery": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query to execute. This query takes precedence over the query specified in the endpoint URI. Note that query parameters in the header _are_ represented by a instead of a pass:# symbol" },
+ "CamelSqlUpdateCount": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of rows updated for update operations, returned as an Integer object. This header is not provided when using outputType=StreamList." },
+ "CamelSqlRowCount": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of rows returned for select operations, returned as an Integer object. This header is not provided when using outputType=StreamList." },
+ "CamelSqlRetrieveGeneratedKeys": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Set its value to true to retrieve generated keys" },
+ "CamelSqlGeneratedColumns": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String[] or int[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set it to specify the expected generated columns" },
+ "CamelSqlGeneratedKeysRowCount": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of rows in the header that contains generated keys." },
+ "CamelSqlGeneratedKeyRows": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<Map<String, Object>>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Rows that contains the generated keys (a list of maps of keys)." },
+ "CamelSqlParameters": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Iterator", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The SQL parameters when using the option useMessageBodyForSql" }
+ },
"properties": {
"query": { "kind": "path", "displayName": "Query", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file." },
"allowNamedParameters": { "kind": "parameter", "displayName": "Allow Named Parameters", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to allow using named parameters in the queries." },
diff --git a/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/stored/sql-stored.json b/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/stored/sql-stored.json
index 5d960f268a9..b6c28c34503 100644
--- a/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/stored/sql-stored.json
+++ b/components/camel-sql/src/generated/resources/org/apache/camel/component/sql/stored/sql-stored.json
@@ -26,6 +26,11 @@
"lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
"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": {
+ "CamelSqlStoredTemplate": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The template" },
+ "CamelSqlStoredParameters": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Iterator", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The parameters" },
+ "CamelSqlStoredUpdateCount": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The update count" }
+ },
"properties": {
"template": { "kind": "path", "displayName": "Template", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the StoredProcedure template to perform" },
"batch": { "kind": "parameter", "displayName": "Batch", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enables or disables batch mode" },
diff --git a/components/camel-sql/src/main/docs/sql-component.adoc b/components/camel-sql/src/main/docs/sql-component.adoc
index 69884674090..773a90224e8 100644
--- a/components/camel-sql/src/main/docs/sql-component.adoc
+++ b/components/camel-sql/src/main/docs/sql-component.adoc
@@ -120,7 +120,9 @@ include::partial$component-endpoint-options.adoc[]
// endpoint options: START
// endpoint options: END
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
== Treatment of the message body
@@ -195,42 +197,6 @@ from("direct:withSplitModel")
.end();
----
-[[sql-component-header-values]]
-== Header values
-
-When performing `update` operations, the SQL Component stores the update
-count in the following message headers:
-
-[cols="1,3"]
-|===
-|Header |Description
-
-|`CamelSqlUpdateCount` |The number of rows updated for `update` operations, returned as an
-`Integer` object. This header is not provided when using
-outputType=StreamList.
-
-|`CamelSqlRowCount` |The number of rows returned for `select` operations, returned as an
-`Integer` object. This header is not provided when using
-outputType=StreamList.
-
-|`CamelSqlQuery` |Query to execute. This query takes precedence over the
-query specified in the endpoint URI. Note that query parameters in the
-header _are_ represented by a `?` instead of a `pass:[#]` symbol
-|===
-
-When performing `insert` operations, the SQL Component stores the rows
-with the generated keys and number of these rows in the following
-message headers:
-
-[cols="1,3"]
-|===
-|Header |Description
-
-|CamelSqlGeneratedKeysRowCount |The number of rows in the header that contains generated keys.
-
-|CamelSqlGeneratedKeyRows |Rows that contains the generated keys (a list of maps of keys).
-|===
-
== Generated keys
*Since Camel 2.12.4, 2.13.1 and 2.14*
diff --git a/components/camel-sql/src/main/docs/sql-stored-component.adoc b/components/camel-sql/src/main/docs/sql-stored-component.adoc
index 0ce183f370a..4c66c9b59dd 100644
--- a/components/camel-sql/src/main/docs/sql-stored-component.adoc
+++ b/components/camel-sql/src/main/docs/sql-stored-component.adoc
@@ -79,13 +79,15 @@ include::partial$component-endpoint-options.adoc[]
// endpoint options: START
// endpoint options: END
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
== Declaring the stored procedure template
The template is declared using a syntax that would be similar to a Java
method signature. The name of the stored procedure, and then the
-arguments enclosed in parenthesis. An example explains this well:
+arguments enclosed in parentheses. An example explains this well:
[source,xml]
----
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java
index 629cbd0af77..de28beb373a 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java
@@ -16,20 +16,34 @@
*/
package org.apache.camel.component.sql;
+import org.apache.camel.spi.Metadata;
+
/**
* SQL Constants.
*/
public final class SqlConstants {
+ @Metadata(label = "producer", description = "Query to execute. This query takes precedence over the\n" +
+ "query specified in the endpoint URI. Note that query parameters in the\n" +
+ "header _are_ represented by a `?` instead of a `pass:[#]` symbol",
+ javaType = "String")
public static final String SQL_QUERY = "CamelSqlQuery";
-
+ @Metadata(label = "producer", description = "The number of rows updated for `update` operations, returned as an\n" +
+ "`Integer` object. This header is not provided when using\n" +
+ "outputType=StreamList.",
+ javaType = "Integer")
public static final String SQL_UPDATE_COUNT = "CamelSqlUpdateCount";
-
+ @Metadata(label = "producer", description = "The number of rows returned for `select` operations, returned as an\n" +
+ "`Integer` object. This header is not provided when using\n" +
+ "outputType=StreamList.",
+ javaType = "Integer")
public static final String SQL_ROW_COUNT = "CamelSqlRowCount";
/**
* Boolean input header. Set its value to true to retrieve generated keys, default is false
*/
+ @Metadata(label = "producer", description = "Set its value to true to retrieve generated keys", javaType = "Boolean",
+ defaultValue = "false")
public static final String SQL_RETRIEVE_GENERATED_KEYS = "CamelSqlRetrieveGeneratedKeys";
/**
@@ -42,21 +56,28 @@ public final class SqlConstants {
* href="http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#execute(java.lang.String, java.lang.String[])">
* java.sql.Statement.execute(java.lang.String, java.lang.String[])</a>
*/
+ @Metadata(label = "producer", description = "Set it to specify the expected generated columns",
+ javaType = "String[] or int[]")
public static final String SQL_GENERATED_COLUMNS = "CamelSqlGeneratedColumns";
/**
* int output header giving the number of rows of generated keys
*/
+ @Metadata(label = "producer", description = "The number of rows in the header that contains generated keys.",
+ javaType = "Integer")
public static final String SQL_GENERATED_KEYS_ROW_COUNT = "CamelSqlGeneratedKeysRowCount";
/**
* <tt>List<Map<String, Object>></tt> output header containing the generated keys retrieved
*/
+ @Metadata(label = "producer", description = "Rows that contains the generated keys (a list of maps of keys).",
+ javaType = "List<Map<String, Object>>")
public static final String SQL_GENERATED_KEYS_DATA = "CamelSqlGeneratedKeyRows";
/**
* The SQL parameters when using the option useMessageBodyForSql
*/
+ @Metadata(label = "producer", javaType = "Iterator")
public static final String SQL_PARAMETERS = "CamelSqlParameters";
private SqlConstants() {
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
index c1696863a72..66fbb257a49 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
@@ -30,7 +30,7 @@ import org.apache.camel.util.UnsafeUriCharactersEncoder;
* Perform SQL queries using Spring JDBC.
*/
@UriEndpoint(firstVersion = "1.4.0", scheme = "sql", title = "SQL", syntax = "sql:query",
- category = { Category.DATABASE, Category.SQL })
+ category = { Category.DATABASE, Category.SQL }, headersClass = SqlConstants.class)
public class SqlEndpoint extends DefaultSqlEndpoint {
@UriPath(description = "Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file.")
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredConstants.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredConstants.java
index 2e34c5eca21..e0a2913734d 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredConstants.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredConstants.java
@@ -16,12 +16,14 @@
*/
package org.apache.camel.component.sql.stored;
-public final class SqlStoredConstants {
+import org.apache.camel.spi.Metadata;
+public final class SqlStoredConstants {
+ @Metadata(label = "producer", description = "The template", javaType = "String")
public static final String SQL_STORED_TEMPLATE = "CamelSqlStoredTemplate";
-
+ @Metadata(label = "producer", description = "The parameters", javaType = "Iterator")
public static final String SQL_STORED_PARAMETERS = "CamelSqlStoredParameters";
-
+ @Metadata(label = "producer", description = "The update count", javaType = "Integer")
public static final String SQL_STORED_UPDATE_COUNT = "CamelSqlStoredUpdateCount";
private SqlStoredConstants() {
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredEndpoint.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredEndpoint.java
index 9de682c5b3a..a7e6e08ad33 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredEndpoint.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/SqlStoredEndpoint.java
@@ -36,7 +36,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
* Perform SQL queries as a JDBC Stored Procedures using Spring JDBC.
*/
@UriEndpoint(firstVersion = "2.17.0", scheme = "sql-stored", title = "SQL Stored Procedure", syntax = "sql-stored:template",
- producerOnly = true, label = "database,sql")
+ producerOnly = true, label = "database,sql", headersClass = SqlStoredConstants.class)
public class SqlStoredEndpoint extends DefaultEndpoint {
private CallableStatementWrapperFactory wrapperFactory;