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-spring-boot.git
commit 0fb153a65bd87c7f41ae599235f239b3f7e5ccdb Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Jan 28 12:56:32 2025 +0100 Regen --- .../camel/springboot/catalog/components/solr.json | 85 ++++++++++------ .../camel-solr-starter/src/main/docs/solr.json | 57 +++++++++++ .../springboot/SolrComponentAutoConfiguration.java | 2 +- .../springboot/SolrComponentConfiguration.java | 111 +++++++++++++++++++++ .../solr/springboot/SolrComponentConverter.java | 63 ++++++++++++ ...rk.boot.autoconfigure.AutoConfiguration.imports | 3 +- 6 files changed, 289 insertions(+), 32 deletions(-) diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/solr.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/solr.json index 764de36c709..6600369faca 100644 --- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/solr.json +++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/solr.json @@ -6,7 +6,7 @@ "description": "Perform operations against Apache Lucene Solr.", "deprecated": false, "firstVersion": "4.8.0", - "label": "monitoring,search", + "label": "search,monitoring", "javaType": "org.apache.camel.component.solr.SolrComponent", "supportLevel": "Stable", "groupId": "org.apache.camel.springboot", @@ -14,8 +14,7 @@ "version": "4.10.0-SNAPSHOT", "scheme": "solr", "extendsScheme": "", - "alternativeSchemes": "solr,solrs,solrCloud", - "syntax": "solr:url", + "syntax": "solr:host:port", "async": false, "api": false, "consumerOnly": false, @@ -25,36 +24,62 @@ "remote": true }, "componentProperties": { - "lazyStartProducer": { "index": 0, "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 [...] - "autowiredEnabled": { "index": 1, "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 t [...] + "connectionTimeout": { "index": 0, "kind": "property", "displayName": "Connection Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "description": "The time in ms to wait before connection will time out." }, + "defaultCollection": { "index": 1, "kind": "property", "displayName": "Default Collection", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Solr default collection name" }, + "host": { "index": 2, "kind": "property", "displayName": "Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The solr instance host name" }, + "lazyStartProducer": { "index": 3, "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 [...] + "port": { "index": 4, "kind": "property", "displayName": "Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The solr instance port number" }, + "requestTimeout": { "index": 5, "kind": "property", "displayName": "Request Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 600000, "description": "The timeout in ms to wait before the socket will time out." }, + "autowiredEnabled": { "index": 6, "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 t [...] + "solrClient": { "index": 7, "kind": "property", "displayName": "Solr Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.solr.client.solrj.SolrClient", "deprecated": false, "autowired": true, "secret": false, "description": "To use an existing configured solr client, instead of creating a client per endpoint. This allows customizing the client with specific advanced settings." }, + "enableSSL": { "index": 8, "kind": "property", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable SSL" }, + "password": { "index": 9, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "description": "Password for authenticating" }, + "username": { "index": 10, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "description": "Basic authenticate user" } }, "headers": { - "CamelSolrClient": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.solr.client.solrj.SolrClient", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The client.", "constantName": "org.apache.camel.component.solr.SolrConstants#CLIENT" }, - "CamelSolrCollection": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The collection to execute the request again.", "constantName": "org.apache.camel.component.solr.SolrConstants#COLLECTION" }, - "SolrOperation": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.solr.SolrConstants#OPERATION" }, - "CamelSolrQueryString": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The query to execute.", "constantName": "org.apache.camel.component.solr.SolrConstants#QUERY_STRING" }, - "Content-Type": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The content type.", "constantName": "org.apache.camel.component.solr.SolrConstants#CONTENT_TYPE" } + "operation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_OPERATION" }, + "SolrOperation": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Use header 'operation' instead", "autowired": false, "secret": false, "description": "The operation to perform. Deprecation note: Use header 'operation' instead", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_OPERATION_DEPRECATED" }, + "collection": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The collection to execute the request against.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_COLLECTION" }, + "CamelSolrCollection": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Use header 'collection' instead", "autowired": false, "secret": false, "description": "The collection to execute the request against. Deprecation note: Use header 'collection' instead", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_COLLECTION_DEPRECATED" }, + "requestHandler": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The request handler to execute the solr request against.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_REQUEST_HANDLER" }, + "queryString": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The query to execute.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_QUERY_STRING" }, + "CamelSolrQueryString": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Use header 'queryString' instead", "autowired": false, "secret": false, "description": "The query to execute. Deprecation note: Use header 'queryString' instead", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_QUERY_STRING_DEPRECATED" }, + "size": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The size of the response.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_SIZE" }, + "from": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The starting index of the response.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_FROM" }, + "solrClient": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "SolrClient", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The solr client to use for the request.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_SOLR_CLIENT" }, + "solrParams": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "SolrParams", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The solr parameters to use for the request.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_SOLR_PARAMS" }, + "deleteByQuery": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "For the delete instruction, interprete body as query\/queries instead of id\/ids.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_DELETE_BY_QUERY" }, + "Content-Type": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The content type is used to identify the type when inserting files.", "constantName": "org.apache.camel.component.solr.SolrConstants#PARAM_CONTENT_TYPE" } }, "properties": { - "url": { "index": 0, "kind": "path", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Hostname and port for the Solr server(s). Multiple hosts can be specified, separated with a comma. See the solrC [...] - "autoCommit": { "index": 1, "kind": "parameter", "displayName": "Auto Commit", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "If true, each producer operation will be automatically followed by a commit" }, - "connectionTimeout": { "index": 2, "kind": "parameter", "displayName": "Connection Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets the connection timeout on the SolrClient" }, - "defaultMaxConnectionsPerHost": { "index": 3, "kind": "parameter", "displayName": "Default Max Connections Per Host", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "maxConnectionsPerHost on the underlying HttpConnectionManager" }, - "httpClient": { "index": 4, "kind": "parameter", "displayName": "Http Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.http.client.HttpClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets the http client to be used by the solrClient. This is only applicable when solrClient is not [...] - "maxRetries": { "index": 5, "kind": "parameter", "displayName": "Max Retries", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Maximum number of retries to attempt in the event of transient errors" }, - "maxTotalConnections": { "index": 6, "kind": "parameter", "displayName": "Max Total Connections", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "maxTotalConnection on the underlying HttpConnectionManager" }, - "requestHandler": { "index": 7, "kind": "parameter", "displayName": "Request Handler", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Set the request handler to be used" }, - "solrClient": { "index": 8, "kind": "parameter", "displayName": "Solr Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.solr.client.solrj.SolrClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Uses the provided solr client to connect to solr. When this parameter is not specified, cam [...] - "soTimeout": { "index": 9, "kind": "parameter", "displayName": "So Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets the socket timeout on the SolrClient" }, - "streamingQueueSize": { "index": 10, "kind": "parameter", "displayName": "Streaming Queue Size", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets the queue size for the ConcurrentUpdateSolrClient" }, - "streamingThreadCount": { "index": 11, "kind": "parameter", "displayName": "Streaming Thread Count", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets the number of threads for the ConcurrentUpdateSolrClient" }, - "lazyStartProducer": { "index": 12, "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 produ [...] - "collection": { "index": 13, "kind": "parameter", "displayName": "Collection", "group": "CloudSolrClient", "label": "CloudSolrClient", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Set the default collection for SolrCloud" }, - "zkChroot": { "index": 14, "kind": "parameter", "displayName": "Zk Chroot", "group": "CloudSolrClient", "label": "CloudSolrClient", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Set the chroot of the zookeeper connection (include the leading slash; e.g. '\/mychroot')" }, - "zkHost": { "index": 15, "kind": "parameter", "displayName": "Zk Host", "group": "CloudSolrClient", "label": "CloudSolrClient", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Set the ZooKeeper host(s) urls which the CloudSolrClient uses, e.g. zkHost=localhost:2181,localhost [...] - "allowCompression": { "index": 16, "kind": "parameter", "displayName": "Allow Compression", "group": "HttpSolrClient", "label": "HttpSolrClient", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Server side must support gzip or deflate for this to have any effect" }, - "followRedirects": { "index": 17, "kind": "parameter", "displayName": "Follow Redirects", "group": "HttpSolrClient", "label": "HttpSolrClient", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Indicates whether redirects are used to get to the Solr server" }, - "password": { "index": 18, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets password for basic auth plugin enabled servers" }, - "username": { "index": 19, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "solrConfiguration", "description": "Sets username for basic auth plugin enabled servers" } + "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The solr instance host name (set to 'default' to use the host name defined on component level)" }, + "port": { "index": 1, "kind": "path", "displayName": "Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The solr instance port number" }, + "async": { "index": 2, "kind": "parameter", "displayName": "Async", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Use async request processing (when supported by the solr client)" }, + "autoCommit": { "index": 3, "kind": "parameter", "displayName": "Auto Commit", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "If true, each producer insert\/delete operation will be automatically performing a commit" }, + "collection": { "index": 4, "kind": "parameter", "displayName": "Collection", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The name of the collection to act against" }, + "connectionTimeout": { "index": 5, "kind": "parameter", "displayName": "Connection Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The time in ms to wait before connection will time out." }, + "defaultMaxConnectionsPerHost": { "index": 6, "kind": "parameter", "displayName": "Default Max Connections Per Host", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "maxConnectionsPerHost on the underlying HttpConnectionManager" }, + "deleteByQuery": { "index": 7, "kind": "parameter", "displayName": "Delete By Query", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "For the delete instruction, interprete body as query\/queries instead of id\/ids." }, + "from": { "index": 8, "kind": "parameter", "displayName": "From", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Starting index of the response." }, + "httpClient": { "index": 9, "kind": "parameter", "displayName": "Http Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.net.http.HttpClient", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Sets the http client to be used by the solrClient. This is only applicable when solrClient is not set." }, + "maxRetries": { "index": 10, "kind": "parameter", "displayName": "Max Retries", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Maximum number of retries to attempt in the event of transient errors" }, + "maxTotalConnections": { "index": 11, "kind": "parameter", "displayName": "Max Total Connections", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "maxTotalConnection on the underlying HttpConnectionManager" }, + "operation": { "index": 12, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.solr.SolrOperation", "enum": [ "DELETE", "INSERT", "PING", "SEARCH" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "What operation to perform" }, + "requestHandler": { "index": 13, "kind": "parameter", "displayName": "Request Handler", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The path of the update request handler (use for update requests \/ set solr parameter qt for search requests)" }, + "requestTimeout": { "index": 14, "kind": "parameter", "displayName": "Request Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The time in ms to wait before the request will time out (former soTimeout)." }, + "size": { "index": 15, "kind": "parameter", "displayName": "Size", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Size of the response." }, + "solrClient": { "index": 16, "kind": "parameter", "displayName": "Solr Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.solr.client.solrj.SolrClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The solr client to connect to solr. When solrClient bean is provided, all connection propertie [...] + "soTimeout": { "index": 17, "kind": "parameter", "displayName": "So Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The time in ms to wait before the request will time out (former soTimeout)." }, + "streamingQueueSize": { "index": 18, "kind": "parameter", "displayName": "Streaming Queue Size", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Sets the queue size for the ConcurrentUpdateSolrClient" }, + "streamingThreadCount": { "index": 19, "kind": "parameter", "displayName": "Streaming Thread Count", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Sets the number of threads for the ConcurrentUpdateSolrClient" }, + "lazyStartProducer": { "index": 20, "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 produ [...] + "zkChroot": { "index": 21, "kind": "parameter", "displayName": "Zk Chroot", "group": "CloudSolrClient", "label": "CloudSolrClient", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Set the chroot of the zookeeper connection (include the leading slash; e.g. '\/mychroot')" }, + "zkHost": { "index": 22, "kind": "parameter", "displayName": "Zk Host", "group": "CloudSolrClient", "label": "CloudSolrClient", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Set the ZooKeeper host(s) urls which the CloudSolrClient uses, e.g. zkHost=localhost:2181,localhost:2182 [...] + "allowCompression": { "index": 23, "kind": "parameter", "displayName": "Allow Compression", "group": "HttpSolrClient", "label": "HttpSolrClient", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Server side must support gzip or deflate for this to have any effect" }, + "followRedirects": { "index": 24, "kind": "parameter", "displayName": "Follow Redirects", "group": "HttpSolrClient", "label": "HttpSolrClient", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": true, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Indicates whether redirects are used to get to the Solr server" }, + "certificatePath": { "index": 25, "kind": "parameter", "displayName": "Certificate Path", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "The certificate that can be used to access the [...] + "enableSSL": { "index": 26, "kind": "parameter", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Enable SSL" }, + "password": { "index": 27, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Password for authenticating" }, + "username": { "index": 28, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.solr.SolrConfiguration", "configurationField": "configuration", "description": "Basic authenticate user" } } } diff --git a/components-starter/camel-solr-starter/src/main/docs/solr.json b/components-starter/camel-solr-starter/src/main/docs/solr.json index deb1bdc7952..9947335be1a 100644 --- a/components-starter/camel-solr-starter/src/main/docs/solr.json +++ b/components-starter/camel-solr-starter/src/main/docs/solr.json @@ -20,23 +20,80 @@ "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration", "defaultValue": true }, + { + "name": "camel.component.solr.connection-timeout", + "type": "java.lang.Long", + "description": "The time in ms to wait before connection will time out.", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration", + "defaultValue": 60000 + }, { "name": "camel.component.solr.customizer.enabled", "type": "java.lang.Boolean", "sourceType": "org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon$CustomizerProperties" }, + { + "name": "camel.component.solr.default-collection", + "type": "java.lang.String", + "description": "Solr default collection name", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" + }, + { + "name": "camel.component.solr.enable-s-s-l", + "type": "java.lang.Boolean", + "description": "Enable SSL", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration", + "defaultValue": false + }, { "name": "camel.component.solr.enabled", "type": "java.lang.Boolean", "description": "Whether to enable auto configuration of the solr component. This is enabled by default.", "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" }, + { + "name": "camel.component.solr.host", + "type": "java.lang.String", + "description": "The solr instance host name", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" + }, { "name": "camel.component.solr.lazy-start-producer", "type": "java.lang.Boolean", "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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the [...] "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration", "defaultValue": false + }, + { + "name": "camel.component.solr.password", + "type": "java.lang.String", + "description": "Password for authenticating", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" + }, + { + "name": "camel.component.solr.port", + "type": "java.lang.Integer", + "description": "The solr instance port number", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" + }, + { + "name": "camel.component.solr.request-timeout", + "type": "java.lang.Long", + "description": "The timeout in ms to wait before the socket will time out.", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration", + "defaultValue": 600000 + }, + { + "name": "camel.component.solr.solr-client", + "type": "org.apache.solr.client.solrj.SolrClient", + "description": "To use an existing configured solr client, instead of creating a client per endpoint. This allows customizing the client with specific advanced settings. The option is a org.apache.solr.client.solrj.SolrClient type.", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" + }, + { + "name": "camel.component.solr.username", + "type": "java.lang.String", + "description": "Basic authenticate user", + "sourceType": "org.apache.camel.component.solr.springboot.SolrComponentConfiguration" } ], "hints": [] diff --git a/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentAutoConfiguration.java b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentAutoConfiguration.java index f1a721ecbd4..36ca325b137 100644 --- a/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentAutoConfiguration.java +++ b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentAutoConfiguration.java @@ -42,7 +42,7 @@ import org.springframework.context.annotation.Lazy; @Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class) @EnableConfigurationProperties({ComponentConfigurationProperties.class,SolrComponentConfiguration.class}) @ConditionalOnHierarchicalProperties({"camel.component", "camel.component.solr"}) -@AutoConfigureAfter(CamelAutoConfiguration.class) +@AutoConfigureAfter({CamelAutoConfiguration.class, SolrComponentConverter.class}) public class SolrComponentAutoConfiguration { @Autowired diff --git a/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConfiguration.java b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConfiguration.java index 01328807743..9258053a9e7 100644 --- a/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConfiguration.java +++ b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConfiguration.java @@ -17,6 +17,7 @@ package org.apache.camel.component.solr.springboot; import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon; +import org.apache.solr.client.solrj.SolrClient; import org.springframework.boot.context.properties.ConfigurationProperties; /** @@ -34,6 +35,18 @@ public class SolrComponentConfiguration * enabled by default. */ private Boolean enabled; + /** + * The time in ms to wait before connection will time out. + */ + private Long connectionTimeout = 60000L; + /** + * Solr default collection name + */ + private String defaultCollection; + /** + * The solr instance host name + */ + private String host; /** * Whether the producer should be started lazy (on the first message). By * starting lazy you can use this to allow CamelContext and routes to @@ -45,6 +58,14 @@ public class SolrComponentConfiguration * and prolong the total processing time of the processing. */ private Boolean lazyStartProducer = false; + /** + * The solr instance port number + */ + private Integer port; + /** + * The timeout in ms to wait before the socket will time out. + */ + private Long requestTimeout = 600000L; /** * Whether autowiring is enabled. This is used for automatic autowiring * options (the option must be marked as autowired) by looking up in the @@ -54,6 +75,48 @@ public class SolrComponentConfiguration * etc. */ private Boolean autowiredEnabled = true; + /** + * To use an existing configured solr client, instead of creating a client + * per endpoint. This allows customizing the client with specific advanced + * settings. The option is a org.apache.solr.client.solrj.SolrClient type. + */ + private SolrClient solrClient; + /** + * Enable SSL + */ + private Boolean enableSSL = false; + /** + * Password for authenticating + */ + private String password; + /** + * Basic authenticate user + */ + private String username; + + public Long getConnectionTimeout() { + return connectionTimeout; + } + + public void setConnectionTimeout(Long connectionTimeout) { + this.connectionTimeout = connectionTimeout; + } + + public String getDefaultCollection() { + return defaultCollection; + } + + public void setDefaultCollection(String defaultCollection) { + this.defaultCollection = defaultCollection; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } public Boolean getLazyStartProducer() { return lazyStartProducer; @@ -63,6 +126,22 @@ public class SolrComponentConfiguration this.lazyStartProducer = lazyStartProducer; } + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public Long getRequestTimeout() { + return requestTimeout; + } + + public void setRequestTimeout(Long requestTimeout) { + this.requestTimeout = requestTimeout; + } + public Boolean getAutowiredEnabled() { return autowiredEnabled; } @@ -70,4 +149,36 @@ public class SolrComponentConfiguration public void setAutowiredEnabled(Boolean autowiredEnabled) { this.autowiredEnabled = autowiredEnabled; } + + public SolrClient getSolrClient() { + return solrClient; + } + + public void setSolrClient(SolrClient solrClient) { + this.solrClient = solrClient; + } + + public Boolean getEnableSSL() { + return enableSSL; + } + + public void setEnableSSL(Boolean enableSSL) { + this.enableSSL = enableSSL; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } } \ No newline at end of file diff --git a/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConverter.java b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConverter.java new file mode 100644 index 00000000000..51c1fd14f7a --- /dev/null +++ b/components-starter/camel-solr-starter/src/main/java/org/apache/camel/component/solr/springboot/SolrComponentConverter.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.solr.springboot; + +import java.util.LinkedHashSet; +import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationPropertiesBinding; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.convert.TypeDescriptor; +import org.springframework.core.convert.converter.GenericConverter; +import org.springframework.stereotype.Component; + +/** + * Generated by camel-package-maven-plugin - do not edit this file! + */ +@Configuration(proxyBeanMethods = false) +@ConfigurationPropertiesBinding +@Component +public class SolrComponentConverter implements GenericConverter { + + @Autowired + private ApplicationContext applicationContext; + + public Set<ConvertiblePair> getConvertibleTypes() { + Set<ConvertiblePair> answer = new LinkedHashSet<>(); + answer.add(new ConvertiblePair(String.class, org.apache.solr.client.solrj.SolrClient.class)); + return answer; + } + + public Object convert( + Object source, + TypeDescriptor sourceType, + TypeDescriptor targetType) { + if (source == null) { + return null; + } + String ref = source.toString(); + if (!ref.startsWith("#")) { + return null; + } + ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1); + switch (targetType.getName()) { + case "org.apache.solr.client.solrj.SolrClient": return applicationContext.getBean(ref, org.apache.solr.client.solrj.SolrClient.class); + } + return null; + } +} \ No newline at end of file diff --git a/components-starter/camel-solr-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/components-starter/camel-solr-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f53e13c5dea..2ee4fdcaedb 100644 --- a/components-starter/camel-solr-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/components-starter/camel-solr-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -15,4 +15,5 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -org.apache.camel.component.solr.springboot.SolrComponentAutoConfiguration \ No newline at end of file +org.apache.camel.component.solr.springboot.SolrComponentAutoConfiguration +org.apache.camel.component.solr.springboot.SolrComponentConverter