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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new e777c141544 camel-jetty12: Add component property for setting 
RequestLog to Jetty12 (#15609)
e777c141544 is described below

commit e777c141544dabbab09aff57864cfbe8315ae831
Author: Kari Mattila <[email protected]>
AuthorDate: Wed Sep 18 14:13:36 2024 +0300

    camel-jetty12: Add component property for setting RequestLog to Jetty12 
(#15609)
    
    * camel-jetty12: Add componentProperty requestLog
    
    * Add missing generated sources
---
 .../org/apache/camel/catalog/components/jetty.json | 25 ++++----
 .../jetty12/JettyHttpComponent12Configurer.java    |  6 ++
 .../org/apache/camel/component/jetty12/jetty.json  | 25 ++++----
 .../component/jetty12/JettyHttpComponent12.java    | 19 ++++++
 .../component/jetty/rest/RestRequestLogTest.java   | 70 ++++++++++++++++++++++
 .../dsl/JettyComponentBuilderFactory.java          | 17 ++++++
 6 files changed, 138 insertions(+), 24 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jetty.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jetty.json
index cee691af629..2939c756795 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jetty.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jetty.json
@@ -49,18 +49,19 @@
     "httpBinding": { "index": 21, "kind": "property", "displayName": "Http 
Binding", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.camel.http.common.HttpBinding", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Not to be used - use JettyHttpBinding instead." },
     "httpConfiguration": { "index": 22, "kind": "property", "displayName": 
"Http Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.http.common.HttpConfiguration", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Jetty component does not use HttpConfiguration." },
     "mbContainer": { "index": 23, "kind": "property", "displayName": "Mb 
Container", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.eclipse.jetty.jmx.MBeanContainer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "To use a existing configured 
org.eclipse.jetty.jmx.MBeanContainer if JMX is enabled that Jetty uses for 
registering mbeans." },
-    "headerFilterStrategy": { "index": 24, "kind": "property", "displayName": 
"Header Filter Strategy", "group": "filter", "label": "filter", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom 
org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel 
message." },
-    "proxyHost": { "index": 25, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To use a http proxy to 
configure the hostname." },
-    "proxyPort": { "index": 26, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
use a http proxy to configure the port number." },
-    "keystore": { "index": 27, "kind": "property", "displayName": "Keystore", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Specifies the location of 
the Java keystore file, which contains the Jetty server's own X.509 certificate 
in a key entry." },
-    "socketConnectorProperties": { "index": 28, "kind": "property", 
"displayName": "Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general HTTP connector properties. Uses the same principle 
as sslSocketConnectorProperties." },
-    "socketConnectors": { "index": 29, "kind": "property", "displayName": 
"Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific HTTP connectors. Uses the same principle as 
sslSocketConnectors." },
-    "sslContextParameters": { "index": 30, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
configure security using SSLContextParameters" },
-    "sslKeyPassword": { "index": 31, "kind": "property", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
key password, which is used to access the certificate's key entry in the 
keystore (this is the same password that is supplied to the keystore command's 
-keypass option)." },
-    "sslPassword": { "index": 32, "kind": "property", "displayName": "Ssl 
Password", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
ssl password, which is required to access the keystore file (this is the same 
password that is supplied to the keystore command's -storepass option)." },
-    "sslSocketConnectorProperties": { "index": 33, "kind": "property", 
"displayName": "Ssl Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general SSL connector properties." },
-    "sslSocketConnectors": { "index": 34, "kind": "property", "displayName": 
"Ssl Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific SSL connectors." },
-    "useGlobalSslContextParameters": { "index": 35, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enable usage of global 
SSL context parameters" }
+    "requestLog": { "index": 24, "kind": "property", "displayName": "Request 
Log", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.eclipse.jetty.server.RequestLog", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "To configure Jetty request logging" },
+    "headerFilterStrategy": { "index": 25, "kind": "property", "displayName": 
"Header Filter Strategy", "group": "filter", "label": "filter", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom 
org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel 
message." },
+    "proxyHost": { "index": 26, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To use a http proxy to 
configure the hostname." },
+    "proxyPort": { "index": 27, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
use a http proxy to configure the port number." },
+    "keystore": { "index": 28, "kind": "property", "displayName": "Keystore", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Specifies the location of 
the Java keystore file, which contains the Jetty server's own X.509 certificate 
in a key entry." },
+    "socketConnectorProperties": { "index": 29, "kind": "property", 
"displayName": "Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general HTTP connector properties. Uses the same principle 
as sslSocketConnectorProperties." },
+    "socketConnectors": { "index": 30, "kind": "property", "displayName": 
"Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific HTTP connectors. Uses the same principle as 
sslSocketConnectors." },
+    "sslContextParameters": { "index": 31, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
configure security using SSLContextParameters" },
+    "sslKeyPassword": { "index": 32, "kind": "property", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
key password, which is used to access the certificate's key entry in the 
keystore (this is the same password that is supplied to the keystore command's 
-keypass option)." },
+    "sslPassword": { "index": 33, "kind": "property", "displayName": "Ssl 
Password", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
ssl password, which is required to access the keystore file (this is the same 
password that is supplied to the keystore command's -storepass option)." },
+    "sslSocketConnectorProperties": { "index": 34, "kind": "property", 
"displayName": "Ssl Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general SSL connector properties." },
+    "sslSocketConnectors": { "index": 35, "kind": "property", "displayName": 
"Ssl Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific SSL connectors." },
+    "useGlobalSslContextParameters": { "index": 36, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enable usage of global 
SSL context parameters" }
   },
   "headers": {
     "CamelServletContextPath": { "index": 0, "kind": "header", "displayName": 
"", "group": "consumer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The servlet context path used", "constantName": 
"org.apache.camel.component.jetty.JettyHttpConstants#SERVLET_CONTEXT_PATH" },
diff --git 
a/components/camel-jetty/src/generated/java/org/apache/camel/component/jetty12/JettyHttpComponent12Configurer.java
 
b/components/camel-jetty/src/generated/java/org/apache/camel/component/jetty12/JettyHttpComponent12Configurer.java
index 3690065d5e2..6ef822e8ac2 100644
--- 
a/components/camel-jetty/src/generated/java/org/apache/camel/component/jetty12/JettyHttpComponent12Configurer.java
+++ 
b/components/camel-jetty/src/generated/java/org/apache/camel/component/jetty12/JettyHttpComponent12Configurer.java
@@ -66,6 +66,8 @@ public class JettyHttpComponent12Configurer extends 
PropertyConfigurerSupport im
         case "requestBufferSize": 
target.setRequestBufferSize(property(camelContext, java.lang.Integer.class, 
value)); return true;
         case "requestheadersize":
         case "requestHeaderSize": 
target.setRequestHeaderSize(property(camelContext, java.lang.Integer.class, 
value)); return true;
+        case "requestlog":
+        case "requestLog": target.setRequestLog(property(camelContext, 
org.eclipse.jetty.server.RequestLog.class, value)); return true;
         case "responsebuffersize":
         case "responseBufferSize": 
target.setResponseBufferSize(property(camelContext, java.lang.Integer.class, 
value)); return true;
         case "responseheadersize":
@@ -144,6 +146,8 @@ public class JettyHttpComponent12Configurer extends 
PropertyConfigurerSupport im
         case "requestBufferSize": return java.lang.Integer.class;
         case "requestheadersize":
         case "requestHeaderSize": return java.lang.Integer.class;
+        case "requestlog":
+        case "requestLog": return org.eclipse.jetty.server.RequestLog.class;
         case "responsebuffersize":
         case "responseBufferSize": return java.lang.Integer.class;
         case "responseheadersize":
@@ -223,6 +227,8 @@ public class JettyHttpComponent12Configurer extends 
PropertyConfigurerSupport im
         case "requestBufferSize": return target.getRequestBufferSize();
         case "requestheadersize":
         case "requestHeaderSize": return target.getRequestHeaderSize();
+        case "requestlog":
+        case "requestLog": return target.getRequestLog();
         case "responsebuffersize":
         case "responseBufferSize": return target.getResponseBufferSize();
         case "responseheadersize":
diff --git 
a/components/camel-jetty/src/generated/resources/META-INF/org/apache/camel/component/jetty12/jetty.json
 
b/components/camel-jetty/src/generated/resources/META-INF/org/apache/camel/component/jetty12/jetty.json
index cee691af629..2939c756795 100644
--- 
a/components/camel-jetty/src/generated/resources/META-INF/org/apache/camel/component/jetty12/jetty.json
+++ 
b/components/camel-jetty/src/generated/resources/META-INF/org/apache/camel/component/jetty12/jetty.json
@@ -49,18 +49,19 @@
     "httpBinding": { "index": 21, "kind": "property", "displayName": "Http 
Binding", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.camel.http.common.HttpBinding", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Not to be used - use JettyHttpBinding instead." },
     "httpConfiguration": { "index": 22, "kind": "property", "displayName": 
"Http Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.http.common.HttpConfiguration", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Jetty component does not use HttpConfiguration." },
     "mbContainer": { "index": 23, "kind": "property", "displayName": "Mb 
Container", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.eclipse.jetty.jmx.MBeanContainer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "To use a existing configured 
org.eclipse.jetty.jmx.MBeanContainer if JMX is enabled that Jetty uses for 
registering mbeans." },
-    "headerFilterStrategy": { "index": 24, "kind": "property", "displayName": 
"Header Filter Strategy", "group": "filter", "label": "filter", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom 
org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel 
message." },
-    "proxyHost": { "index": 25, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To use a http proxy to 
configure the hostname." },
-    "proxyPort": { "index": 26, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
use a http proxy to configure the port number." },
-    "keystore": { "index": 27, "kind": "property", "displayName": "Keystore", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Specifies the location of 
the Java keystore file, which contains the Jetty server's own X.509 certificate 
in a key entry." },
-    "socketConnectorProperties": { "index": 28, "kind": "property", 
"displayName": "Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general HTTP connector properties. Uses the same principle 
as sslSocketConnectorProperties." },
-    "socketConnectors": { "index": 29, "kind": "property", "displayName": 
"Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific HTTP connectors. Uses the same principle as 
sslSocketConnectors." },
-    "sslContextParameters": { "index": 30, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
configure security using SSLContextParameters" },
-    "sslKeyPassword": { "index": 31, "kind": "property", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
key password, which is used to access the certificate's key entry in the 
keystore (this is the same password that is supplied to the keystore command's 
-keypass option)." },
-    "sslPassword": { "index": 32, "kind": "property", "displayName": "Ssl 
Password", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
ssl password, which is required to access the keystore file (this is the same 
password that is supplied to the keystore command's -storepass option)." },
-    "sslSocketConnectorProperties": { "index": 33, "kind": "property", 
"displayName": "Ssl Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general SSL connector properties." },
-    "sslSocketConnectors": { "index": 34, "kind": "property", "displayName": 
"Ssl Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific SSL connectors." },
-    "useGlobalSslContextParameters": { "index": 35, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enable usage of global 
SSL context parameters" }
+    "requestLog": { "index": 24, "kind": "property", "displayName": "Request 
Log", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.eclipse.jetty.server.RequestLog", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "To configure Jetty request logging" },
+    "headerFilterStrategy": { "index": 25, "kind": "property", "displayName": 
"Header Filter Strategy", "group": "filter", "label": "filter", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": 
false, "secret": false, "description": "To use a custom 
org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel 
message." },
+    "proxyHost": { "index": 26, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To use a http proxy to 
configure the hostname." },
+    "proxyPort": { "index": 27, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
use a http proxy to configure the port number." },
+    "keystore": { "index": 28, "kind": "property", "displayName": "Keystore", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "description": "Specifies the location of 
the Java keystore file, which contains the Jetty server's own X.509 certificate 
in a key entry." },
+    "socketConnectorProperties": { "index": 29, "kind": "property", 
"displayName": "Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general HTTP connector properties. Uses the same principle 
as sslSocketConnectorProperties." },
+    "socketConnectors": { "index": 30, "kind": "property", "displayName": 
"Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific HTTP connectors. Uses the same principle as 
sslSocketConnectors." },
+    "sslContextParameters": { "index": 31, "kind": "property", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "To 
configure security using SSLContextParameters" },
+    "sslKeyPassword": { "index": 32, "kind": "property", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
key password, which is used to access the certificate's key entry in the 
keystore (this is the same password that is supplied to the keystore command's 
-keypass option)." },
+    "sslPassword": { "index": 33, "kind": "property", "displayName": "Ssl 
Password", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "description": "The 
ssl password, which is required to access the keystore file (this is the same 
password that is supplied to the keystore command's -storepass option)." },
+    "sslSocketConnectorProperties": { "index": 34, "kind": "property", 
"displayName": "Ssl Socket Connector Properties", "group": "security", "label": 
"security", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "A 
map which contains general SSL connector properties." },
+    "sslSocketConnectors": { "index": 35, "kind": "property", "displayName": 
"Ssl Socket Connectors", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, 
org.eclipse.jetty.server.Connector>", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "A map which contains 
per port number specific SSL connectors." },
+    "useGlobalSslContextParameters": { "index": 36, "kind": "property", 
"displayName": "Use Global Ssl Context Parameters", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enable usage of global 
SSL context parameters" }
   },
   "headers": {
     "CamelServletContextPath": { "index": 0, "kind": "header", "displayName": 
"", "group": "consumer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The servlet context path used", "constantName": 
"org.apache.camel.component.jetty.JettyHttpConstants#SERVLET_CONTEXT_PATH" },
diff --git 
a/components/camel-jetty/src/main/java/org/apache/camel/component/jetty12/JettyHttpComponent12.java
 
b/components/camel-jetty/src/main/java/org/apache/camel/component/jetty12/JettyHttpComponent12.java
index c46305e59e4..dd601880e94 100644
--- 
a/components/camel-jetty/src/main/java/org/apache/camel/component/jetty12/JettyHttpComponent12.java
+++ 
b/components/camel-jetty/src/main/java/org/apache/camel/component/jetty12/JettyHttpComponent12.java
@@ -26,12 +26,14 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.jetty.JettyHttpComponent;
 import org.apache.camel.component.jetty.JettyHttpEndpoint;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.eclipse.jetty.server.AbstractConnector;
 import org.eclipse.jetty.server.ConnectionFactory;
 import org.eclipse.jetty.server.ForwardedRequestCustomizer;
 import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.RequestLog;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.SslConnectionFactory;
@@ -46,6 +48,8 @@ public class JettyHttpComponent12 extends JettyHttpComponent {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(JettyHttpComponent12.class);
 
+    private RequestLog requestLog;
+
     @Override
     protected JettyHttpEndpoint createEndpoint(URI endpointUri, URI httpUri) 
throws URISyntaxException {
         return new JettyHttpEndpoint12(this, endpointUri.toString(), httpUri);
@@ -79,6 +83,9 @@ public class JettyHttpComponent12 extends JettyHttpComponent {
             if (useXForwardedForHeader) {
                 httpConfig.addCustomizer(new ForwardedRequestCustomizer());
             }
+            if (requestLog != null) {
+                server.setRequestLog(requestLog);
+            }
             HttpConnectionFactory httpFactory = new 
org.eclipse.jetty.server.HttpConnectionFactory(httpConfig);
 
             ArrayList<ConnectionFactory> connectionFactories = new 
ArrayList<>();
@@ -129,4 +136,16 @@ public class JettyHttpComponent12 extends 
JettyHttpComponent {
         }
     }
 
+    /**
+     * To configure Jetty request logging.
+     */
+    @Metadata(description = "To configure Jetty request logging", label = 
"advanced")
+    public void setRequestLog(RequestLog requestLog) {
+        this.requestLog = requestLog;
+    }
+
+    public RequestLog getRequestLog() {
+        return requestLog;
+    }
+
 }
diff --git 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestRequestLogTest.java
 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestRequestLogTest.java
new file mode 100644
index 00000000000..63e873b86d9
--- /dev/null
+++ 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestRequestLogTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.jetty.rest;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jetty.BaseJettyTest;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.eclipse.jetty.server.CustomRequestLog;
+import org.eclipse.jetty.server.RequestLog;
+import org.eclipse.jetty.server.Slf4jRequestLogWriter;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class RestRequestLogTest extends BaseJettyTest {
+
+    @Test
+    public void testJettyRequestLog() throws Exception {
+        getMockEndpoint("mock:result").expectedMessageCount(1);
+
+        String out = template.requestBody("http://localhost:"; + getPort() + 
"/api/123/", null, String.class);
+        assertEquals("Bye 123", out);
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @BindToRegistry("myRequestLog")
+    public RequestLog loadRequestLog() {
+        String format = "%t %{client}a %H %s %m %U%q - %{ms}T %I %O";
+        Slf4jRequestLogWriter logWriter = new Slf4jRequestLogWriter();
+        logWriter.setLoggerName("accesslog");
+        CustomRequestLog requestLog = new CustomRequestLog(logWriter, format);
+        return requestLog;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // configure to use jetty on localhost with the given port 
using custom request logger
+                
restConfiguration().component("jetty").host("localhost").port(getPort()).componentProperty("requestLog",
+                        "#myRequestLog");
+
+                rest("/api/").get("/{id}/").to("direct:foo");
+
+                
from("direct:foo").removeHeaders("CamelHttp*").to("http://localhost:"; + 
getPort2());
+
+                from("jetty:http://localhost:"; + getPort2() + 
"?matchOnUriPrefix=true").to("mock:result").transform()
+                        .simple("Bye ${header.id}");
+            }
+        };
+    }
+
+}
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JettyComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JettyComponentBuilderFactory.java
index e53f38a08d9..8f5ec437f9d 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JettyComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JettyComponentBuilderFactory.java
@@ -483,6 +483,22 @@ public interface JettyComponentBuilderFactory {
             return this;
         }
     
+        /**
+         * To configure Jetty request logging.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.eclipse.jetty.server.RequestLog&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param requestLog the value to set
+         * @return the dsl builder
+         */
+        default JettyComponentBuilder 
requestLog(org.eclipse.jetty.server.RequestLog requestLog) {
+            doSetProperty("requestLog", requestLog);
+            return this;
+        }
+    
         /**
          * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter
          * header to and from Camel message.
@@ -718,6 +734,7 @@ public interface JettyComponentBuilderFactory {
             case "httpBinding": ((JettyHttpComponent12) 
component).setHttpBinding((org.apache.camel.http.common.HttpBinding) value); 
return true;
             case "httpConfiguration": ((JettyHttpComponent12) 
component).setHttpConfiguration((org.apache.camel.http.common.HttpConfiguration)
 value); return true;
             case "mbContainer": ((JettyHttpComponent12) 
component).setMbContainer((org.eclipse.jetty.jmx.MBeanContainer) value); return 
true;
+            case "requestLog": ((JettyHttpComponent12) 
component).setRequestLog((org.eclipse.jetty.server.RequestLog) value); return 
true;
             case "headerFilterStrategy": ((JettyHttpComponent12) 
component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) 
value); return true;
             case "proxyHost": ((JettyHttpComponent12) 
component).setProxyHost((java.lang.String) value); return true;
             case "proxyPort": ((JettyHttpComponent12) 
component).setProxyPort((java.lang.Integer) value); return true;


Reply via email to