You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/12/21 19:53:24 UTC
(camel) branch main updated: CAMEL-20275: components - Mark options that can are used for text inp… (#12551)
This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 7917bcb5965 CAMEL-20275: components - Mark options that can are used for text inp… (#12551)
7917bcb5965 is described below
commit 7917bcb5965ea9905e0e428eef82537374ade1b9
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Dec 21 20:53:19 2023 +0100
CAMEL-20275: components - Mark options that can are used for text inp… (#12551)
* CAMEL-20275: components - Mark options that can are used for text inputs such as a SQL query
* CAMEL-20275: components - Mark options that can are used for text inputs such as a SQL query
* CAMEL-20275: components - Mark options that can are used for text inputs such as a SQL query
---
.../camel/catalog/components/google-bigquery-sql.json | 2 +-
.../apache/camel/catalog/components/sql-stored.json | 2 +-
.../org/apache/camel/catalog/components/sql.json | 2 +-
.../google/bigquery/sql/google-bigquery-sql.json | 2 +-
.../bigquery/sql/GoogleBigQuerySQLConfiguration.java | 2 +-
.../resources/org/apache/camel/component/sql/sql.json | 2 +-
.../apache/camel/component/sql/stored/sql-stored.json | 2 +-
.../org/apache/camel/component/sql/SqlEndpoint.java | 2 +-
.../camel/component/sql/stored/SqlStoredEndpoint.java | 2 +-
.../generated/java/org/apache/camel/spi/Metadata.java | 15 +++++++++++++++
.../apache/camel/tooling/model/BaseOptionModel.java | 18 ++++++++++++++++++
.../org/apache/camel/tooling/model/JsonMapper.java | 10 ++++++++++
.../maven/packaging/EndpointSchemaGeneratorMojo.java | 8 ++++++++
.../src/main/java/org/apache/camel/spi/Metadata.java | 15 +++++++++++++++
14 files changed, 75 insertions(+), 9 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json
index 4974a46f603..5a0a700e69e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json
@@ -33,7 +33,7 @@
},
"properties": {
"projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
- "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard SQL query" },
+ "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard [...]
"connectionFactory": { "index": 2, "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description [...]
"lazyStartProducer": { "index": 3, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produc [...]
"serviceAccountKey": { "index": 4, "kind": "parameter", "displayName": "Service Account Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Service account key in json format to authen [...]
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql-stored.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql-stored.json
index 8dce1fcec9b..af4cb35b3a0 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql-stored.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql-stored.json
@@ -32,7 +32,7 @@
"CamelSqlStoredUpdateCount": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The update count", "constantName": "org.apache.camel.component.sql.stored.SqlStoredConstants#SQL_STORED_UPDATE_COUNT" }
},
"properties": {
- "template": { "index": 0, "kind": "path", "displayName": "Template", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "description": "Sets the stored procedure template to perform. You can externalize the template by using file: or classpath: as prefix and specify the location of the file." },
+ "template": { "index": 0, "kind": "path", "displayName": "Template", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "inputLanguage": "sql", "description": "Sets the stored procedure template to perform. You can externalize the template by using file: or classpath: as prefix and specify the location of [...]
"batch": { "index": 1, "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" },
"dataSource": { "index": 2, "kind": "parameter", "displayName": "Data Source", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "javax.sql.DataSource", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the DataSource to use to communicate with the database." },
"function": { "index": 3, "kind": "parameter", "displayName": "Function", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether this call is for a function." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
index e2a1a32d991..5e46b5a68ed 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
@@ -42,7 +42,7 @@
"CamelSqlParameters": { "index": 7, "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", "constantName": "org.apache.camel.component.sql.SqlConstants#SQL_PARAMETERS" }
},
"properties": {
- "query": { "index": 0, "kind": "path", "displayName": "Query", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "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." },
+ "query": { "index": 0, "kind": "path", "displayName": "Query", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "inputLanguage": "sql", "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": { "index": 1, "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." },
"dataSource": { "index": 2, "kind": "parameter", "displayName": "Data Source", "group": "common", "label": "", "required": false, "type": "object", "javaType": "javax.sql.DataSource", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "Sets the DataSource to use to communicate with the database at endpoint level." },
"outputClass": { "index": 3, "kind": "parameter", "displayName": "Output Class", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Specify the full package and class name to use as conversion when outputType=SelectOne." },
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
index 4974a46f603..5a0a700e69e 100644
--- a/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
@@ -33,7 +33,7 @@
},
"properties": {
"projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
- "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard SQL query" },
+ "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard [...]
"connectionFactory": { "index": 2, "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description [...]
"lazyStartProducer": { "index": 3, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produc [...]
"serviceAccountKey": { "index": 4, "kind": "parameter", "displayName": "Service Account Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Service account key in json format to authen [...]
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
index 855787bd109..1fb459216eb 100644
--- a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.UriPath;
public class GoogleBigQuerySQLConfiguration implements Cloneable {
@UriPath(label = "common", description = "BigQuery standard SQL query")
- @Metadata(required = true, supportFileReference = true)
+ @Metadata(required = true, supportFileReference = true, largeInput = true)
private String queryString;
@UriParam(description = "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used")
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 e2a1a32d991..5e46b5a68ed 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
@@ -42,7 +42,7 @@
"CamelSqlParameters": { "index": 7, "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", "constantName": "org.apache.camel.component.sql.SqlConstants#SQL_PARAMETERS" }
},
"properties": {
- "query": { "index": 0, "kind": "path", "displayName": "Query", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "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." },
+ "query": { "index": 0, "kind": "path", "displayName": "Query", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "inputLanguage": "sql", "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": { "index": 1, "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." },
"dataSource": { "index": 2, "kind": "parameter", "displayName": "Data Source", "group": "common", "label": "", "required": false, "type": "object", "javaType": "javax.sql.DataSource", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "Sets the DataSource to use to communicate with the database at endpoint level." },
"outputClass": { "index": 3, "kind": "parameter", "displayName": "Output Class", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Specify the full package and class name to use as conversion when outputType=SelectOne." },
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 8dce1fcec9b..af4cb35b3a0 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
@@ -32,7 +32,7 @@
"CamelSqlStoredUpdateCount": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The update count", "constantName": "org.apache.camel.component.sql.stored.SqlStoredConstants#SQL_STORED_UPDATE_COUNT" }
},
"properties": {
- "template": { "index": 0, "kind": "path", "displayName": "Template", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "description": "Sets the stored procedure template to perform. You can externalize the template by using file: or classpath: as prefix and specify the location of the file." },
+ "template": { "index": 0, "kind": "path", "displayName": "Template", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "inputLanguage": "sql", "description": "Sets the stored procedure template to perform. You can externalize the template by using file: or classpath: as prefix and specify the location of [...]
"batch": { "index": 1, "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" },
"dataSource": { "index": 2, "kind": "parameter", "displayName": "Data Source", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "javax.sql.DataSource", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the DataSource to use to communicate with the database." },
"function": { "index": 3, "kind": "parameter", "displayName": "Function", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether this call is for a function." },
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 938cf543f60..be0aad03b47 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
@@ -34,7 +34,7 @@ import org.apache.camel.util.UnsafeUriCharactersEncoder;
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.")
- @Metadata(required = true, supportFileReference = true)
+ @Metadata(required = true, supportFileReference = true, largeInput = true, inputLanguage = "sql")
private String query;
public SqlEndpoint() {
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 0f9b3622eb9..cbcb3bef458 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
@@ -44,7 +44,7 @@ public class SqlStoredEndpoint extends DefaultEndpoint {
private JdbcTemplate jdbcTemplate;
@UriPath(description = "Sets the stored procedure template to perform. You can externalize the template by using file: or classpath: as prefix and specify the location of the file.")
- @Metadata(required = true, supportFileReference = true)
+ @Metadata(required = true, supportFileReference = true, largeInput = true, inputLanguage = "sql")
private String template;
@UriParam(description = "Sets the DataSource to use to communicate with the database.")
private DataSource dataSource;
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
index 53c0ce67c36..a8ae70fcded 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
@@ -155,4 +155,19 @@ public @interface Metadata {
* file.
*/
boolean supportFileReference() default false;
+
+ /**
+ * Whether the option can be large input such as a SQL query, XSLT template, or scripting code.
+ *
+ * This can be used to help tooling to provide an input form instead of a single input field to give better user
+ * experience.
+ */
+ boolean largeInput() default false;
+
+ /**
+ * If the option is some specific language such as SQL, XSLT, XML, JavaScript or something else.
+ *
+ * This can be used to help tooling to provide a better user experience.
+ */
+ String inputLanguage() default "";
}
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseOptionModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseOptionModel.java
index 663cce54943..574660ebe09 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseOptionModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/BaseOptionModel.java
@@ -49,6 +49,8 @@ public abstract class BaseOptionModel {
protected String description;
protected String nestedType; // optional and currently only used by configurer
protected boolean supportFileReference;
+ protected boolean largeInput;
+ protected String inputLanguage;
// todo: move this as a helper method
protected boolean newGroup; // special for documentation rendering
@@ -285,6 +287,22 @@ public abstract class BaseOptionModel {
this.supportFileReference = supportFileReference;
}
+ public boolean isLargeInput() {
+ return largeInput;
+ }
+
+ public void setLargeInput(boolean largeInput) {
+ this.largeInput = largeInput;
+ }
+
+ public String getInputLanguage() {
+ return inputLanguage;
+ }
+
+ public void setInputLanguage(String inputLanguage) {
+ this.inputLanguage = inputLanguage;
+ }
+
public String getShortGroup() {
if (group != null && group.endsWith(" (advanced)")) {
return group.substring(0, group.length() - 11);
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index 6c9df322e7f..68a85c4f0bc 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -458,6 +458,8 @@ public final class JsonMapper {
option.setGetterMethod(mp.getString("getterMethod"));
option.setSetterMethod(mp.getString("setterMethod"));
option.setSupportFileReference(mp.getBooleanOrDefault("supportFileReference", false));
+ option.setLargeInput(mp.getBooleanOrDefault("largeInput", false));
+ option.setInputLanguage(mp.getString("inputLanguage"));
}
private static void parseGroup(JsonObject mp, MainGroupModel option) {
@@ -538,6 +540,14 @@ public final class JsonMapper {
// only include if supported to not regen all files
prop.put("supportFileReference", option.isSupportFileReference());
}
+ if (option.isLargeInput()) {
+ // only include if supported to not regen all files
+ prop.put("largeInput", option.isLargeInput());
+ }
+ if (!Strings.isNullOrEmpty(option.getInputLanguage())) {
+ // only include if supported to not regen all files
+ prop.put("inputLanguage", option.getInputLanguage());
+ }
prop.put("asPredicate", option.isAsPredicate());
prop.put("configurationClass", option.getConfigurationClass());
prop.put("configurationField", option.getConfigurationField());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
index c54443b9faf..ca05171c1a2 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
@@ -970,6 +970,8 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
boolean secret = metadata != null && metadata.secret();
boolean autowired = metadata != null && metadata.autowired();
boolean supportFileReference = metadata != null && metadata.supportFileReference();
+ boolean largeInput = metadata != null && metadata.largeInput();
+ String inputLanguage = metadata != null ? metadata.inputLanguage() : null;
// we do not yet have default values / notes / as no annotation
// support yet
@@ -1086,6 +1088,8 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
option.setConfigurationClass(nestedTypeName);
option.setConfigurationField(nestedFieldName);
option.setSupportFileReference(supportFileReference);
+ option.setLargeInput(largeInput);
+ option.setInputLanguage(inputLanguage);
componentModel.addComponentOption(option);
}
}
@@ -1506,6 +1510,8 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
boolean isSecret = secret != null && secret || path.secret();
boolean isAutowired = metadata != null && metadata.autowired();
boolean supportFileReference = metadata != null && metadata.supportFileReference();
+ boolean largeInput = metadata != null && metadata.largeInput();
+ String inputLanguage = metadata != null ? metadata.inputLanguage() : null;
String group = EndpointHelper.labelAsGroupName(label, componentModel.isConsumerOnly(),
componentModel.isProducerOnly());
@@ -1558,6 +1564,8 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
option.setConfigurationClass(nestedTypeName);
option.setConfigurationField(nestedFieldName);
option.setSupportFileReference(supportFileReference);
+ option.setLargeInput(largeInput);
+ option.setInputLanguage(inputLanguage);
if (componentModel.getEndpointOptions().stream().noneMatch(opt -> name.equals(opt.getName()))) {
componentModel.addEndpointOption((EndpointOptionModel) option);
}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
index 53c0ce67c36..a8ae70fcded 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
@@ -155,4 +155,19 @@ public @interface Metadata {
* file.
*/
boolean supportFileReference() default false;
+
+ /**
+ * Whether the option can be large input such as a SQL query, XSLT template, or scripting code.
+ *
+ * This can be used to help tooling to provide an input form instead of a single input field to give better user
+ * experience.
+ */
+ boolean largeInput() default false;
+
+ /**
+ * If the option is some specific language such as SQL, XSLT, XML, JavaScript or something else.
+ *
+ * This can be used to help tooling to provide a better user experience.
+ */
+ String inputLanguage() default "";
}