This is an automated email from the ASF dual-hosted git repository.

oscerd pushed a commit to branch fix/CAMEL-23446
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f3842d149eb9b711fc4a659955692782a2cfba1c
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Jun 11 10:49:19 2026 +0200

    CAMEL-23446: camel-solr - Add SSLContextParameters support for TLS 
configuration
    
    Add SSLContextParameters support to camel-solr so TLS can be configured
    with fine-grained control (named groups, signature schemes, cipher suites
    and protocols), e.g. post-quantum named groups such as X25519MLKEM768 on
    JDK 25+. SolrComponent now implements SSLContextParametersAware with a
    global SSLContextParameters fallback, and SolrEndpoint builds the
    SSLContext from SSLContextParameters when configured, keeping the existing
    certificatePath (CA-only) path as a fallback.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../org/apache/camel/catalog/components/solr.json  |   7 +-
 .../component/solr/SolrComponentConfigurer.java    |  12 ++
 .../component/solr/SolrEndpointConfigurer.java     |   6 +
 .../component/solr/SolrEndpointUriFactory.java     |   3 +-
 .../org/apache/camel/component/solr/solr.json      |   7 +-
 .../apache/camel/component/solr/SolrComponent.java |  38 ++++++-
 .../camel/component/solr/SolrConfiguration.java    |  16 +++
 .../apache/camel/component/solr/SolrEndpoint.java  |  20 +++-
 .../solr/SolrSslContextParametersTest.java         | 121 +++++++++++++++++++++
 .../component/dsl/SolrComponentBuilderFactory.java |  36 ++++++
 .../endpoint/dsl/SolrEndpointBuilderFactory.java   |  36 ++++++
 11 files changed, 295 insertions(+), 7 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/solr.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/solr.json
index 0d901e133223..623455d38f80 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/solr.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/solr.json
@@ -34,7 +34,9 @@
     "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, "security": "secret", "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, "security": "secret", "description": "Basic authenticate user" }
