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

jono 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 687bc201c3e CAMEL-20019: add platform http vertx cookie handler 
(#13301)
687bc201c3e is described below

commit 687bc201c3ebd9524060ba0c0c8ef10f0a57163b
Author: Jono Morris <[email protected]>
AuthorDate: Wed Feb 28 01:12:12 2024 +1300

    CAMEL-20019: add platform http vertx cookie handler (#13301)
---
 .../camel/catalog/components/platform-http.json    |  29 ++-
 .../http/vertx/VertxPlatformHttpConsumer.java      |  56 +++++
 .../http/vertx/VertxPlatformHttpCookieTest.java    | 264 +++++++++++++++++++++
 .../http/PlatformHttpEndpointConfigurer.java       |  42 ++++
 .../http/PlatformHttpEndpointUriFactory.java       |   9 +-
 .../http/cookie/CookieConfigurationConfigurer.java |  96 ++++++++
 .../component/platform/http/platform-http.json     |  29 ++-
 ...ponent.platform.http.cookie.CookieConfiguration |   2 +
 .../platform/http/PlatformHttpEndpoint.java        |  26 ++
 .../platform/http/cookie/CookieConfiguration.java  | 221 +++++++++++++++++
 .../platform/http/cookie/CookieHandler.java        |  47 ++++
 .../ROOT/pages/camel-4x-upgrade-guide-4_5.adoc     |  21 ++
 .../dsl/PlatformHttpEndpointBuilderFactory.java    | 198 ++++++++++++++++
 .../camel/kotlin/components/PlatformHttpUriDsl.kt  |  45 ++++
 14 files changed, 1062 insertions(+), 23 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/platform-http.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/platform-http.json
index e856c6a695c..0a784762006 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/platform-http.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/platform-http.json
@@ -30,16 +30,23 @@
   "properties": {
     "path": { "index": 0, "kind": "path", "displayName": "Path", "group": 
"consumer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The path under which this endpoint 
serves the HTTP requests, for proxy use 'proxy'" },
     "consumes": { "index": 1, "kind": "parameter", "displayName": "Consumes", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint accepts as an 
input, such as application\/xml or application\/json. null or &#42;\/&#42; mean 
no restriction." },
-    "httpMethodRestrict": { "index": 2, "kind": "parameter", "displayName": 
"Http Method Restrict", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "A comma separated list of 
HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods 
will be served." },
-    "matchOnUriPrefix": { "index": 3, "kind": "parameter", "displayName": 
"Match On Uri Prefix", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether or not the consumer should try to find a target consumer by matching 
the URI prefix if no exact match is found." },
-    "muteException": { "index": 4, "kind": "parameter", "displayName": "Mute 
Exception", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "If enabled and an 
Exchange failed processing on the consumer side the response's body won't 
contain the exception's stack trace." },
-    "produces": { "index": 5, "kind": "parameter", "displayName": "Produces", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint produces, such 
as application\/xml or application\/json." },
-    "useStreaming": { "index": 6, "kind": "parameter", "displayName": "Use 
Streaming", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "Whether to use 
streaming for large requests and responses (currently only supported by 
camel-platform-http-vertx)" },
-    "bridgeErrorHandler": { "index": 7, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming  [...]
-    "exceptionHandler": { "index": 8, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By def [...]
-    "exchangePattern": { "index": 9, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "fileNameExtWhitelist": { "index": 10, "kind": "parameter", "displayName": 
"File Name Ext Whitelist", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "A comma or whitespace separated list of file extensions. 
Uploads having these extensions will be stored locally. Null value or asterisk 
() will allow all files." },
-    "headerFilterStrategy": { "index": 11, "kind": "parameter", "displayName": 
"Header Filter Strategy", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom HeaderFilterStrategy to 
filter headers to and from Camel message." },
-    "platformHttpEngine": { "index": 12, "kind": "parameter", "displayName": 
"Platform Http Engine", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.platform.http.spi.PlatformHttpEngine", 
"deprecated": false, "autowired": false, "secret": false, "description": "An 
HTTP Server engine implementation to serve the requests of this endpoint." }
+    "cookieDomain": { "index": 2, "kind": "parameter", "displayName": "Cookie 
Domain", "group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets which server 
can receive cookies." },
+    "cookieHttpOnly": { "index": 3, "kind": "parameter", "displayName": 
"Cookie Http Only", "group": "consumer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets whether to 
prevent client side scripts from accessing created coo [...]
+    "cookieMaxAge": { "index": 4, "kind": "parameter", "displayName": "Cookie 
Max Age", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets the maximum 
cookie age in seconds." },
+    "cookiePath": { "index": 5, "kind": "parameter", "displayName": "Cookie 
Path", "group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "\/", "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets the URL path 
that must exist in the requested URL in order to send  [...]
+    "cookieSameSite": { "index": 6, "kind": "parameter", "displayName": 
"Cookie Same Site", "group": "consumer", "label": "", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite",
 "enum": [ "STRICT", "LAX", "NONE" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "Lax", "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField" [...]
+    "cookieSecure": { "index": 7, "kind": "parameter", "displayName": "Cookie 
Secure", "group": "consumer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets whether the 
cookie is only sent to the server with an encrypted reques [...]
+    "httpMethodRestrict": { "index": 8, "kind": "parameter", "displayName": 
"Http Method Restrict", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "A comma separated list of 
HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods 
will be served." },
+    "matchOnUriPrefix": { "index": 9, "kind": "parameter", "displayName": 
"Match On Uri Prefix", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether or not the consumer should try to find a target consumer by matching 
the URI prefix if no exact match is found." },
+    "muteException": { "index": 10, "kind": "parameter", "displayName": "Mute 
Exception", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "If enabled and an 
Exchange failed processing on the consumer side the response's body won't 
contain the exception's stack trace." },
+    "produces": { "index": 11, "kind": "parameter", "displayName": "Produces", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint produces, such 
as application\/xml or application\/json." },
+    "useCookieHandler": { "index": 12, "kind": "parameter", "displayName": 
"Use Cookie Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether to enable the Cookie Handler that allows Cookie addition, expiry, and 
retrieval (currently only supported by camel-platform-http-vertx)" },
+    "useStreaming": { "index": 13, "kind": "parameter", "displayName": "Use 
Streaming", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "Whether to use 
streaming for large requests and responses (currently only supported by 
camel-platform-http-vertx)" },
+    "bridgeErrorHandler": { "index": 14, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 15, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 16, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "fileNameExtWhitelist": { "index": 17, "kind": "parameter", "displayName": 
"File Name Ext Whitelist", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "A comma or whitespace separated list of file extensions. 
Uploads having these extensions will be stored locally. Null value or asterisk 
() will allow all files." },
+    "headerFilterStrategy": { "index": 18, "kind": "parameter", "displayName": 
"Header Filter Strategy", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom HeaderFilterStrategy to 
filter headers to and from Camel message." },
+    "platformHttpEngine": { "index": 19, "kind": "parameter", "displayName": 
"Platform Http Engine", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.platform.http.spi.PlatformHttpEngine", 
"deprecated": false, "autowired": false, "secret": false, "description": "An 
HTTP Server engine implementation to serve the requests of this endpoint." }
   }
 }
diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
index 446811ae9ca..d7033a60af5 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
@@ -30,6 +30,8 @@ import io.vertx.core.Future;
 import io.vertx.core.Handler;
 import io.vertx.core.MultiMap;
 import io.vertx.core.Vertx;
+import io.vertx.core.http.Cookie;
+import io.vertx.core.http.CookieSameSite;
 import io.vertx.core.http.HttpMethod;
 import io.vertx.ext.auth.User;
 import io.vertx.ext.web.FileUpload;
@@ -46,6 +48,8 @@ import org.apache.camel.SuspendableService;
 import org.apache.camel.attachment.AttachmentMessage;
 import org.apache.camel.attachment.CamelFileDataSource;
 import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.component.platform.http.cookie.CookieConfiguration;
+import org.apache.camel.component.platform.http.cookie.CookieHandler;
 import org.apache.camel.component.platform.http.spi.Method;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.support.DefaultConsumer;
@@ -75,6 +79,7 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer implements Suspen
     private Route route;
     private VertxPlatformHttpRouter router;
     private HttpRequestBodyHandler httpRequestBodyHandler;
+    private CookieConfiguration cookieConfiguration;
 
     public VertxPlatformHttpConsumer(PlatformHttpEndpoint endpoint,
                                      Processor processor,
@@ -103,6 +108,9 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer implements Suspen
         } else {
             httpRequestBodyHandler = new 
DefaultHttpRequestBodyHandler(router.bodyHandler());
         }
+        if (getEndpoint().isUseCookieHandler()) {
+            cookieConfiguration = getEndpoint().getCookieConfiguration();
+        }
     }
 
     @Override
@@ -269,6 +277,9 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer implements Suspen
         if (user != null) {
             in.setHeader(VertxPlatformHttpConstants.AUTHENTICATED_USER, user);
         }
+        if (getEndpoint().isUseCookieHandler()) {
+            exchange.setProperty(Exchange.COOKIE_HANDLER, new 
VertxCookieHandler(ctx));
+        }
 
         return populateCamelMessage(ctx, exchange, in);
     }
@@ -335,4 +346,49 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer implements Suspen
             }
         }
     }
+
+    class VertxCookieHandler implements CookieHandler {
+
+        private RoutingContext routingContext;
+
+        VertxCookieHandler(RoutingContext routingContext) {
+            this.routingContext = routingContext;
+        }
+
+        @Override
+        public void addCookie(String name, String value) {
+            Cookie cookie = Cookie.cookie(name, value)
+                    .setPath(cookieConfiguration.getCookiePath())
+                    .setDomain(cookieConfiguration.getCookieDomain())
+                    .setSecure(cookieConfiguration.isCookieSecure())
+                    .setHttpOnly(cookieConfiguration.isCookieHttpOnly())
+                    
.setSameSite(getSameSite(cookieConfiguration.getCookieSameSite()));
+            if (cookieConfiguration.getCookieMaxAge() != null) {
+                cookie.setMaxAge(cookieConfiguration.getCookieMaxAge());
+            }
+            routingContext.response().addCookie(cookie);
+        }
+
+        private CookieSameSite getSameSite(CookieConfiguration.CookieSameSite 
sameSite) {
+            for (CookieSameSite css : CookieSameSite.values()) {
+                // 'Strict', 'Lax', or 'None'
+                if (css.toString().equals(sameSite.getValue())) {
+                    return css;
+                }
+            }
+            return null;
+        }
+
+        @Override
+        public String removeCookie(String name) {
+            Cookie cookie = routingContext.response().removeCookie(name);
+            return cookie == null ? null : cookie.getValue();
+        }
+
+        @Override
+        public String getCookieValue(String name) {
+            Cookie cookie = routingContext.request().getCookie(name);
+            return cookie == null ? null : cookie.getValue();
+        }
+    }
 }
diff --git 
a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
 
b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
new file mode 100644
index 00000000000..b042fed5094
--- /dev/null
+++ 
b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
@@ -0,0 +1,264 @@
+/*
+ * 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.platform.http.vertx;
+
+import io.restassured.RestAssured;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.platform.http.cookie.CookieConfiguration;
+import org.apache.camel.component.platform.http.cookie.CookieHandler;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.AvailablePortFinder;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static io.restassured.matcher.RestAssuredMatchers.detailedCookie;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.notNullValue;
+
+public class VertxPlatformHttpCookieTest {
+
+    // add a cookie using the default cookie configuration
+    @Test
+    public void testAddCookie() throws Exception {
+        CamelContext context = createCamelContext();
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    from("platform-http:/add?useCookieHandler=true")
+                            .process(exchange -> {
+                                getCookieHandler(exchange).addCookie("foo", 
"bar");
+                            })
+                            .setBody().constant("add");
+                }
+            });
+            context.start();
+
+            given()
+                    .when()
+                    .get("/add")
+                    .then()
+                    .statusCode(200)
+                    .cookie("foo",
+                            detailedCookie()
+                                    .value("bar")
+                                    .path(CookieConfiguration.DEFAULT_PATH)
+                                    .domain((String) null)
+                                    
.sameSite(CookieConfiguration.DEFAULT_SAME_SITE.getValue()))
+                    .body(equalTo("add"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    // add a cookie with specified CookieConfiguration properties
+    @Test
+    public void testAddCookieCustomConfiguration() throws Exception {
+        CamelContext context = createCamelContext();
+        long cookieMaxAge = 60L * 60 * 24 * 7; // 1 week
+        context.getRegistry().bind("cookieConfiguration",
+                new CookieConfiguration.Builder()
+                        .setPath("/testpath")
+                        .setDomain("apache.org")
+                        .setHttpOnly(true)
+                        .setSecure(true)
+                        .setMaxAge(cookieMaxAge)
+                        .setSameSite(CookieConfiguration.CookieSameSite.STRICT)
+                        .build());
+
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    
from("platform-http:/add/custom?useCookieHandler=true&cookieConfiguration=#cookieConfiguration")
+                            .process(exchange -> {
+                                getCookieHandler(exchange).addCookie("foo", 
"bar");
+                            })
+                            .setBody().constant("add-custom");
+                }
+            });
+            context.start();
+
+            given()
+                    .when()
+                    .get("/add/custom")
+                    .then()
+                    .statusCode(200)
+                    .cookie("foo",
+                            detailedCookie()
+                                    .value("bar")
+                                    .path("/testpath")
+                                    .domain("apache.org")
+                                    .secured(true)
+                                    .httpOnly(true)
+                                    .maxAge(cookieMaxAge)
+                                    .sameSite("Strict"))
+                    .body(equalTo("add-custom"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    // get a cookie value from the cookieJar
+    @Test
+    public void testGetCookieValue() throws Exception {
+        CamelContext context = createCamelContext();
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    from("platform-http:/get?useCookieHandler=true")
+                            .process(exchange -> {
+                                // write cookie name/value as a header so we 
can verify it was read
+                                String cookieName = "foo";
+                                String cookieVal = 
getCookieHandler(exchange).getCookieValue(cookieName);
+                                exchange.getMessage().setHeader(
+                                        "cookie_name_val", 
String.format("%s=%s", cookieName, cookieVal));
+                            })
+                            .setBody().constant("get");
+                }
+            });
+            context.start();
+
+            given()
+                    .header("cookie", "foo=bar")
+                    .when()
+                    .get("/get")
+                    .then()
+                    .statusCode(200)
+                    .header("cookie_name_val", "foo=bar") // verify cookie read
+                    .body(equalTo("get"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    // expire a cookie in the user-agent/producers cookieJar
+    @Test
+    public void testRemoveCookie() throws Exception {
+        CamelContext context = createCamelContext();
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    from("platform-http:/remove?useCookieHandler=true")
+                            .process(exchange -> {
+                                getCookieHandler(exchange).removeCookie("foo");
+                            })
+                            .setBody().constant("remove");
+                }
+            });
+            context.start();
+
+            given()
+                    .header("cookie", "foo=bar")
+                    .when()
+                    .get("/remove")
+                    .then()
+                    .statusCode(200)
+                    .cookie("foo",
+                            detailedCookie()
+                                    .maxAge(0)
+                                    .expiryDate(notNullValue()))
+                    .body(equalTo("remove"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    // attempt to expire a cookie that is not held in the cookieJar
+    @Test
+    public void testRemoveNoCookie() throws Exception {
+        CamelContext context = createCamelContext();
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    from("platform-http:/remove?useCookieHandler=true")
+                            .process(exchange -> {
+                                getCookieHandler(exchange).removeCookie("foo");
+                            })
+                            .setBody().constant("remove");
+                }
+            });
+            context.start();
+
+            given()
+                    .when()
+                    .get("/remove")
+                    .then()
+                    .statusCode(200)
+                    .header("foo-cookie", (String) null)
+                    .body(equalTo("remove"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    // replace a cookie held in the cookieJar
+    @Test
+    public void testReplaceCookie() throws Exception {
+        CamelContext context = createCamelContext();
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() {
+                    from("platform-http:/replace?useCookieHandler=true")
+                            .process(exchange -> {
+                                getCookieHandler(exchange)
+                                        .addCookie("XSRF-TOKEN", 
"88533580000c314");
+                            })
+                            .setBody().constant("replace");
+                }
+            });
+            context.start();
+
+            given()
+                    .header("XSRF-TOKEN", "c359b44aef83415")
+                    .when()
+                    .get("/replace")
+                    .then()
+                    .statusCode(200)
+                    .cookie("XSRF-TOKEN",
+                            detailedCookie()
+                                    .value("88533580000c314")
+                                    .path(CookieConfiguration.DEFAULT_PATH)
+                                    
.sameSite(CookieConfiguration.DEFAULT_SAME_SITE.getValue()))
+                    .body(equalTo("replace"));
+        } finally {
+            context.stop();
+        }
+    }
+
+    private CookieHandler getCookieHandler(Exchange exchange) {
+        return exchange.getProperty(Exchange.COOKIE_HANDLER, 
CookieHandler.class);
+    }
+
+    static CamelContext createCamelContext() throws Exception {
+        int port = AvailablePortFinder.getNextAvailable();
+        VertxPlatformHttpServerConfiguration conf = new 
VertxPlatformHttpServerConfiguration();
+        conf.setBindPort(port);
+
+        RestAssured.port = port;
+
+        CamelContext context = new DefaultCamelContext();
+        context.addService(new VertxPlatformHttpServer(conf));
+        return context;
+    }
+}
diff --git 
a/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointConfigurer.java
 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointConfigurer.java
index 6223fdd295b..fb7c6b4f55f 100644
--- 
a/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointConfigurer.java
+++ 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointConfigurer.java
@@ -24,6 +24,18 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
         case "consumes": target.setConsumes(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "cookiedomain":
+        case "cookieDomain": 
target.getCookieConfiguration().setCookieDomain(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "cookiehttponly":
+        case "cookieHttpOnly": 
target.getCookieConfiguration().setCookieHttpOnly(property(camelContext, 
boolean.class, value)); return true;
+        case "cookiemaxage":
+        case "cookieMaxAge": 
target.getCookieConfiguration().setCookieMaxAge(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "cookiepath":
+        case "cookiePath": 
target.getCookieConfiguration().setCookiePath(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "cookiesamesite":
+        case "cookieSameSite": 
target.getCookieConfiguration().setCookieSameSite(property(camelContext, 
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite.class,
 value)); return true;
+        case "cookiesecure":
+        case "cookieSecure": 
target.getCookieConfiguration().setCookieSecure(property(camelContext, 
boolean.class, value)); return true;
         case "exceptionhandler":
         case "exceptionHandler": 
target.setExceptionHandler(property(camelContext, 
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
         case "exchangepattern":
@@ -41,6 +53,8 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "platformhttpengine":
         case "platformHttpEngine": 
target.setPlatformHttpEngine(property(camelContext, 
org.apache.camel.component.platform.http.spi.PlatformHttpEngine.class, value)); 
return true;
         case "produces": target.setProduces(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "usecookiehandler":
+        case "useCookieHandler": 
target.setUseCookieHandler(property(camelContext, boolean.class, value)); 
return true;
         case "usestreaming":
         case "useStreaming": target.setUseStreaming(property(camelContext, 
boolean.class, value)); return true;
         default: return false;
@@ -53,6 +67,18 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return boolean.class;
         case "consumes": return java.lang.String.class;
+        case "cookiedomain":
+        case "cookieDomain": return java.lang.String.class;
+        case "cookiehttponly":
+        case "cookieHttpOnly": return boolean.class;
+        case "cookiemaxage":
+        case "cookieMaxAge": return java.lang.Long.class;
+        case "cookiepath":
+        case "cookiePath": return java.lang.String.class;
+        case "cookiesamesite":
+        case "cookieSameSite": return 
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite.class;
+        case "cookiesecure":
+        case "cookieSecure": return boolean.class;
         case "exceptionhandler":
         case "exceptionHandler": return 
org.apache.camel.spi.ExceptionHandler.class;
         case "exchangepattern":
@@ -70,6 +96,8 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "platformhttpengine":
         case "platformHttpEngine": return 
org.apache.camel.component.platform.http.spi.PlatformHttpEngine.class;
         case "produces": return java.lang.String.class;
+        case "usecookiehandler":
+        case "useCookieHandler": return boolean.class;
         case "usestreaming":
         case "useStreaming": return boolean.class;
         default: return null;
@@ -83,6 +111,18 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "consumes": return target.getConsumes();
+        case "cookiedomain":
+        case "cookieDomain": return 
target.getCookieConfiguration().getCookieDomain();
+        case "cookiehttponly":
+        case "cookieHttpOnly": return 
target.getCookieConfiguration().isCookieHttpOnly();
+        case "cookiemaxage":
+        case "cookieMaxAge": return 
target.getCookieConfiguration().getCookieMaxAge();
+        case "cookiepath":
+        case "cookiePath": return 
target.getCookieConfiguration().getCookiePath();
+        case "cookiesamesite":
+        case "cookieSameSite": return 
target.getCookieConfiguration().getCookieSameSite();
+        case "cookiesecure":
+        case "cookieSecure": return 
target.getCookieConfiguration().isCookieSecure();
         case "exceptionhandler":
         case "exceptionHandler": return target.getExceptionHandler();
         case "exchangepattern":
@@ -100,6 +140,8 @@ public class PlatformHttpEndpointConfigurer extends 
PropertyConfigurerSupport im
         case "platformhttpengine":
         case "platformHttpEngine": return target.getPlatformHttpEngine();
         case "produces": return target.getProduces();
+        case "usecookiehandler":
+        case "useCookieHandler": return target.isUseCookieHandler();
         case "usestreaming":
         case "useStreaming": return target.isUseStreaming();
         default: return null;
diff --git 
a/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointUriFactory.java
 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointUriFactory.java
index 78a658d5a8a..e90d7621fd8 100644
--- 
a/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointUriFactory.java
+++ 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/PlatformHttpEndpointUriFactory.java
@@ -21,9 +21,15 @@ public class PlatformHttpEndpointUriFactory extends 
org.apache.camel.support.com
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(13);
+        Set<String> props = new HashSet<>(20);
         props.add("bridgeErrorHandler");
         props.add("consumes");
+        props.add("cookieDomain");
+        props.add("cookieHttpOnly");
+        props.add("cookieMaxAge");
+        props.add("cookiePath");
+        props.add("cookieSameSite");
+        props.add("cookieSecure");
         props.add("exceptionHandler");
         props.add("exchangePattern");
         props.add("fileNameExtWhitelist");
@@ -34,6 +40,7 @@ public class PlatformHttpEndpointUriFactory extends 
org.apache.camel.support.com
         props.add("path");
         props.add("platformHttpEngine");
         props.add("produces");
+        props.add("useCookieHandler");
         props.add("useStreaming");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
         SECRET_PROPERTY_NAMES = Collections.emptySet();
diff --git 
a/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/cookie/CookieConfigurationConfigurer.java
 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/cookie/CookieConfigurationConfigurer.java
new file mode 100644
index 00000000000..e61b29e32dc
--- /dev/null
+++ 
b/components/camel-platform-http/src/generated/java/org/apache/camel/component/platform/http/cookie/CookieConfigurationConfigurer.java
@@ -0,0 +1,96 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.platform.http.cookie;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.platform.http.cookie.CookieConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CookieConfigurationConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("CookieDomain", java.lang.String.class);
+        map.put("CookieHttpOnly", boolean.class);
+        map.put("CookieMaxAge", java.lang.Long.class);
+        map.put("CookiePath", java.lang.String.class);
+        map.put("CookieSameSite", 
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite.class);
+        map.put("CookieSecure", boolean.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.platform.http.cookie.CookieConfiguration 
target = (org.apache.camel.component.platform.http.cookie.CookieConfiguration) 
obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cookiedomain":
+        case "CookieDomain": target.setCookieDomain(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "cookiehttponly":
+        case "CookieHttpOnly": target.setCookieHttpOnly(property(camelContext, 
boolean.class, value)); return true;
+        case "cookiemaxage":
+        case "CookieMaxAge": target.setCookieMaxAge(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "cookiepath":
+        case "CookiePath": target.setCookiePath(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "cookiesamesite":
+        case "CookieSameSite": target.setCookieSameSite(property(camelContext, 
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite.class,
 value)); return true;
+        case "cookiesecure":
+        case "CookieSecure": target.setCookieSecure(property(camelContext, 
boolean.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cookiedomain":
+        case "CookieDomain": return java.lang.String.class;
+        case "cookiehttponly":
+        case "CookieHttpOnly": return boolean.class;
+        case "cookiemaxage":
+        case "CookieMaxAge": return java.lang.Long.class;
+        case "cookiepath":
+        case "CookiePath": return java.lang.String.class;
+        case "cookiesamesite":
+        case "CookieSameSite": return 
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite.class;
+        case "cookiesecure":
+        case "CookieSecure": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.platform.http.cookie.CookieConfiguration 
target = (org.apache.camel.component.platform.http.cookie.CookieConfiguration) 
obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cookiedomain":
+        case "CookieDomain": return target.getCookieDomain();
+        case "cookiehttponly":
+        case "CookieHttpOnly": return target.isCookieHttpOnly();
+        case "cookiemaxage":
+        case "CookieMaxAge": return target.getCookieMaxAge();
+        case "cookiepath":
+        case "CookiePath": return target.getCookiePath();
+        case "cookiesamesite":
+        case "CookieSameSite": return target.getCookieSameSite();
+        case "cookiesecure":
+        case "CookieSecure": return target.isCookieSecure();
+        default: return null;
+        }
+    }
+}
+
diff --git 
a/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/component/platform/http/platform-http.json
 
b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/component/platform/http/platform-http.json
index e856c6a695c..0a784762006 100644
--- 
a/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/component/platform/http/platform-http.json
+++ 
b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/component/platform/http/platform-http.json
@@ -30,16 +30,23 @@
   "properties": {
     "path": { "index": 0, "kind": "path", "displayName": "Path", "group": 
"consumer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The path under which this endpoint 
serves the HTTP requests, for proxy use 'proxy'" },
     "consumes": { "index": 1, "kind": "parameter", "displayName": "Consumes", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint accepts as an 
input, such as application\/xml or application\/json. null or &#42;\/&#42; mean 
no restriction." },
-    "httpMethodRestrict": { "index": 2, "kind": "parameter", "displayName": 
"Http Method Restrict", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "A comma separated list of 
HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods 
will be served." },
-    "matchOnUriPrefix": { "index": 3, "kind": "parameter", "displayName": 
"Match On Uri Prefix", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether or not the consumer should try to find a target consumer by matching 
the URI prefix if no exact match is found." },
-    "muteException": { "index": 4, "kind": "parameter", "displayName": "Mute 
Exception", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "If enabled and an 
Exchange failed processing on the consumer side the response's body won't 
contain the exception's stack trace." },
-    "produces": { "index": 5, "kind": "parameter", "displayName": "Produces", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint produces, such 
as application\/xml or application\/json." },
-    "useStreaming": { "index": 6, "kind": "parameter", "displayName": "Use 
Streaming", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "Whether to use 
streaming for large requests and responses (currently only supported by 
camel-platform-http-vertx)" },
-    "bridgeErrorHandler": { "index": 7, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming  [...]
-    "exceptionHandler": { "index": 8, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By def [...]
-    "exchangePattern": { "index": 9, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "fileNameExtWhitelist": { "index": 10, "kind": "parameter", "displayName": 
"File Name Ext Whitelist", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "A comma or whitespace separated list of file extensions. 
Uploads having these extensions will be stored locally. Null value or asterisk 
() will allow all files." },
-    "headerFilterStrategy": { "index": 11, "kind": "parameter", "displayName": 
"Header Filter Strategy", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom HeaderFilterStrategy to 
filter headers to and from Camel message." },
-    "platformHttpEngine": { "index": 12, "kind": "parameter", "displayName": 
"Platform Http Engine", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.platform.http.spi.PlatformHttpEngine", 
"deprecated": false, "autowired": false, "secret": false, "description": "An 
HTTP Server engine implementation to serve the requests of this endpoint." }
+    "cookieDomain": { "index": 2, "kind": "parameter", "displayName": "Cookie 
Domain", "group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets which server 
can receive cookies." },
+    "cookieHttpOnly": { "index": 3, "kind": "parameter", "displayName": 
"Cookie Http Only", "group": "consumer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets whether to 
prevent client side scripts from accessing created coo [...]
+    "cookieMaxAge": { "index": 4, "kind": "parameter", "displayName": "Cookie 
Max Age", "group": "consumer", "label": "", "required": false, "type": 
"integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets the maximum 
cookie age in seconds." },
+    "cookiePath": { "index": 5, "kind": "parameter", "displayName": "Cookie 
Path", "group": "consumer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "\/", "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets the URL path 
that must exist in the requested URL in order to send  [...]
+    "cookieSameSite": { "index": 6, "kind": "parameter", "displayName": 
"Cookie Same Site", "group": "consumer", "label": "", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite",
 "enum": [ "STRICT", "LAX", "NONE" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "Lax", "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField" [...]
+    "cookieSecure": { "index": 7, "kind": "parameter", "displayName": "Cookie 
Secure", "group": "consumer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.platform.http.cookie.CookieConfiguration", 
"configurationField": "cookieConfiguration", "description": "Sets whether the 
cookie is only sent to the server with an encrypted reques [...]
+    "httpMethodRestrict": { "index": 8, "kind": "parameter", "displayName": 
"Http Method Restrict", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "A comma separated list of 
HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods 
will be served." },
+    "matchOnUriPrefix": { "index": 9, "kind": "parameter", "displayName": 
"Match On Uri Prefix", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether or not the consumer should try to find a target consumer by matching 
the URI prefix if no exact match is found." },
+    "muteException": { "index": 10, "kind": "parameter", "displayName": "Mute 
Exception", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "If enabled and an 
Exchange failed processing on the consumer side the response's body won't 
contain the exception's stack trace." },
+    "produces": { "index": 11, "kind": "parameter", "displayName": "Produces", 
"group": "consumer", "label": "consumer", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The content type this endpoint produces, such 
as application\/xml or application\/json." },
+    "useCookieHandler": { "index": 12, "kind": "parameter", "displayName": 
"Use Cookie Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether to enable the Cookie Handler that allows Cookie addition, expiry, and 
retrieval (currently only supported by camel-platform-http-vertx)" },
+    "useStreaming": { "index": 13, "kind": "parameter", "displayName": "Use 
Streaming", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "Whether to use 
streaming for large requests and responses (currently only supported by 
camel-platform-http-vertx)" },
+    "bridgeErrorHandler": { "index": 14, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 15, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 16, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "fileNameExtWhitelist": { "index": 17, "kind": "parameter", "displayName": 
"File Name Ext Whitelist", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "A comma or whitespace separated list of file extensions. 
Uploads having these extensions will be stored locally. Null value or asterisk 
() will allow all files." },
+    "headerFilterStrategy": { "index": 18, "kind": "parameter", "displayName": 
"Header Filter Strategy", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom HeaderFilterStrategy to 
filter headers to and from Camel message." },
+    "platformHttpEngine": { "index": 19, "kind": "parameter", "displayName": 
"Platform Http Engine", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.platform.http.spi.PlatformHttpEngine", 
"deprecated": false, "autowired": false, "secret": false, "description": "An 
HTTP Server engine implementation to serve the requests of this endpoint." }
   }
 }
diff --git 
a/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.platform.http.cookie.CookieConfiguration
 
b/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.platform.http.cookie.CookieConfiguration
new file mode 100644
index 00000000000..e4fa7c52aee
--- /dev/null
+++ 
b/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.platform.http.cookie.CookieConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.platform.http.cookie.CookieConfigurationConfigurer
diff --git 
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java
 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java
index 3716e0b0f1f..94360f23ffb 100644
--- 
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java
+++ 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java
@@ -22,6 +22,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.component.platform.http.cookie.CookieConfiguration;
 import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
@@ -73,6 +74,15 @@ public class PlatformHttpEndpoint extends DefaultEndpoint 
implements AsyncEndpoi
               description = "Whether to use streaming for large requests and 
responses (currently only supported by camel-platform-http-vertx)")
     private boolean useStreaming;
 
+    @UriParam(label = "consumer", description = "The properties set on a 
Cookies when a Cookie is added via the"
+                                                + " Cookie Handler (currently 
only supported by camel-platform-http-vertx)")
+    private CookieConfiguration cookieConfiguration = new 
CookieConfiguration();
+
+    @UriParam(label = "consumer",
+              description = "Whether to enable the Cookie Handler that allows 
Cookie addition, expiry, and retrieval"
+                            + " (currently only supported by 
camel-platform-http-vertx)")
+    private boolean useCookieHandler;
+
     public PlatformHttpEndpoint(String uri, String remaining, Component 
component) {
         super(uri, component);
         path = remaining;
@@ -179,6 +189,22 @@ public class PlatformHttpEndpoint extends DefaultEndpoint 
implements AsyncEndpoi
         this.useStreaming = useStreaming;
     }
 
+    public CookieConfiguration getCookieConfiguration() {
+        return cookieConfiguration;
+    }
+
+    public void setCookieConfiguration(CookieConfiguration 
cookieConfiguration) {
+        this.cookieConfiguration = cookieConfiguration;
+    }
+
+    public boolean isUseCookieHandler() {
+        return useCookieHandler;
+    }
+
+    public void setUseCookieHandler(boolean useCookieHandler) {
+        this.useCookieHandler = useCookieHandler;
+    }
+
     PlatformHttpEngine getOrCreateEngine() {
         return platformHttpEngine != null
                 ? platformHttpEngine
diff --git 
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieConfiguration.java
 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieConfiguration.java
new file mode 100644
index 00000000000..4a267d9f43a
--- /dev/null
+++ 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieConfiguration.java
@@ -0,0 +1,221 @@
+/*
+ * 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.platform.http.cookie;
+
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Attributes that are set when creating Cookies.
+ */
+@UriParams
+@Configurer(extended = true)
+public class CookieConfiguration {
+
+    public static final String DEFAULT_PATH = "/";
+    public static final boolean DEFAULT_SECURE_FLAG = false;
+    public static final boolean DEFAULT_HTTP_ONLY_FLAG = false;
+    public static final CookieSameSite DEFAULT_SAME_SITE = CookieSameSite.LAX;
+    @UriParam(defaultValue = "/")
+    private String cookiePath = DEFAULT_PATH;
+    @UriParam
+    private String cookieDomain;
+    @UriParam
+    private Long cookieMaxAge;
+    @UriParam(defaultValue = "false")
+    private boolean cookieSecure = DEFAULT_SECURE_FLAG;
+    @UriParam(defaultValue = "false")
+    private boolean cookieHttpOnly = DEFAULT_HTTP_ONLY_FLAG;
+    @UriParam(defaultValue = "Lax")
+    private CookieSameSite cookieSameSite = DEFAULT_SAME_SITE;
+
+    public CookieConfiguration() {
+    }
+
+    public CookieConfiguration(String cookiePath, String cookieDomain, Long 
cookieMaxAge,
+                               boolean cookieSecure, boolean cookieHttpOnly, 
CookieSameSite cookieSameSite) {
+        this.cookiePath = cookiePath;
+        this.cookieDomain = cookieDomain;
+        this.cookieMaxAge = cookieMaxAge;
+        this.cookieSecure = cookieSecure;
+        this.cookieHttpOnly = cookieHttpOnly;
+        this.cookieSameSite = cookieSameSite;
+    }
+
+    /**
+     * Sets the URL path that must exist in the requested URL in order to send 
the Cookie.
+     */
+    public void setCookiePath(String cookiePath) {
+        this.cookiePath = cookiePath;
+    }
+
+    public String getCookiePath() {
+        return cookiePath;
+    }
+
+    /**
+     * Sets which server can receive cookies.
+     */
+    public void setCookieDomain(String cookieDomain) {
+        this.cookieDomain = cookieDomain;
+    }
+
+    public String getCookieDomain() {
+        return cookieDomain;
+    }
+
+    /**
+     * Sets the maximum cookie age in seconds.
+     */
+    public void setCookieMaxAge(Long cookieMaxAge) {
+        this.cookieMaxAge = cookieMaxAge;
+    }
+
+    public Long getCookieMaxAge() {
+        return cookieMaxAge;
+    }
+
+    /**
+     * Sets whether the cookie is only sent to the server with an encrypted 
request over HTTPS.
+     */
+    public void setCookieSecure(boolean cookieSecure) {
+        this.cookieSecure = cookieSecure;
+    }
+
+    public boolean isCookieSecure() {
+        return cookieSecure;
+    }
+
+    /**
+     * Sets whether to prevent client side scripts from accessing created 
cookies.
+     */
+    public void setCookieHttpOnly(boolean cookieHttpOnly) {
+        this.cookieHttpOnly = cookieHttpOnly;
+    }
+
+    public boolean isCookieHttpOnly() {
+        return cookieHttpOnly;
+    }
+
+    /**
+     * Sets whether to prevent the browser from sending cookies along with 
cross-site requests.
+     */
+    public void setCookieSameSite(CookieSameSite cookieSameSite) {
+        this.cookieSameSite = cookieSameSite;
+    }
+
+    public CookieSameSite getCookieSameSite() {
+        return cookieSameSite;
+    }
+
+    public static class Builder {
+        private String path = DEFAULT_PATH;
+        private String domain;
+        private Long maxAge;
+        private boolean secure = DEFAULT_SECURE_FLAG;
+        private boolean httpOnly = DEFAULT_HTTP_ONLY_FLAG;
+        private CookieSameSite sameSite = DEFAULT_SAME_SITE;
+
+        public Builder() {
+
+        }
+
+        /**
+         * Sets the URL path that must exist in the requested URL in order to 
send the Cookie.
+         */
+        public Builder setPath(String path) {
+            this.path = path;
+            return this;
+        }
+
+        /**
+         * Sets which server can receive cookies.
+         */
+        public Builder setDomain(String domain) {
+            this.domain = domain;
+            return this;
+        }
+
+        /**
+         * Sets the maximum cookie age in seconds.
+         */
+        public Builder setMaxAge(Long maxAge) {
+            this.maxAge = maxAge;
+            return this;
+        }
+
+        /**
+         * Sets whether the cookie is only sent to the server with an 
encrypted request over HTTPS.
+         */
+        public Builder setSecure(boolean secure) {
+            this.secure = secure;
+            return this;
+        }
+
+        /**
+         * Sets whether to prevent client side scripts from accessing created 
cookies.
+         */
+        public Builder setHttpOnly(boolean httpOnly) {
+            this.httpOnly = httpOnly;
+            return this;
+        }
+
+        /**
+         * Sets whether to prevent the browser from sending cookies along with 
cross-site requests.
+         */
+        public Builder setSameSite(CookieSameSite sameSite) {
+            this.sameSite = sameSite;
+            return this;
+        }
+
+        public CookieConfiguration build() {
+            return new CookieConfiguration(path, domain, maxAge, secure, 
httpOnly, sameSite);
+        }
+    }
+
+    /**
+     * The Cookie {@code SameSite} policy that declares whether a Cookie 
should be sent with cross-site requests.
+     */
+    public enum CookieSameSite {
+
+        /**
+         * Prevents cookies from being sent to the target site in all 
cross-site browsing contexts.
+         */
+        STRICT("Strict"),
+
+        /**
+         * Cookies are sent in a first-party context, also when following a 
link to the origin site.
+         */
+        LAX("Lax"),
+
+        /**
+         * Cookies are set in all first-party and cross-origin contexts.
+         */
+        NONE("None");
+
+        CookieSameSite(String value) {
+            this.value = value;
+        }
+
+        private final String value;
+
+        public String getValue() {
+            return value;
+        }
+    }
+}
diff --git 
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieHandler.java
 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieHandler.java
new file mode 100644
index 00000000000..57df35077ac
--- /dev/null
+++ 
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/cookie/CookieHandler.java
@@ -0,0 +1,47 @@
+/*
+ * 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.platform.http.cookie;
+
+/**
+ * A cookie handler that allows Platform consumers to add, retrieve, and 
expire cookies.
+ */
+public interface CookieHandler {
+
+    /**
+     * Adds a cookie that will be sent back in the response.
+     *
+     * @param cookieName  the cookie name
+     * @param cookieValue the cookie value
+     */
+    void addCookie(String cookieName, String cookieValue);
+
+    /**
+     * Expires a cookie notifying the user-agent or producer to remove it from 
their cookie-store.
+     *
+     * @param  cookieName the cookie name
+     * @return            the value of the cookie to expire if one exists, 
otherwise {@code null}
+     */
+    String removeCookie(String cookieName);
+
+    /**
+     * Accesses the cookie value.
+     *
+     * @param  cookieName the cookie name
+     * @return            the value of the cookie if one exists, otherwise 
{@code null}
+     */
+    String getCookieValue(String cookieName);
+}
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
index 0babe048602..d156d84e35b 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
@@ -70,3 +70,24 @@ micrometer and metrics no longer include statistics for 
those Kamelet routes.
 
 The old behaviour can be enabled by setting 
`registerRoutesCreateByKamelet=true`
 on the `ManagementAgent` object. See more in the xref:jmx.adoc[JMX] 
documentation.
+
+=== camel-kamelet
+
+Routes created by Kamelets are no longer registered as JMX MBeans to avoid 
cluttering up with unwanted MBeans, as a Kamelet
+is intended to act like a Camel component, despite its implementation is Camel 
routes. This means that the number of routes
+listed from JMX will no longer include Kamelet routes.
+
+The old behaviour can be enabled by setting 
`registerRoutesCreateByKamelet=true`
+on the `ManagementAgent` object. See more in the xref:jmx.adoc[JMX] 
documentation.
+
+=== camel-micrometer and camel-metrics
+
+Due to Kamelets are changed to act more like a Camel component, and not expose 
internal details as JMX MBeans, then
+micrometer and metrics no longer include statistics for those Kamelet routes.
+
+The old behaviour can be enabled by setting 
`registerRoutesCreateByKamelet=true`
+on the `ManagementAgent` object. See more in the xref:jmx.adoc[JMX] 
documentation.
+
+=== camel-platform-http-vertx
+
+Added a Cookie Handler allowing the addition, retrieval and expiry of Cookies.
\ No newline at end of file
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PlatformHttpEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PlatformHttpEndpointBuilderFactory.java
index 0a2c2d6e509..9d1d899ff44 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PlatformHttpEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PlatformHttpEndpointBuilderFactory.java
@@ -60,6 +60,167 @@ public interface PlatformHttpEndpointBuilderFactory {
             doSetProperty("consumes", consumes);
             return this;
         }
+        /**
+         * Sets which server can receive cookies.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param cookieDomain the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieDomain(String cookieDomain) {
+            doSetProperty("cookieDomain", cookieDomain);
+            return this;
+        }
+        /**
+         * Sets whether to prevent client side scripts from accessing created
+         * cookies.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param cookieHttpOnly the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieHttpOnly(
+                boolean cookieHttpOnly) {
+            doSetProperty("cookieHttpOnly", cookieHttpOnly);
+            return this;
+        }
+        /**
+         * Sets whether to prevent client side scripts from accessing created
+         * cookies.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param cookieHttpOnly the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieHttpOnly(String 
cookieHttpOnly) {
+            doSetProperty("cookieHttpOnly", cookieHttpOnly);
+            return this;
+        }
+        /**
+         * Sets the maximum cookie age in seconds.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param cookieMaxAge the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieMaxAge(Long cookieMaxAge) {
+            doSetProperty("cookieMaxAge", cookieMaxAge);
+            return this;
+        }
+        /**
+         * Sets the maximum cookie age in seconds.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param cookieMaxAge the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieMaxAge(String cookieMaxAge) {
+            doSetProperty("cookieMaxAge", cookieMaxAge);
+            return this;
+        }
+        /**
+         * Sets the URL path that must exist in the requested URL in order to
+         * send the Cookie.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: /
+         * Group: consumer
+         * 
+         * @param cookiePath the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookiePath(String cookiePath) {
+            doSetProperty("cookiePath", cookiePath);
+            return this;
+        }
+        /**
+         * Sets whether to prevent the browser from sending cookies along with
+         * cross-site requests.
+         * 
+         * The option is a:
+         * 
&lt;code&gt;org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite&lt;/code&gt;
 type.
+         * 
+         * Default: Lax
+         * Group: consumer
+         * 
+         * @param cookieSameSite the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieSameSite(
+                
org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite
 cookieSameSite) {
+            doSetProperty("cookieSameSite", cookieSameSite);
+            return this;
+        }
+        /**
+         * Sets whether to prevent the browser from sending cookies along with
+         * cross-site requests.
+         * 
+         * The option will be converted to a
+         * 
&lt;code&gt;org.apache.camel.component.platform.http.cookie.CookieConfiguration.CookieSameSite&lt;/code&gt;
 type.
+         * 
+         * Default: Lax
+         * Group: consumer
+         * 
+         * @param cookieSameSite the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieSameSite(String 
cookieSameSite) {
+            doSetProperty("cookieSameSite", cookieSameSite);
+            return this;
+        }
+        /**
+         * Sets whether the cookie is only sent to the server with an encrypted
+         * request over HTTPS.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param cookieSecure the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieSecure(boolean cookieSecure) 
{
+            doSetProperty("cookieSecure", cookieSecure);
+            return this;
+        }
+        /**
+         * Sets whether the cookie is only sent to the server with an encrypted
+         * request over HTTPS.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param cookieSecure the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder cookieSecure(String cookieSecure) {
+            doSetProperty("cookieSecure", cookieSecure);
+            return this;
+        }
         /**
          * A comma separated list of HTTP methods to serve, e.g. GET,POST . If
          * no methods are specified, all methods will be served.
@@ -159,6 +320,43 @@ public interface PlatformHttpEndpointBuilderFactory {
             doSetProperty("produces", produces);
             return this;
         }
+        /**
+         * Whether to enable the Cookie Handler that allows Cookie addition,
+         * expiry, and retrieval (currently only supported by
+         * camel-platform-http-vertx).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param useCookieHandler the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder useCookieHandler(
+                boolean useCookieHandler) {
+            doSetProperty("useCookieHandler", useCookieHandler);
+            return this;
+        }
+        /**
+         * Whether to enable the Cookie Handler that allows Cookie addition,
+         * expiry, and retrieval (currently only supported by
+         * camel-platform-http-vertx).
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param useCookieHandler the value to set
+         * @return the dsl builder
+         */
+        default PlatformHttpEndpointBuilder useCookieHandler(
+                String useCookieHandler) {
+            doSetProperty("useCookieHandler", useCookieHandler);
+            return this;
+        }
         /**
          * Whether to use streaming for large requests and responses (currently
          * only supported by camel-platform-http-vertx).
diff --git 
a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/PlatformHttpUriDsl.kt
 
b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/PlatformHttpUriDsl.kt
index 1769eca254e..926e48ed54d 100644
--- 
a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/PlatformHttpUriDsl.kt
+++ 
b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/PlatformHttpUriDsl.kt
@@ -17,6 +17,7 @@
 package org.apache.camel.kotlin.components
 
 import kotlin.Boolean
+import kotlin.Int
 import kotlin.String
 import kotlin.Unit
 import org.apache.camel.kotlin.CamelDslMarker
@@ -48,6 +49,42 @@ public class PlatformHttpUriDsl(
     it.property("consumes", consumes)
   }
 
+  public fun cookieDomain(cookieDomain: String) {
+    it.property("cookieDomain", cookieDomain)
+  }
+
+  public fun cookieHttpOnly(cookieHttpOnly: String) {
+    it.property("cookieHttpOnly", cookieHttpOnly)
+  }
+
+  public fun cookieHttpOnly(cookieHttpOnly: Boolean) {
+    it.property("cookieHttpOnly", cookieHttpOnly.toString())
+  }
+
+  public fun cookieMaxAge(cookieMaxAge: String) {
+    it.property("cookieMaxAge", cookieMaxAge)
+  }
+
+  public fun cookieMaxAge(cookieMaxAge: Int) {
+    it.property("cookieMaxAge", cookieMaxAge.toString())
+  }
+
+  public fun cookiePath(cookiePath: String) {
+    it.property("cookiePath", cookiePath)
+  }
+
+  public fun cookieSameSite(cookieSameSite: String) {
+    it.property("cookieSameSite", cookieSameSite)
+  }
+
+  public fun cookieSecure(cookieSecure: String) {
+    it.property("cookieSecure", cookieSecure)
+  }
+
+  public fun cookieSecure(cookieSecure: Boolean) {
+    it.property("cookieSecure", cookieSecure.toString())
+  }
+
   public fun httpMethodRestrict(httpMethodRestrict: String) {
     it.property("httpMethodRestrict", httpMethodRestrict)
   }
@@ -72,6 +109,14 @@ public class PlatformHttpUriDsl(
     it.property("produces", produces)
   }
 
+  public fun useCookieHandler(useCookieHandler: String) {
+    it.property("useCookieHandler", useCookieHandler)
+  }
+
+  public fun useCookieHandler(useCookieHandler: Boolean) {
+    it.property("useCookieHandler", useCookieHandler.toString())
+  }
+
   public fun useStreaming(useStreaming: String) {
     it.property("useStreaming", useStreaming)
   }

Reply via email to