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;