+    "sslContextParameters": { "index": 10, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "description": "To configure security 
using SSLContextParameters. When configured, this takes precedence over the 
certificatePath option." },
+    "useGlobalSslContextParameters": { "index": 11, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Enable usage of global SSL context 
parameters." },
+    "username": { "index": 12, "kind": "property", "displayName": "Username", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "description": "Basic authenticate user" }
   },
   "headers": {
     "CamelSolrOperation": { "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" },
@@ -66,6 +68,7 @@
     "certificatePath": { "index": 15, "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": 16, "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": 17, "kind": "parameter", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Password for authenticating" },
-    "username": { "index": 18, "kind": "parameter", "displayName": "Username", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Basic authenticate user" }
+    "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "To configure security using 
SSLContextParameters. When [...]
+    "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, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Basic authenticate user" }
   }
 }
diff --git 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrComponentConfigurer.java
 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrComponentConfigurer.java
index 54c32b57f062..2a8b72a9331c 100644
--- 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrComponentConfigurer.java
+++ 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrComponentConfigurer.java
@@ -40,6 +40,10 @@ public class SolrComponentConfigurer extends 
PropertyConfigurerSupport implement
         case "requestTimeout": target.setRequestTimeout(property(camelContext, 
long.class, value)); return true;
         case "solrclient":
         case "solrClient": target.setSolrClient(property(camelContext, 
org.apache.solr.client.solrj.SolrClient.class, value)); return true;
+        case "sslcontextparameters":
+        case "sslContextParameters": 
target.setSslContextParameters(property(camelContext, 
org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
+        case "useglobalsslcontextparameters":
+        case "useGlobalSslContextParameters": 
target.setUseGlobalSslContextParameters(property(camelContext, boolean.class, 
value)); return true;
         case "username": target.setUsername(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
@@ -70,6 +74,10 @@ public class SolrComponentConfigurer extends 
PropertyConfigurerSupport implement
         case "requestTimeout": return long.class;
         case "solrclient":
         case "solrClient": return 
org.apache.solr.client.solrj.SolrClient.class;
+        case "sslcontextparameters":
+        case "sslContextParameters": return 
org.apache.camel.support.jsse.SSLContextParameters.class;
+        case "useglobalsslcontextparameters":
+        case "useGlobalSslContextParameters": return boolean.class;
         case "username": return java.lang.String.class;
         default: return null;
         }
@@ -96,6 +104,10 @@ public class SolrComponentConfigurer extends 
PropertyConfigurerSupport implement
         case "requestTimeout": return target.getRequestTimeout();
         case "solrclient":
         case "solrClient": return target.getSolrClient();
+        case "sslcontextparameters":
+        case "sslContextParameters": return target.getSslContextParameters();
+        case "useglobalsslcontextparameters":
+        case "useGlobalSslContextParameters": return 
target.isUseGlobalSslContextParameters();
         case "username": return target.getUsername();
         default: return null;
         }
diff --git 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointConfigurer.java
 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointConfigurer.java
index 2226a1be21cb..86d9b996cb4e 100644
--- 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointConfigurer.java
+++ 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointConfigurer.java
@@ -47,6 +47,8 @@ public class SolrEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "size": target.getConfiguration().setSize(property(camelContext, 
java.lang.Integer.class, value)); return true;
         case "solrclient":
         case "solrClient": 
target.getConfiguration().setSolrClient(property(camelContext, 
org.apache.solr.client.solrj.SolrClient.class, value)); return true;
+        case "sslcontextparameters":
+        case "sslContextParameters": 
target.getConfiguration().setSslContextParameters(property(camelContext, 
org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
         case "username": 
target.getConfiguration().setUsername(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
@@ -79,6 +81,8 @@ public class SolrEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "size": return java.lang.Integer.class;
         case "solrclient":
         case "solrClient": return 
org.apache.solr.client.solrj.SolrClient.class;
+        case "sslcontextparameters":
+        case "sslContextParameters": return 
org.apache.camel.support.jsse.SSLContextParameters.class;
         case "username": return java.lang.String.class;
         default: return null;
         }
@@ -112,6 +116,8 @@ public class SolrEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "size": return target.getConfiguration().getSize();
         case "solrclient":
         case "solrClient": return target.getConfiguration().getSolrClient();
+        case "sslcontextparameters":
+        case "sslContextParameters": return 
target.getConfiguration().getSslContextParameters();
         case "username": return target.getConfiguration().getUsername();
         default: return null;
         }
diff --git 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointUriFactory.java
 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointUriFactory.java
index df5b1f565922..661e82dff6eb 100644
--- 
a/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointUriFactory.java
+++ 
b/components/camel-solr/src/generated/java/org/apache/camel/component/solr/SolrEndpointUriFactory.java
@@ -24,7 +24,7 @@ public class SolrEndpointUriFactory extends 
org.apache.camel.support.component.E
     private static final Set<String> ENDPOINT_IDENTITY_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(19);
+        Set<String> props = new HashSet<>(20);
         props.add("async");
         props.add("autoCommit");
         props.add("basePath");
@@ -43,6 +43,7 @@ public class SolrEndpointUriFactory extends 
org.apache.camel.support.component.E
         props.add("requestTimeout");
         props.add("size");
         props.add("solrClient");
+        props.add("sslContextParameters");
         props.add("username");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
         Set<String> secretProps = new HashSet<>(2);
diff --git 
a/components/camel-solr/src/generated/resources/META-INF/org/apache/camel/component/solr/solr.json
 
b/components/camel-solr/src/generated/resources/META-INF/org/apache/camel/component/solr/solr.json
index 0d901e133223..623455d38f80 100644
--- 
a/components/camel-solr/src/generated/resources/META-INF/org/apache/camel/component/solr/solr.json
+++ 
b/components/camel-solr/src/generated/resources/META-INF/org/apache/camel/component/solr/solr.json
@@ -34,7 +34,9 @@
     "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, "security": "secret", "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, "security": "secret", "description": "Basic authenticate user" }
+    "sslContextParameters": { "index": 10, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "description": "To configure security 
using SSLContextParameters. When configured, this takes precedence over the 
certificatePath option." },
+    "useGlobalSslContextParameters": { "index": 11, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Enable usage of global SSL context 
parameters." },
+    "username": { "index": 12, "kind": "property", "displayName": "Username", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "description": "Basic authenticate user" }
   },
   "headers": {
     "CamelSolrOperation": { "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" },
@@ -66,6 +68,7 @@
     "certificatePath": { "index": 15, "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": 16, "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": 17, "kind": "parameter", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Password for authenticating" },
-    "username": { "index": 18, "kind": "parameter", "displayName": "Username", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Basic authenticate user" }
+    "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "To configure security using 
SSLContextParameters. When [...]
+    "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, "security": "secret", "configurationClass": 
"org.apache.camel.component.solr.SolrConfiguration", "configurationField": 
"configuration", "description": "Basic authenticate user" }
   }
 }
diff --git 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrComponent.java
 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrComponent.java
index 027a91cf7674..4723dcc52e95 100644
--- 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrComponent.java
+++ 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrComponent.java
@@ -20,16 +20,18 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.solr.client.solrj.SolrClient;
 
 /**
  * Represents the component that manages {@link SolrEndpoint}.
  */
 @Component("solr")
-public class SolrComponent extends DefaultComponent {
+public class SolrComponent extends DefaultComponent implements 
SSLContextParametersAware {
 
     @Metadata(label = "advanced", autowired = true)
     private SolrClient solrClient;
@@ -49,6 +51,10 @@ public class SolrComponent extends DefaultComponent {
     private String password;
     @Metadata(label = "security")
     private boolean enableSSL;
+    @Metadata(label = "security")
+    private SSLContextParameters sslContextParameters;
+    @Metadata(label = "security", defaultValue = "false")
+    private boolean useGlobalSslContextParameters;
 
     public SolrComponent() {
         this(null);
@@ -70,11 +76,16 @@ public class SolrComponent extends DefaultComponent {
         config.setEnableSSL(this.isEnableSSL());
         config.setUsername(this.getUsername());
         config.setPassword(this.getPassword());
+        config.setSslContextParameters(this.getSslContextParameters());
         config.configure(uri);
 
         Endpoint endpoint = new SolrEndpoint(uri, this, config);
         setProperties(endpoint, parameters);
 
+        if (config.getSslContextParameters() == null) {
+            
config.setSslContextParameters(retrieveGlobalSslContextParameters());
+        }
+
         // add collection from solrclient if it is not yet defined
         //     while it might be set on the solr client that could be set from 
parameters
         if (config.getCollection() == null && config.getSolrClient() != null) {
@@ -184,4 +195,29 @@ public class SolrComponent extends DefaultComponent {
         this.enableSSL = enableSSL;
     }
 
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    /**
+     * To configure security using SSLContextParameters. When configured, this 
takes precedence over the
+     * {@code certificatePath} option.
+     */
+    public void setSslContextParameters(SSLContextParameters 
sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    @Override
+    public boolean isUseGlobalSslContextParameters() {
+        return useGlobalSslContextParameters;
+    }
+
+    /**
+     * Enable usage of global SSL context parameters.
+     */
+    @Override
+    public void setUseGlobalSslContextParameters(boolean 
useGlobalSslContextParameters) {
+        this.useGlobalSslContextParameters = useGlobalSslContextParameters;
+    }
+
 }
diff --git 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConfiguration.java
 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConfiguration.java
index 5c278f416fc6..ce57eb2360d9 100644
--- 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConfiguration.java
+++ 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrConfiguration.java
@@ -24,6 +24,7 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.solr.client.solrj.SolrClient;
 
@@ -60,6 +61,8 @@ public class SolrConfiguration {
     @UriParam(label = "security")
     @Metadata(supportFileReference = true)
     private String certificatePath;
+    @UriParam(label = "security")
+    private SSLContextParameters sslContextParameters;
     @UriParam
     private Long requestTimeout;
     @UriParam
@@ -311,6 +314,19 @@ public class SolrConfiguration {
         this.certificatePath = certificatePath;
     }
 
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    /**
+     * To configure security using SSLContextParameters. When configured, this 
takes precedence over the
+     * {@code certificatePath} option. This allows configuring named groups, 
signature schemes, cipher suites, and
+     * protocols for the TLS connection.
+     */
+    public void setSslContextParameters(SSLContextParameters 
sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
     /**
      * The time in ms to wait before connection will time out.
      */
diff --git 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
index 2ff1e0ec4376..f5f2fd66dd88 100644
--- 
a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
+++ 
b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
@@ -35,6 +35,7 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.support.ResourceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
@@ -136,7 +137,9 @@ public class SolrEndpoint extends DefaultEndpoint 
implements EndpointServiceLoca
         if (ObjectHelper.isNotEmpty(configuration.getUsername()) && 
ObjectHelper.isNotEmpty(configuration.getPassword())) {
             builder.withBasicAuthCredentials(configuration.getUsername(), 
configuration.getPassword());
         }
-        if (ObjectHelper.isNotEmpty(configuration.getCertificatePath())) {
+        if (configuration.getSslContextParameters() != null) {
+            builder.withSSLContext(createSslContext(getCamelContext(), 
configuration.getSslContextParameters()));
+        } else if 
(ObjectHelper.isNotEmpty(configuration.getCertificatePath())) {
             builder.withSSLContext(createSslContextFromCa(getCamelContext(), 
configuration.getCertificatePath()));
         }
         if (configuration.getCollection() != null) {
@@ -152,6 +155,21 @@ public class SolrEndpoint extends DefaultEndpoint 
implements EndpointServiceLoca
         return configuration.isAsync();
     }
 
+    /**
+     * An SSL context based on the provided {@link SSLContextParameters}. 
Using SSLContextParameters allows fine-grained
+     * TLS configuration such as named groups, signature schemes, cipher 
suites and protocols (e.g. for post-quantum
+     * readiness on JDK 25+).
+     *
+     * @return a customized SSL Context
+     */
+    private static SSLContext createSslContext(CamelContext camelContext, 
SSLContextParameters sslContextParameters) {
+        try {
+            return sslContextParameters.createSSLContext(camelContext);
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to create SSLContext from 
SSLContextParameters", e);
+        }
+    }
+
     /**
      * An SSL context based on the self-signed CA, so that using this SSL 
Context allows to connect to the solr instance
      *
diff --git 
a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrSslContextParametersTest.java
 
b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrSslContextParametersTest.java
new file mode 100644
index 000000000000..a4c65e8259ba
--- /dev/null
+++ 
b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrSslContextParametersTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.support.jsse.SSLContextParameters;
+import org.apache.solr.client.solrj.SolrClient;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class SolrSslContextParametersTest {
+
+    private static final String SOLR_URI = "solr://localhost:8983";
+
+    @Test
+    public void configurationPropertyRoundTrip() {
+        SolrConfiguration configuration = new SolrConfiguration();
+        assertNull(configuration.getSslContextParameters(),
+                "SSLContextParameters should be null by default");
+
+        SSLContextParameters sslContextParameters = new SSLContextParameters();
+        configuration.setSslContextParameters(sslContextParameters);
+        assertSame(sslContextParameters, 
configuration.getSslContextParameters(),
+                "Getter should return the value set via setter");
+    }
+
+    @Test
+    public void componentPropagatesSslContextParametersToEndpoint() throws 
Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            context.start();
+
+            SSLContextParameters sslContextParameters = new 
SSLContextParameters();
+            SolrComponent component = new SolrComponent(context);
+            component.setSslContextParameters(sslContextParameters);
+            context.addComponent("solr", component);
+
+            SolrEndpoint endpoint = context.getEndpoint(SOLR_URI, 
SolrEndpoint.class);
+            assertNotNull(endpoint);
+            assertSame(sslContextParameters, 
endpoint.getConfiguration().getSslContextParameters(),
+                    "Component-level SSLContextParameters must propagate to 
the endpoint configuration");
+        }
+    }
+
+    @Test
+    public void endpointUsesGlobalSslContextParametersWhenEnabled() throws 
Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            SSLContextParameters globalParameters = new SSLContextParameters();
+            context.setSSLContextParameters(globalParameters);
+            context.start();
+
+            SolrComponent component = new SolrComponent(context);
+            component.setUseGlobalSslContextParameters(true);
+            context.addComponent("solr", component);
+
+            SolrEndpoint endpoint = context.getEndpoint(SOLR_URI, 
SolrEndpoint.class);
+            assertNotNull(endpoint);
+            assertTrue(component.isUseGlobalSslContextParameters());
+            assertSame(globalParameters, 
endpoint.getConfiguration().getSslContextParameters(),
+                    "Global SSLContextParameters must be used when 
useGlobalSslContextParameters is true");
+        }
+    }
+
+    @Test
+    public void explicitSslContextParametersWinOverGlobal() throws Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            SSLContextParameters globalParameters = new SSLContextParameters();
+            context.setSSLContextParameters(globalParameters);
+            context.start();
+
+            SSLContextParameters explicitParameters = new 
SSLContextParameters();
+            SolrComponent component = new SolrComponent(context);
+            component.setUseGlobalSslContextParameters(true);
+            component.setSslContextParameters(explicitParameters);
+            context.addComponent("solr", component);
+
+            SolrEndpoint endpoint = context.getEndpoint(SOLR_URI, 
SolrEndpoint.class);
+            assertNotNull(endpoint);
+            assertSame(explicitParameters, 
endpoint.getConfiguration().getSslContextParameters(),
+                    "Component-level SSLContextParameters must win over the 
global one");
+        }
+    }
+
+    @Test
+    public void createSolrClientAppliesSslContextParameters() throws Exception 
{
+        try (CamelContext context = new DefaultCamelContext()) {
+            context.start();
+
+            SSLContextParameters sslContextParameters = new 
SSLContextParameters();
+            SolrComponent component = new SolrComponent(context);
+            component.setSslContextParameters(sslContextParameters);
+            context.addComponent("solr", component);
+
+            SolrEndpoint endpoint = context.getEndpoint(SOLR_URI, 
SolrEndpoint.class);
+            assertSame(sslContextParameters, 
endpoint.getConfiguration().getSslContextParameters());
+
+            // building the client must succeed with the SSLContext derived 
from SSLContextParameters
+            try (SolrClient client = endpoint.createSolrClient()) {
+                assertNotNull(client, "SolrClient should be built using the 
configured SSLContextParameters");
+            }
+        }
+    }
+}
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SolrComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SolrComponentBuilderFactory.java
index 94ef2e2bef5e..2c71f0638b62 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SolrComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SolrComponentBuilderFactory.java
@@ -227,6 +227,40 @@ public interface SolrComponentBuilderFactory {
             return this;
         }
     
+        /**
+         * To configure security using SSLContextParameters. When configured,
+         * this takes precedence over the certificatePath option.
+         * 
+         * The option is a:
+         * 
&lt;code&gt;org.apache.camel.support.jsse.SSLContextParameters&lt;/code&gt; 
type.
+         * 
+         * Group: security
+         * 
+         * @param sslContextParameters the value to set
+         * @return the dsl builder
+         */
+        default SolrComponentBuilder 
sslContextParameters(org.apache.camel.support.jsse.SSLContextParameters 
sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+    
+        
+        /**
+         * Enable usage of global SSL context parameters.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useGlobalSslContextParameters the value to set
+         * @return the dsl builder
+         */
+        default SolrComponentBuilder useGlobalSslContextParameters(boolean 
useGlobalSslContextParameters) {
+            doSetProperty("useGlobalSslContextParameters", 
useGlobalSslContextParameters);
+            return this;
+        }
+    
         /**
          * Basic authenticate user.
          * 
@@ -266,6 +300,8 @@ public interface SolrComponentBuilderFactory {
             case "solrClient": ((SolrComponent) 
component).setSolrClient((org.apache.solr.client.solrj.SolrClient) value); 
return true;
             case "enableSSL": ((SolrComponent) 
component).setEnableSSL((boolean) value); return true;
             case "password": ((SolrComponent) 
component).setPassword((java.lang.String) value); return true;
+            case "sslContextParameters": ((SolrComponent) 
component).setSslContextParameters((org.apache.camel.support.jsse.SSLContextParameters)
 value); return true;
+            case "useGlobalSslContextParameters": ((SolrComponent) 
component).setUseGlobalSslContextParameters((boolean) value); return true;
             case "username": ((SolrComponent) 
component).setUsername((java.lang.String) value); return true;
             default: return false;
             }
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SolrEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SolrEndpointBuilderFactory.java
index 1dc5fac39fe1..1cafa420cff6 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SolrEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SolrEndpointBuilderFactory.java
@@ -376,6 +376,42 @@ public interface SolrEndpointBuilderFactory {
             doSetProperty("password", password);
             return this;
         }
+        /**
+         * To configure security using SSLContextParameters. When configured,
+         * this takes precedence over the certificatePath option. This allows
+         * configuring named groups, signature schemes, cipher suites, and
+         * protocols for the TLS connection.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> 
type.
+         * 
+         * Group: security
+         * 
+         * @param sslContextParameters the value to set
+         * @return the dsl builder
+         */
+        default SolrEndpointBuilder 
sslContextParameters(org.apache.camel.support.jsse.SSLContextParameters 
sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * To configure security using SSLContextParameters. When configured,
+         * this takes precedence over the certificatePath option. This allows
+         * configuring named groups, signature schemes, cipher suites, and
+         * protocols for the TLS connection.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> 
type.
+         * 
+         * Group: security
+         * 
+         * @param sslContextParameters the value to set
+         * @return the dsl builder
+         */
+        default SolrEndpointBuilder sslContextParameters(String 
sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
         /**
          * Basic authenticate user.
          * 


Reply via email to