diff --git a/Jenkinsfile.talend b/Jenkinsfile.talend index 72a8b0ebdf89f..c9c7664f554fe 100644 --- a/Jenkinsfile.talend +++ b/Jenkinsfile.talend @@ -18,10 +18,13 @@ org.apache.camel:camel-support,\ \ org.apache.camel:camel-activemq,\ org.apache.camel:camel-activemq6,\ +org.apache.camel:camel-amqp,\ org.apache.camel:camel-as2-api,\ org.apache.camel:camel-aws2-kinesis,\ org.apache.camel:camel-aws2-s3,\ org.apache.camel:camel-aws2-sqs,\ +org.apache.camel:camel-coap,\ +org.apache.camel:camel-consul,\ org.apache.camel:camel-crypto,\ org.apache.camel:camel-cxf-common,\ org.apache.camel:camel-cxf-soap,\ @@ -43,8 +46,11 @@ org.apache.camel:camel-direct,\ org.apache.camel:camel-drill,\ org.apache.camel:camel-dynamic-router,\ org.apache.camel:camel-file,\ +org.apache.camel:camel-google-pubsub,\ org.apache.camel:camel-http,\ +org.apache.camel:camel-infinispan,\ org.apache.camel:camel-jaxb,\ +org.apache.camel:camel-jms,\ org.apache.camel:camel-jsonpath,\ org.apache.camel:camel-knative-http,\ org.apache.camel:camel-kubernetes,\ @@ -52,6 +58,7 @@ org.apache.camel:camel-langchain4j-core,\ org.apache.camel:camel-langchain4j-chat,\ org.apache.camel:camel-langchain4j-tools,\ org.apache.camel:camel-leveldb,\ +org.apache.camel:camel-mail,\ org.apache.camel:camel-mina,\ org.apache.camel:camel-minio,\ org.apache.camel:camel-mongodb,\ @@ -62,6 +69,8 @@ org.apache.camel:camel-quartz,\ org.apache.camel:camel-ref,\ org.apache.camel:camel-rest-openapi,\ org.apache.camel:camel-salesforce,\ +org.apache.camel:camel-sjms,\ +org.apache.camel:camel-sjms2,\ org.apache.camel:camel-smb,\ org.apache.camel:camel-spring,\ org.apache.camel:camel-sql,\ diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq.json index 977241862a6e5..c9eaa9fd20b4b 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq.json @@ -124,14 +124,15 @@ "headerFilterStrategy": { "index": 98, "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." }, "errorHandlerLoggingLevel": { "index": 99, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 100, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 101, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 102, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 103, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 104, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 105, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 106, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 107, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 108, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 101, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 102, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 103, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 104, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 105, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 106, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 107, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 108, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 109, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -248,13 +249,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 91, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 92, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 93, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 94, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 95, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 96, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 97, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 98, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 99, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 100, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 101, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 102, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq6.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq6.json index 218045a778834..e169fd0986743 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq6.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/activemq6.json @@ -124,14 +124,15 @@ "headerFilterStrategy": { "index": 98, "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." }, "errorHandlerLoggingLevel": { "index": 99, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 100, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 101, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 102, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 103, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 104, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 105, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 106, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 107, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 108, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 101, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 102, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 103, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 104, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 105, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 106, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 107, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 108, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 109, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -248,13 +249,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 91, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 92, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 93, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 94, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 95, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 96, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 97, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 98, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 99, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 100, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 101, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 102, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json index 9bf3893f0d0b4..c14d5617f0e9a 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json @@ -120,14 +120,15 @@ "headerFilterStrategy": { "index": 94, "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." }, "errorHandlerLoggingLevel": { "index": 95, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 96, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 97, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 98, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 99, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 100, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 101, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 102, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 103, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 104, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 97, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 98, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 99, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 100, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 101, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 102, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 103, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 104, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 105, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -243,13 +244,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 90, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 91, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 92, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 93, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 94, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 95, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 96, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 97, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 98, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 99, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 100, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 93, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap+tcp.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap+tcp.json index 4326dc08c8ddc..438f2155f4478 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap+tcp.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap+tcp.json @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap.json index 97366615d85aa..783fe161933de 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coap.json @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps+tcp.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps+tcp.json index 7a118727c38cc..67f2531195d88 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps+tcp.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps+tcp.json @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps.json index 036fc43f8755b..41c99247c1450 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/coaps.json @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-pubsub.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-pubsub.json index ae6c13155561f..4d687200158ed 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-pubsub.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-pubsub.json @@ -32,7 +32,8 @@ "publisherCacheSize": { "index": 6, "kind": "property", "displayName": "Publisher Cache Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Maximum number of producers to cache. This could be increased if you have producers for lots of different topics." }, "publisherCacheTimeout": { "index": 7, "kind": "property", "displayName": "Publisher Cache Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should each producer stay alive in the cache." }, "autowiredEnabled": { "index": 8, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, - "publisherTerminationTimeout": { "index": 9, "kind": "property", "displayName": "Publisher Termination Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should a producer be allowed to terminate." } + "publisherTerminationTimeout": { "index": 9, "kind": "property", "displayName": "Publisher Termination Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should a producer be allowed to terminate." }, + "headerFilterStrategy": { "index": 10, "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." } }, "headers": { "CamelGooglePubsubMessageId": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID of the message, assigned by the server when the message is published.", "constantName": "org.apache.camel.component.google.pubsub.GooglePubsubConstants#MESSAGE_ID" }, @@ -59,6 +60,8 @@ "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, "messageOrderingEnabled": { "index": 14, "kind": "parameter", "displayName": "Message Ordering Enabled", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Should message ordering be enabled" }, "pubsubEndpoint": { "index": 15, "kind": "parameter", "displayName": "Pubsub Endpoint", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Pub\/Sub endpoint to use. Required when using message ordering, and ensures that messages are received in order even when multiple publishers are used" }, - "serializer": { "index": 16, "kind": "parameter", "displayName": "Serializer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.pubsub.serializer.GooglePubsubSerializer", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "A custom GooglePubsubSerializer to use for serializing message payloads in the producer" } + "serializer": { "index": 16, "kind": "parameter", "displayName": "Serializer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.pubsub.serializer.GooglePubsubSerializer", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "A custom GooglePubsubSerializer to use for serializing message payloads in the producer" }, + "headerFilterStrategy": { "index": 15, "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." }, + "includeAllGoogleProperties": { "index": 16, "kind": "parameter", "displayName": "Include All Google Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include all Google headers when mapping from Pubsub to Camel Message. Setting this to true will include properties such as x-goog etc." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jms.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jms.json index a7b9b56d8e55f..2cd443f3fba04 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jms.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jms.json @@ -119,14 +119,15 @@ "headerFilterStrategy": { "index": 93, "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." }, "errorHandlerLoggingLevel": { "index": 94, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 95, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 96, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 97, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 98, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 99, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 100, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 101, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 102, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 103, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 96, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 97, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 98, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 99, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 100, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 101, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 102, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 103, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 104, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -242,13 +243,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 90, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 91, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 92, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 93, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 94, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 95, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 96, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 97, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 98, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 99, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 100, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 93, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms.json index 9978262d41989..ca0ad4ba403f3 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms.json @@ -34,7 +34,8 @@ "recoveryInterval": { "index": 8, "kind": "property", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "replyToOnTimeoutMaxConcurrentConsumers": { "index": 9, "kind": "property", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "description": "Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request\/reply over JMS." }, "requestTimeoutCheckerInterval": { "index": 10, "kind": "property", "displayName": "Request Timeout Checker Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Configures how often Camel should check for timed out Exchanges when doing request\/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout." }, - "headerFilterStrategy": { "index": 11, "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." } + "headerFilterStrategy": { "index": 11, "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." }, + "deserializationFilter": { "index": 12, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." } }, "headers": { "CamelJMSDestinationName": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name.", "constantName": "org.apache.camel.component.sjms.SjmsConstants#JMS_DESTINATION_NAME" }, @@ -88,6 +89,7 @@ "recoveryInterval": { "index": 42, "kind": "parameter", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "synchronous": { "index": 43, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used" }, "transferException": { "index": 44, "kind": "parameter", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a jakarta.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer!" }, - "transacted": { "index": 45, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } + "deserializationFilter": { "index": 45, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "transacted": { "index": 46, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms2.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms2.json index 6a2d012a207eb..f062b3ef6d42e 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms2.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sjms2.json @@ -34,7 +34,8 @@ "recoveryInterval": { "index": 8, "kind": "property", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "replyToOnTimeoutMaxConcurrentConsumers": { "index": 9, "kind": "property", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "description": "Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request\/reply over JMS." }, "requestTimeoutCheckerInterval": { "index": 10, "kind": "property", "displayName": "Request Timeout Checker Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Configures how often Camel should check for timed out Exchanges when doing request\/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout." }, - "headerFilterStrategy": { "index": 11, "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." } + "headerFilterStrategy": { "index": 11, "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." }, + "deserializationFilter": { "index": 12, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." } }, "headers": { "CamelJMSDestinationName": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name.", "constantName": "org.apache.camel.component.sjms.SjmsConstants#JMS_DESTINATION_NAME" }, @@ -91,6 +92,7 @@ "recoveryInterval": { "index": 45, "kind": "parameter", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "synchronous": { "index": 46, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used" }, "transferException": { "index": 47, "kind": "parameter", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a jakarta.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer!" }, - "transacted": { "index": 48, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } + "deserializationFilter": { "index": 48, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "transacted": { "index": 49, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } } } diff --git a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java index 587cd113ad40d..9a42030d06d1b 100644 --- a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java +++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java @@ -23,7 +23,7 @@ public class ActiveMQEndpointUriFactory extends org.apache.camel.support.compone private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(102); + Set props = new HashSet<>(103); props.add("acceptMessagesWhileStopping"); props.add("acknowledgementModeName"); props.add("allowAdditionalHeaders"); @@ -48,6 +48,7 @@ public class ActiveMQEndpointUriFactory extends org.apache.camel.support.compone props.add("deliveryDelay"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationName"); props.add("destinationOptions"); props.add("destinationResolver"); diff --git a/components/camel-activemq/src/generated/resources/META-INF/org/apache/camel/component/activemq/activemq.json b/components/camel-activemq/src/generated/resources/META-INF/org/apache/camel/component/activemq/activemq.json index 977241862a6e5..26a51f57e8f1f 100644 --- a/components/camel-activemq/src/generated/resources/META-INF/org/apache/camel/component/activemq/activemq.json +++ b/components/camel-activemq/src/generated/resources/META-INF/org/apache/camel/component/activemq/activemq.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-activemq", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "activemq", "extendsScheme": "jms", "syntax": "activemq:destinationType:destinationName", @@ -124,14 +124,15 @@ "headerFilterStrategy": { "index": 98, "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." }, "errorHandlerLoggingLevel": { "index": 99, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 100, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 101, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 102, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 103, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 104, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 105, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 106, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 107, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 108, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 101, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 102, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 103, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 104, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 105, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 106, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 107, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 108, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 109, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -248,13 +249,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 91, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 92, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 93, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 94, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 95, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 96, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 97, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 98, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 99, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 100, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 101, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 102, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/components/camel-activemq6/src/generated/java/org/apache/camel/component/activemq6/ActiveMQEndpointUriFactory.java b/components/camel-activemq6/src/generated/java/org/apache/camel/component/activemq6/ActiveMQEndpointUriFactory.java index e24936c472001..591e7c05e60f2 100644 --- a/components/camel-activemq6/src/generated/java/org/apache/camel/component/activemq6/ActiveMQEndpointUriFactory.java +++ b/components/camel-activemq6/src/generated/java/org/apache/camel/component/activemq6/ActiveMQEndpointUriFactory.java @@ -23,7 +23,7 @@ public class ActiveMQEndpointUriFactory extends org.apache.camel.support.compone private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(102); + Set props = new HashSet<>(103); props.add("acceptMessagesWhileStopping"); props.add("acknowledgementModeName"); props.add("allowAdditionalHeaders"); @@ -48,6 +48,7 @@ public class ActiveMQEndpointUriFactory extends org.apache.camel.support.compone props.add("deliveryDelay"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationName"); props.add("destinationOptions"); props.add("destinationResolver"); diff --git a/components/camel-activemq6/src/generated/resources/META-INF/org/apache/camel/component/activemq6/activemq6.json b/components/camel-activemq6/src/generated/resources/META-INF/org/apache/camel/component/activemq6/activemq6.json index 218045a778834..f6be39899cce9 100644 --- a/components/camel-activemq6/src/generated/resources/META-INF/org/apache/camel/component/activemq6/activemq6.json +++ b/components/camel-activemq6/src/generated/resources/META-INF/org/apache/camel/component/activemq6/activemq6.json @@ -11,7 +11,7 @@ "supportLevel": "Preview", "groupId": "org.apache.camel", "artifactId": "camel-activemq6", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "activemq6", "extendsScheme": "jms", "syntax": "activemq6:destinationType:destinationName", @@ -124,14 +124,15 @@ "headerFilterStrategy": { "index": 98, "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." }, "errorHandlerLoggingLevel": { "index": 99, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 100, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 101, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 102, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 103, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 104, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 105, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 106, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 107, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 108, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 101, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 102, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 103, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 104, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 105, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 106, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 107, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 108, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 109, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -248,13 +249,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 91, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 92, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 93, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 94, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 95, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 96, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 97, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 98, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 99, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 100, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 101, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 102, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/components/camel-amqp/pom.xml b/components/camel-amqp/pom.xml index e75d6e76a655d..45436e52e41ba 100644 --- a/components/camel-amqp/pom.xml +++ b/components/camel-amqp/pom.xml @@ -31,6 +31,11 @@ Camel :: AMQP Camel AMQP component which is based on the Apache Qpid project + ${revision} + + + ${camel-amqp.tesb.version} + diff --git a/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPEndpointUriFactory.java b/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPEndpointUriFactory.java index 0d671ab65cc87..4d1b2b56317f2 100644 --- a/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPEndpointUriFactory.java +++ b/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPEndpointUriFactory.java @@ -23,7 +23,7 @@ public class AMQPEndpointUriFactory extends org.apache.camel.support.component.E private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(101); + Set props = new HashSet<>(102); props.add("acceptMessagesWhileStopping"); props.add("acknowledgementModeName"); props.add("allowAdditionalHeaders"); @@ -48,6 +48,7 @@ public class AMQPEndpointUriFactory extends org.apache.camel.support.component.E props.add("deliveryDelay"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationName"); props.add("destinationResolver"); props.add("destinationType"); diff --git a/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json b/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json index 9bf3893f0d0b4..73be12352b98a 100644 --- a/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json +++ b/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-amqp", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "amqp", "extendsScheme": "jms", "syntax": "amqp:destinationType:destinationName", @@ -120,14 +120,15 @@ "headerFilterStrategy": { "index": 94, "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." }, "errorHandlerLoggingLevel": { "index": 95, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 96, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 97, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 98, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 99, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 100, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 101, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 102, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 103, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 104, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 97, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 98, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 99, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 100, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 101, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 102, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 103, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 104, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 105, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -243,13 +244,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 90, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 91, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 92, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 93, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 94, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 95, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 96, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 97, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 98, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 99, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 100, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 93, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/components/camel-coap/pom.xml b/components/camel-coap/pom.xml index f84611dde274d..08bcc6d5d0e2c 100644 --- a/components/camel-coap/pom.xml +++ b/components/camel-coap/pom.xml @@ -31,8 +31,10 @@ jar Camel :: CoAP Camel CoAP support + ${revision} + ${camel-coap.tesb.version} diff --git a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPComponentConfigurer.java b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPComponentConfigurer.java index 9e4a1d967cdef..6ca737480a64d 100644 --- a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPComponentConfigurer.java +++ b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPComponentConfigurer.java @@ -27,6 +27,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true; case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; + case "headerfilterstrategy": + case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; default: return false; @@ -40,6 +42,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "autowiredEnabled": return boolean.class; case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; + case "headerfilterstrategy": + case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; default: return null; @@ -54,6 +58,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "autowiredEnabled": return target.isAutowiredEnabled(); case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); + case "headerfilterstrategy": + case "headerFilterStrategy": return target.getHeaderFilterStrategy(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); default: return null; diff --git a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointConfigurer.java b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointConfigurer.java index 7e25f85d62069..2772a3406e386 100644 --- a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointConfigurer.java +++ b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointConfigurer.java @@ -40,6 +40,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true; case "exchangepattern": case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true; + case "headerfilterstrategy": + case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "notify": target.setNotify(property(camelContext, boolean.class, value)); return true; @@ -77,6 +79,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class; case "exchangepattern": case "exchangePattern": return org.apache.camel.ExchangePattern.class; + case "headerfilterstrategy": + case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "notify": return boolean.class; @@ -115,6 +119,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "exceptionHandler": return target.getExceptionHandler(); case "exchangepattern": case "exchangePattern": return target.getExchangePattern(); + case "headerfilterstrategy": + case "headerFilterStrategy": return target.getHeaderFilterStrategy(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); case "notify": return target.isNotify(); diff --git a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointUriFactory.java b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointUriFactory.java index 2eaae9933408e..10601ae88f123 100644 --- a/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointUriFactory.java +++ b/components/camel-coap/src/generated/java/org/apache/camel/coap/CoAPEndpointUriFactory.java @@ -24,7 +24,7 @@ public class CoAPEndpointUriFactory extends org.apache.camel.support.component.E private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(18); + Set props = new HashSet<>(19); props.add("advancedCertificateVerifier"); props.add("advancedPskStore"); props.add("alias"); @@ -34,6 +34,7 @@ public class CoAPEndpointUriFactory extends org.apache.camel.support.component.E props.add("coapMethodRestrict"); props.add("exceptionHandler"); props.add("exchangePattern"); + props.add("headerFilterStrategy"); props.add("lazyStartProducer"); props.add("notify"); props.add("observable"); diff --git a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap+tcp.json b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap+tcp.json index 4326dc08c8ddc..0d375e78658c5 100644 --- a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap+tcp.json +++ b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap+tcp.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-coap", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "coap+tcp", "extendsScheme": "", "alternativeSchemes": "coap,coaps,coap+tcp,coaps+tcp", @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap.json b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap.json index 97366615d85aa..d8c948885c996 100644 --- a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap.json +++ b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coap.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-coap", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "coap", "extendsScheme": "", "alternativeSchemes": "coap,coaps,coap+tcp,coaps+tcp", @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps+tcp.json b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps+tcp.json index 7a118727c38cc..97213c9bc0402 100644 --- a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps+tcp.json +++ b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps+tcp.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-coap", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "coaps+tcp", "extendsScheme": "", "alternativeSchemes": "coap,coaps,coap+tcp,coaps+tcp", @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps.json b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps.json index 036fc43f8755b..714cb744bc2e4 100644 --- a/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps.json +++ b/components/camel-coap/src/generated/resources/META-INF/org/apache/camel/coap/coaps.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-coap", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "coaps", "extendsScheme": "", "alternativeSchemes": "coap,coaps,coap+tcp,coaps+tcp", @@ -26,7 +26,8 @@ "componentProperties": { "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "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 messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." }, "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." } + "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "headerFilterStrategy": { "index": 3, "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." } }, "headers": { "CamelCoapETag": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "byte[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The CoAP ETag for the response.", "constantName": "org.apache.camel.coap.CoAPConstants#COAP_ETAG" }, @@ -45,14 +46,15 @@ "exchangePattern": { "index": 6, "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." }, "notify": { "index": 7, "kind": "parameter", "displayName": "Notify", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Notify observers that the resource of this URI has changed, based on RFC 7641. Use this flag on a destination endpoint, with a URI that matches an existing source endpoint URI." }, "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, - "advancedCertificateVerifier": { "index": 9, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, - "advancedPskStore": { "index": 10, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, - "alias": { "index": 11, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, - "cipherSuites": { "index": 12, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, - "clientAuthentication": { "index": 13, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, - "privateKey": { "index": 14, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, - "publicKey": { "index": 15, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, - "recommendedCipherSuitesOnly": { "index": 16, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, - "sslContextParameters": { "index": 17, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } + "headerFilterStrategy": { "index": 9, "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 header to and from Camel message." }, + "advancedCertificateVerifier": { "index": 10, "kind": "parameter", "displayName": "Advanced Certificate Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedCertificateVerifier to use to determine trust in raw public keys." }, + "advancedPskStore": { "index": 11, "kind": "parameter", "displayName": "Advanced Psk Store", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.scandium.dtls.pskstore.AdvancedPskStore", "deprecated": false, "autowired": false, "secret": false, "description": "Set the AdvancedPskStore to use for pre-shared key." }, + "alias": { "index": 12, "kind": "parameter", "displayName": "Alias", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "NONE", "WANT", "REQUIRE" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key." }, + "cipherSuites": { "index": 13, "kind": "parameter", "displayName": "Cipher Suites", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object." }, + "clientAuthentication": { "index": 14, "kind": "parameter", "displayName": "Client Authentication", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.eclipse.californium.elements.config.CertificateAuthenticationMode", "enum": [ "NONE", "WANTED", "NEEDED" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value." }, + "privateKey": { "index": 15, "kind": "parameter", "displayName": "Private Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": true, "description": "Set the configured private key for use with Raw Public Key." }, + "publicKey": { "index": 16, "kind": "parameter", "displayName": "Public Key", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.PublicKey", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configured public key for use with Raw Public Key." }, + "recommendedCipherSuitesOnly": { "index": 17, "kind": "parameter", "displayName": "Recommended Cipher Suites Only", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false." }, + "sslContextParameters": { "index": 18, "kind": "parameter", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS)." } } } diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java index dc4e0cfa995dd..e309e69afaff4 100644 --- a/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java +++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java @@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.camel.Message; +import org.apache.camel.spi.HeaderFilterStrategy; import org.eclipse.californium.core.CoapResource; import org.eclipse.californium.core.coap.CoAP.ResponseCode; import org.eclipse.californium.core.coap.MediaTypeRegistry; @@ -99,13 +100,22 @@ public void handleRequest(Exchange exchange) { camelExchange = consumer.createExchange(false); consumer.createUoW(camelExchange); + HeaderFilterStrategy strategy = consumer.getCoapEndpoint().getHeaderFilterStrategy(); OptionSet options = exchange.getRequest().getOptions(); for (String s : options.getUriQuery()) { int i = s.indexOf('='); + String name; + String value; if (i == -1) { - camelExchange.getIn().setHeader(s, ""); + name = s; + value = ""; } else { - camelExchange.getIn().setHeader(s.substring(0, i), s.substring(i + 1)); + name = s.substring(0, i); + value = s.substring(i + 1); + } + if (strategy == null + || !strategy.applyFilterToExternalHeaders(name, value, camelExchange)) { + camelExchange.getIn().setHeader(name, value); } } diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java index 48971ebc930f3..f411521ad4d9d 100644 --- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java +++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java @@ -31,6 +31,9 @@ import org.apache.camel.Consumer; import org.apache.camel.Endpoint; import org.apache.camel.Processor; +import org.apache.camel.spi.HeaderFilterStrategy; +import org.apache.camel.spi.HeaderFilterStrategyAware; +import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RestConfiguration; import org.apache.camel.spi.RestConsumerFactory; import org.apache.camel.spi.annotations.Component; @@ -55,10 +58,13 @@ * Represents the component that manages {@link CoAPEndpoint}. */ @Component("coap,coaps,coap+tcp,coaps+tcp") -public class CoAPComponent extends DefaultComponent implements RestConsumerFactory { +public class CoAPComponent extends DefaultComponent implements RestConsumerFactory, HeaderFilterStrategyAware { static final int DEFAULT_PORT = 5684; private static final Logger LOG = LoggerFactory.getLogger(CoAPComponent.class); + @Metadata(label = "filter", + description = "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message.") + private HeaderFilterStrategy headerFilterStrategy; final Map servers = new ConcurrentHashMap<>(); public CoAPComponent() { @@ -135,9 +141,25 @@ private static void doEnableDTLS(CoAPEndpoint endpoint, InetSocketAddress addres coapBuilder.setConnector(connector); } + @Override + public HeaderFilterStrategy getHeaderFilterStrategy() { + return headerFilterStrategy; + } + + /** + * To use a custom {@link org.apache.camel.spi.HeaderFilterStrategy} to filter header to and from Camel message. + */ + @Override + public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) { + this.headerFilterStrategy = headerFilterStrategy; + } + @Override protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception { - Endpoint endpoint = new CoAPEndpoint(uri, this); + CoAPEndpoint endpoint = new CoAPEndpoint(uri, this); + if (headerFilterStrategy != null) { + endpoint.setHeaderFilterStrategy(headerFilterStrategy); + } setProperties(endpoint, parameters); return endpoint; } diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java index 3024d4d4009e2..3d864027d59ee 100644 --- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java +++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java @@ -38,6 +38,8 @@ import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.spi.EndpointServiceLocation; +import org.apache.camel.spi.HeaderFilterStrategy; +import org.apache.camel.spi.HeaderFilterStrategyAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; @@ -76,7 +78,7 @@ */ @UriEndpoint(firstVersion = "2.16.0", scheme = "coap,coaps,coap+tcp,coaps+tcp", title = "CoAP", syntax = "coap:uri", category = { Category.IOT }, headersClass = CoAPConstants.class) -public class CoAPEndpoint extends DefaultEndpoint implements EndpointServiceLocation { +public class CoAPEndpoint extends DefaultEndpoint implements EndpointServiceLocation, HeaderFilterStrategyAware { final static Logger LOGGER = LoggerFactory.getLogger(CoAPEndpoint.class); @UriPath private URI uri; @@ -107,6 +109,9 @@ public class CoAPEndpoint extends DefaultEndpoint implements EndpointServiceLoca private boolean observable; @UriParam(label = "producer", defaultValue = "false") private boolean notify; + @UriParam(label = "advanced", + description = "To use a custom HeaderFilterStrategy to filter header to and from Camel message.") + private HeaderFilterStrategy headerFilterStrategy; private CoAPComponent component; @@ -257,6 +262,22 @@ public void setNotify(boolean notify) { this.notify = notify; } + @Override + public HeaderFilterStrategy getHeaderFilterStrategy() { + if (headerFilterStrategy == null) { + headerFilterStrategy = new CoAPHeaderFilterStrategy(); + } + return headerFilterStrategy; + } + + /** + * To use a custom {@link org.apache.camel.spi.HeaderFilterStrategy} to filter header to and from Camel message. + */ + @Override + public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) { + this.headerFilterStrategy = headerFilterStrategy; + } + /** * Get the SSLContextParameters object for setting up TLS. This is required for coaps+tcp, and for coaps when we are * using certificates for TLS (as opposed to RPK or PKS). diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPHeaderFilterStrategy.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPHeaderFilterStrategy.java new file mode 100644 index 0000000000000..827c14973796f --- /dev/null +++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPHeaderFilterStrategy.java @@ -0,0 +1,34 @@ +/* + * 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.coap; + +import org.apache.camel.support.DefaultHeaderFilterStrategy; + +/** + * Default header filter strategy for CoAP endpoints. + *

+ * Filters out Camel internal headers (starting with "Camel" or "camel") in both directions to prevent external CoAP + * clients from injecting internal Camel headers via query parameters. + */ +public class CoAPHeaderFilterStrategy extends DefaultHeaderFilterStrategy { + + public CoAPHeaderFilterStrategy() { + setLowerCase(true); + setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH); + } +} diff --git a/components/camel-consul/pom.xml b/components/camel-consul/pom.xml index 7cd9efda8f8fa..520d2753f3a08 100644 --- a/components/camel-consul/pom.xml +++ b/components/camel-consul/pom.xml @@ -31,8 +31,10 @@ jar Camel :: Consul Camel Consul support + ${revision} + ${camel-consul.tesb.version} true true diff --git a/components/camel-consul/src/generated/resources/META-INF/org/apache/camel/component/consul/consul.json b/components/camel-consul/src/generated/resources/META-INF/org/apache/camel/component/consul/consul.json index 6dfcc6e068d8a..92bd33475b612 100644 --- a/components/camel-consul/src/generated/resources/META-INF/org/apache/camel/component/consul/consul.json +++ b/components/camel-consul/src/generated/resources/META-INF/org/apache/camel/component/consul/consul.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-consul", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "consul", "extendsScheme": "", "syntax": "consul:apiEndpoint", diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java index 27c8231fd14a3..1952afcc34985 100644 --- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java +++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulRegistry.java @@ -19,6 +19,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.ObjectInputFilter; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; @@ -52,6 +53,7 @@ public class ConsulRegistry implements Registry { private int port = 8500; private Consul consul; private KeyValueClient kvClient; + private String deserializationFilter = "java.**;org.apache.camel.**;!*"; /* constructor with default port */ public ConsulRegistry(String hostname) { @@ -70,6 +72,9 @@ private ConsulRegistry(Builder builder) { this.hostname = builder.hostname; this.port = builder.port; this.consul = Consul.builder().withUrl("http://" + this.hostname + ":" + this.port).build(); + if (builder.deserializationFilter != null) { + this.deserializationFilter = builder.deserializationFilter; + } } @Override @@ -80,7 +85,7 @@ public Object lookupByName(String key) { return kvClient.getValueAsString(key).map(result -> { byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result); - return ConsulRegistryUtils.deserialize(postDecodedValue); + return ConsulRegistryUtils.deserialize(postDecodedValue, deserializationFilter); }).orElse(null); } @@ -213,7 +218,7 @@ public void put(String key, Object object) { if (lookupByName(key) != null) { remove(key); } - Object clone = ConsulRegistryUtils.clone((Serializable) object); + Object clone = ConsulRegistryUtils.clone((Serializable) object, deserializationFilter); byte[] serializedObject = ConsulRegistryUtils.serialize((Serializable) clone); // pre-encode due native encoding issues String value = ConsulRegistryUtils.encodeBase64(serializedObject); @@ -229,6 +234,7 @@ public static class Builder { String hostname; // optional parameter Integer port = 8500; + String deserializationFilter; public Builder(String hostname) { this.hostname = hostname; @@ -239,6 +245,11 @@ public Builder port(Integer port) { return this; } + public Builder deserializationFilter(String deserializationFilter) { + this.deserializationFilter = deserializationFilter; + return this; + } + public ConsulRegistry build() { return new ConsulRegistry(this); } @@ -260,6 +271,23 @@ public void setPort(int port) { this.port = port; } + /** + * Gets the deserialization filter applied when reading objects from Consul KV store. + */ + public String getDeserializationFilter() { + return deserializationFilter; + } + + /** + * Sets a deserialization filter while reading objects from Consul KV store. By default the filter will allow all + * java packages and subpackages and all org.apache.camel packages and subpackages, while the remaining will be + * blacklisted and not deserialized. This parameter should be customized if you're using classes you trust to be + * deserialized. + */ + public void setDeserializationFilter(String deserializationFilter) { + this.deserializationFilter = deserializationFilter; + } + static final class ConsulRegistryUtils { private ConsulRegistryUtils() { @@ -290,11 +318,15 @@ static String encodeBase64(final byte[] binaryData) { /** * Deserializes an object out of the given byte array. * - * @param bytes the byte array to deserialize from - * @return an {@link Object} deserialized from the given byte array + * @param bytes the byte array to deserialize from + * @param deserializationFilter the deserialization filter to apply (e.g. "java.**;org.apache.camel.**;!*") + * @return an {@link Object} deserialized from the given byte array */ - static Object deserialize(byte[] bytes) { + static Object deserialize(byte[] bytes, String deserializationFilter) { try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) { + if (deserializationFilter != null && !deserializationFilter.isEmpty()) { + in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter)); + } return in.readObject(); } catch (IOException | ClassNotFoundException e) { throw new RuntimeCamelException(e); @@ -304,11 +336,12 @@ static Object deserialize(byte[] bytes) { /** * A deep serialization based clone * - * @param object the object to clone - * @return a deep clone + * @param object the object to clone + * @param deserializationFilter the deserialization filter to apply + * @return a deep clone */ - static Object clone(Serializable object) { - return deserialize(serialize(object)); + static Object clone(Serializable object, String deserializationFilter) { + return deserialize(serialize(object), deserializationFilter); } /** diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java index 696a7ada83475..0aba6a2074baf 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java @@ -33,9 +33,10 @@ public class ConsulRegistryUtilsTest { @Test public void encodeDecode() { + final String filter = "java.**;org.apache.camel.**;!*"; final List src = Arrays.asList("one", "\u0434\u0432\u0430", "t\u0159i"); final byte[] serialized = ConsulRegistryUtils.serialize((Serializable) src); - assertEquals(src, ConsulRegistryUtils.deserialize(serialized)); + assertEquals(src, ConsulRegistryUtils.deserialize(serialized, filter)); final String encoded = ConsulRegistryUtils.encodeBase64(serialized); assertEquals("rO0ABXNyABpqYXZhLnV0aWwuQXJyYXlzJEFycmF5TGlzdNmkPL7NiAbSAgABWwABYXQAE1tMamF2YS9sYW5nL09iamVjdDt4" + "cHVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAN0AANvbmV0AAbQtNCy0LB0AAR0xZlp", @@ -53,7 +54,7 @@ public void encodeDecode() { -48, -76, -48, -78, -48, -80, 116, 0, 4, 116, -59, -103, 105 }, decoded); - assertEquals(src, ConsulRegistryUtils.deserialize(decoded)); + assertEquals(src, ConsulRegistryUtils.deserialize(decoded, filter)); } } diff --git a/components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java b/components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java index 51c8e184d3683..422e1d3144bcc 100644 --- a/components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java +++ b/components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java @@ -35,6 +35,7 @@ protected void initialize() { // filter headers begin with "Camel" or "org.apache.camel" setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH); } diff --git a/components/camel-cxf/camel-cxf-transport/pom.xml b/components/camel-cxf/camel-cxf-transport/pom.xml index 84415c9d592d8..bc7e975abd9bd 100644 --- a/components/camel-cxf/camel-cxf-transport/pom.xml +++ b/components/camel-cxf/camel-cxf-transport/pom.xml @@ -34,7 +34,7 @@ Camel Transport for Apache CXF - ${camel-cxf.tesb.version} + ${camel-cxf-transport.tesb.version} 2.8.0 CXF Transport diff --git a/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/header/CxfHeaderFilterStrategy.java b/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/header/CxfHeaderFilterStrategy.java index 538e14dc584fe..921c45f94b5f0 100644 --- a/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/header/CxfHeaderFilterStrategy.java +++ b/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/header/CxfHeaderFilterStrategy.java @@ -97,6 +97,7 @@ protected void initialize() { // filter headers begin with "Camel" or "org.apache.camel" setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH); } @SuppressWarnings("unchecked") diff --git a/components/camel-google/camel-google-pubsub/pom.xml b/components/camel-google/camel-google-pubsub/pom.xml index 3ca725fb4782b..a3a44b047fca2 100644 --- a/components/camel-google/camel-google-pubsub/pom.xml +++ b/components/camel-google/camel-google-pubsub/pom.xml @@ -31,8 +31,10 @@ jar Camel :: Google :: PubSub Camel Component for Google Cloud Platform PubSub + ${revision} + ${camel-google-pubsub.tesb.version} google-pubsub GooglePubSub org.apache.camel.component.google.pubsub diff --git a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubComponentConfigurer.java b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubComponentConfigurer.java index 5a577af5ae7a7..f0e979a507ed7 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubComponentConfigurer.java +++ b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubComponentConfigurer.java @@ -29,6 +29,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; case "endpoint": target.setEndpoint(property(camelContext, java.lang.String.class, value)); return true; + case "headerfilterstrategy": + case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "publishercachesize": @@ -54,6 +56,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; case "endpoint": return java.lang.String.class; + case "headerfilterstrategy": + case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "publishercachesize": @@ -80,6 +84,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); case "endpoint": return target.getEndpoint(); + case "headerfilterstrategy": + case "headerFilterStrategy": return target.getHeaderFilterStrategy(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); case "publishercachesize": diff --git a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointConfigurer.java b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointConfigurer.java index ea672cece6d14..eec5874422fc0 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointConfigurer.java +++ b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointConfigurer.java @@ -34,6 +34,10 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true; case "exchangepattern": case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true; + case "headerfilterstrategy": + case "headerFilterStrategy": target.setHeaderFilterStrategy(property(camelContext, org.apache.camel.spi.HeaderFilterStrategy.class, value)); return true; + case "includeallgoogleproperties": + case "includeAllGoogleProperties": target.setIncludeAllGoogleProperties(property(camelContext, boolean.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "loggerid": @@ -74,6 +78,10 @@ public Class getOptionType(String name, boolean ignoreCase) { case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class; case "exchangepattern": case "exchangePattern": return org.apache.camel.ExchangePattern.class; + case "headerfilterstrategy": + case "headerFilterStrategy": return org.apache.camel.spi.HeaderFilterStrategy.class; + case "includeallgoogleproperties": + case "includeAllGoogleProperties": return boolean.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "loggerid": @@ -110,6 +118,10 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "exceptionHandler": return target.getExceptionHandler(); case "exchangepattern": case "exchangePattern": return target.getExchangePattern(); + case "headerfilterstrategy": + case "headerFilterStrategy": return target.getHeaderFilterStrategy(); + case "includeallgoogleproperties": + case "includeAllGoogleProperties": return target.isIncludeAllGoogleProperties(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); case "loggerid": diff --git a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointUriFactory.java b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointUriFactory.java index c463876457eb2..ab4215e5d0d4f 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointUriFactory.java +++ b/components/camel-google/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointUriFactory.java @@ -23,7 +23,7 @@ public class GooglePubsubEndpointUriFactory extends org.apache.camel.support.com private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(17); + Set props = new HashSet<>(19); props.add("ackMode"); props.add("authenticate"); props.add("bridgeErrorHandler"); @@ -31,6 +31,8 @@ public class GooglePubsubEndpointUriFactory extends org.apache.camel.support.com props.add("destinationName"); props.add("exceptionHandler"); props.add("exchangePattern"); + props.add("headerFilterStrategy"); + props.add("includeAllGoogleProperties"); props.add("lazyStartProducer"); props.add("loggerId"); props.add("maxAckExtensionPeriod"); diff --git a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/org/apache/camel/component/google/pubsub/google-pubsub.json b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/org/apache/camel/component/google/pubsub/google-pubsub.json index ae6c13155561f..1b091b4470b85 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/org/apache/camel/component/google/pubsub/google-pubsub.json +++ b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/org/apache/camel/component/google/pubsub/google-pubsub.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-google-pubsub", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "google-pubsub", "extendsScheme": "", "syntax": "google-pubsub:projectId:destinationName", @@ -32,7 +32,8 @@ "publisherCacheSize": { "index": 6, "kind": "property", "displayName": "Publisher Cache Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Maximum number of producers to cache. This could be increased if you have producers for lots of different topics." }, "publisherCacheTimeout": { "index": 7, "kind": "property", "displayName": "Publisher Cache Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should each producer stay alive in the cache." }, "autowiredEnabled": { "index": 8, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, - "publisherTerminationTimeout": { "index": 9, "kind": "property", "displayName": "Publisher Termination Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should a producer be allowed to terminate." } + "publisherTerminationTimeout": { "index": 9, "kind": "property", "displayName": "Publisher Termination Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "How many milliseconds should a producer be allowed to terminate." }, + "headerFilterStrategy": { "index": 10, "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." } }, "headers": { "CamelGooglePubsubMessageId": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID of the message, assigned by the server when the message is published.", "constantName": "org.apache.camel.component.google.pubsub.GooglePubsubConstants#MESSAGE_ID" }, @@ -59,6 +60,8 @@ "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, "messageOrderingEnabled": { "index": 14, "kind": "parameter", "displayName": "Message Ordering Enabled", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Should message ordering be enabled" }, "pubsubEndpoint": { "index": 15, "kind": "parameter", "displayName": "Pubsub Endpoint", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Pub\/Sub endpoint to use. Required when using message ordering, and ensures that messages are received in order even when multiple publishers are used" }, - "serializer": { "index": 16, "kind": "parameter", "displayName": "Serializer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.pubsub.serializer.GooglePubsubSerializer", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "A custom GooglePubsubSerializer to use for serializing message payloads in the producer" } + "serializer": { "index": 16, "kind": "parameter", "displayName": "Serializer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.pubsub.serializer.GooglePubsubSerializer", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "description": "A custom GooglePubsubSerializer to use for serializing message payloads in the producer" }, + "headerFilterStrategy": { "index": 17, "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." }, + "includeAllGoogleProperties": { "index": 18, "kind": "parameter", "displayName": "Include All Google Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include all Google headers when mapping from Pubsub to Camel Message. Setting this to true will include properties such as x-goog etc." } } } diff --git a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties index b726303d3693e..c56594c05ff85 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties +++ b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties @@ -2,6 +2,6 @@ transformers=google-pubsub:application-cloudevents groupId=org.apache.camel artifactId=camel-google-pubsub -version=4.8.1-SNAPSHOT +version=4.8.1.20260608 projectName=Camel :: Google :: PubSub projectDescription=Camel Component for Google Cloud Platform PubSub diff --git a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-pubsub-application-cloudevents.json b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-pubsub-application-cloudevents.json index 0358392fa3207..c416b3088990b 100644 --- a/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-pubsub-application-cloudevents.json +++ b/components/camel-google/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-pubsub-application-cloudevents.json @@ -8,7 +8,7 @@ "javaType": "org.apache.camel.component.google.pubsub.transform.GooglePubsubCloudEventDataTypeTransformer", "groupId": "org.apache.camel", "artifactId": "camel-google-pubsub", - "version": "4.8.1-SNAPSHOT" + "version": "4.8.1.20260608" } } diff --git a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java index 2dcb1ddfb349e..0c907a9a9ab35 100644 --- a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java +++ b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java @@ -49,7 +49,7 @@ import org.apache.camel.RuntimeCamelException; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Component; -import org.apache.camel.support.DefaultComponent; +import org.apache.camel.support.HeaderFilterStrategyComponent; import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; @@ -61,7 +61,7 @@ * Represents the component that manages {@link GooglePubsubEndpoint}. */ @Component("google-pubsub") -public class GooglePubsubComponent extends DefaultComponent { +public class GooglePubsubComponent extends HeaderFilterStrategyComponent { private static final Logger LOG = LoggerFactory.getLogger(GooglePubsubComponent.class); @Metadata( @@ -139,6 +139,9 @@ protected Endpoint createEndpoint(String uri, String remaining, Map subscribers; private final Set> pendingSynchronousPullResponses; + private final HeaderFilterStrategy headerFilterStrategy; GooglePubsubConsumer(GooglePubsubEndpoint endpoint, Processor processor) { super(endpoint, processor); @@ -71,6 +73,7 @@ public class GooglePubsubConsumer extends DefaultConsumer { } localLog = LoggerFactory.getLogger(loggerId); + headerFilterStrategy = endpoint.getHeaderFilterStrategy(); } @Override @@ -187,9 +190,11 @@ private void synchronousPull(String subscriptionName) throws ExecutionException, Exchange exchange = createExchange(true); exchange.getIn().setBody(pubsubMessage.getData().toByteArray()); + // Standard headers exchange.getIn().setHeader(GooglePubsubConstants.ACK_ID, message.getAckId()); exchange.getIn().setHeader(GooglePubsubConstants.MESSAGE_ID, pubsubMessage.getMessageId()); exchange.getIn().setHeader(GooglePubsubConstants.PUBLISH_TIME, pubsubMessage.getPublishTime()); + // Deprecated: replaced by headerFilterStrategy exchange.getIn().setHeader(GooglePubsubConstants.ATTRIBUTES, pubsubMessage.getAttributesMap()); //existing subscriber can not be propagated, because it will be closed at the end of this block @@ -204,6 +209,16 @@ private void synchronousPull(String subscriptionName) throws ExecutionException, exchange.getIn().setHeader(GooglePubsubConstants.GOOGLE_PUBSUB_ACKNOWLEDGE, acknowledge); } + // Inherit the rest of headers + for (String pubSubHeader : pubsubMessage.getAttributesMap().keySet()) { + String value = pubsubMessage.getAttributesMap().get(pubSubHeader); + if (headerFilterStrategy != null + && headerFilterStrategy.applyFilterToExternalHeaders(pubSubHeader, value, exchange)) { + continue; + } + exchange.getIn().setHeader(pubSubHeader, value); + } + try { processor.process(exchange); } catch (Exception e) { diff --git a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java index b714ab3a95bf1..14315bdb65b60 100644 --- a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java +++ b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java @@ -41,7 +41,7 @@ @UriEndpoint(firstVersion = "2.19.0", scheme = "google-pubsub", title = "Google Pubsub", syntax = "google-pubsub:projectId:destinationName", category = { Category.CLOUD, Category.MESSAGING }, headersClass = GooglePubsubConstants.class) -public class GooglePubsubEndpoint extends DefaultEndpoint implements EndpointServiceLocation { +public class GooglePubsubEndpoint extends DefaultEndpoint implements EndpointServiceLocation, HeaderFilterStrategyAware { private Logger log; @@ -104,6 +104,15 @@ public class GooglePubsubEndpoint extends DefaultEndpoint implements EndpointSer @Metadata(autowired = true) private GooglePubsubSerializer serializer; + @UriParam(label = "advanced", + description = "Whether to include all Google headers when mapping from Pubsub to Camel Message." + + " Setting this to true will include properties such as x-goog etc.") + private boolean includeAllGoogleProperties; + + @UriParam(label = "advanced", + description = "To use a custom HeaderFilterStrategy to filter headers to and from Camel message.") + private HeaderFilterStrategy headerFilterStrategy; + public GooglePubsubEndpoint(String uri, Component component) { super(uri, component); @@ -131,6 +140,10 @@ public void afterPropertiesSet() { log.trace("Project ID: {}", this.projectId); log.trace("Destination Name: {}", this.destinationName); + + if (headerFilterStrategy == null) { + headerFilterStrategy = new GooglePubsubHeaderFilterStrategy(includeAllGoogleProperties); + } } @Override @@ -212,6 +225,14 @@ public void setMaxMessagesPerPoll(Integer maxMessagesPerPoll) { this.maxMessagesPerPoll = maxMessagesPerPoll; } + public boolean isIncludeAllGoogleProperties() { + return includeAllGoogleProperties; + } + + public void setIncludeAllGoogleProperties(Boolean includeAllGoogleProperties) { + this.includeAllGoogleProperties = includeAllGoogleProperties; + } + public boolean isSynchronousPull() { return synchronousPull; } @@ -280,4 +301,14 @@ public Map getServiceMetadata() { } return null; } + + @Override + public HeaderFilterStrategy getHeaderFilterStrategy() { + return headerFilterStrategy; + } + + @Override + public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) { + this.headerFilterStrategy = headerFilterStrategy; + } } diff --git a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubHeaderFilterStrategy.java b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubHeaderFilterStrategy.java new file mode 100644 index 0000000000000..8f75c1aa4fecb --- /dev/null +++ b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubHeaderFilterStrategy.java @@ -0,0 +1,53 @@ +/* + * 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.google.pubsub; + +import org.apache.camel.support.DefaultHeaderFilterStrategy; + +public class GooglePubsubHeaderFilterStrategy extends DefaultHeaderFilterStrategy { + + public GooglePubsubHeaderFilterStrategy() { + this(false); + } + + public GooglePubsubHeaderFilterStrategy(boolean includeAllGoogleProperties) { + setLowerCase(true); + setOutFilterStartsWith(DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH); + // Filter authorization on both directions for security + getOutFilter().add("authorization"); + getInFilter().add("authorization"); + if (!includeAllGoogleProperties) { + ignoreGoogProperties(); + } + } + + protected void ignoreGoogProperties() { + String[] filterStartWith = new String[DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH.length + 3]; + System.arraycopy(DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH, 0, + filterStartWith, 0, DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH.length); + filterStartWith[DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH.length] = "x-goog"; + filterStartWith[DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH.length + 1] = "X-GOOG"; + filterStartWith[DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH.length + 2] = "goog"; + setOutFilterStartsWith(filterStartWith); + setInFilterStartsWith(filterStartWith); + // Filter grpc-timeout on both directions + getOutFilter().add("grpc-timeout"); + getInFilter().add("grpc-timeout"); + } + +} diff --git a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java index 34d27063950f4..bfc64825d1e1a 100644 --- a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java +++ b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java @@ -25,6 +25,7 @@ import com.google.protobuf.ByteString; import com.google.pubsub.v1.PubsubMessage; import org.apache.camel.Exchange; +import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.support.DefaultProducer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +40,7 @@ public class GooglePubsubProducer extends DefaultProducer { public Logger logger; + private final HeaderFilterStrategy headerFilterStrategy; public GooglePubsubProducer(GooglePubsubEndpoint endpoint) { super(endpoint); @@ -50,6 +52,7 @@ public GooglePubsubProducer(GooglePubsubEndpoint endpoint) { } logger = LoggerFactory.getLogger(loggerId); + headerFilterStrategy = endpoint.getHeaderFilterStrategy(); } /** @@ -98,6 +101,9 @@ private void send(Exchange exchange) throws Exception { } PubsubMessage.Builder messageBuilder = PubsubMessage.newBuilder().setData(byteString); + + // Deprecated: start + // Replaced by headerFilterStrategy Map attributes = exchange.getIn().getHeader(ATTRIBUTES, Map.class); if (attributes != null) { for (Map.Entry attribute : attributes.entrySet()) { @@ -106,11 +112,23 @@ private void send(Exchange exchange) throws Exception { } } } + // Deprecated: end + String orderingKey = exchange.getIn().getHeader(ORDERING_KEY, String.class); if (orderingKey != null) { messageBuilder.setOrderingKey(orderingKey); } + // Inherit the rest of headers + for (String camelHeader : exchange.getIn().getHeaders().keySet()) { + String value = exchange.getIn().getHeader(camelHeader, String.class); + if (headerFilterStrategy != null + && headerFilterStrategy.applyFilterToCamelHeaders(camelHeader, value, exchange)) { + continue; + } + messageBuilder.putAttributes(camelHeader, value); + } + PubsubMessage message = messageBuilder.build(); ApiFuture messageIdFuture = publisher.publish(message); diff --git a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/CamelMessageReceiver.java b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/CamelMessageReceiver.java index d7a267cc81d7b..5f8cb320ed286 100644 --- a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/CamelMessageReceiver.java +++ b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/CamelMessageReceiver.java @@ -25,6 +25,7 @@ import org.apache.camel.component.google.pubsub.GooglePubsubConstants; import org.apache.camel.component.google.pubsub.GooglePubsubConsumer; import org.apache.camel.component.google.pubsub.GooglePubsubEndpoint; +import org.apache.camel.spi.HeaderFilterStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,7 @@ public class CamelMessageReceiver implements MessageReceiver { private final GooglePubsubConsumer consumer; private final GooglePubsubEndpoint endpoint; private final Processor processor; + private final HeaderFilterStrategy headerFilterStrategy; public CamelMessageReceiver(GooglePubsubConsumer consumer, GooglePubsubEndpoint endpoint, Processor processor) { this.consumer = consumer; @@ -44,6 +46,7 @@ public CamelMessageReceiver(GooglePubsubConsumer consumer, GooglePubsubEndpoint loggerId = this.getClass().getName(); } localLog = LoggerFactory.getLogger(loggerId); + headerFilterStrategy = endpoint.getHeaderFilterStrategy(); } @Override @@ -55,8 +58,10 @@ public void receiveMessage(PubsubMessage pubsubMessage, AckReplyConsumer ackRepl Exchange exchange = consumer.createExchange(true); exchange.getIn().setBody(pubsubMessage.getData().toByteArray()); + // Standard headers exchange.getIn().setHeader(GooglePubsubConstants.MESSAGE_ID, pubsubMessage.getMessageId()); exchange.getIn().setHeader(GooglePubsubConstants.PUBLISH_TIME, pubsubMessage.getPublishTime()); + // Deprecated: replaced by headerFilterStrategy exchange.getIn().setHeader(GooglePubsubConstants.ATTRIBUTES, pubsubMessage.getAttributesMap()); GooglePubsubAcknowledge acknowledge = new AcknowledgeAsync(ackReplyConsumer); @@ -66,6 +71,16 @@ public void receiveMessage(PubsubMessage pubsubMessage, AckReplyConsumer ackRepl exchange.getIn().setHeader(GooglePubsubConstants.GOOGLE_PUBSUB_ACKNOWLEDGE, acknowledge); } + // Inherit the rest of headers + for (String pubSubHeader : pubsubMessage.getAttributesMap().keySet()) { + String value = pubsubMessage.getAttributesMap().get(pubSubHeader); + if (headerFilterStrategy != null + && headerFilterStrategy.applyFilterToExternalHeaders(pubSubHeader, value, exchange)) { + continue; + } + exchange.getIn().setHeader(pubSubHeader, value); + } + try { processor.process(exchange); } catch (Exception e) { diff --git a/components/camel-infinispan/camel-infinispan/pom.xml b/components/camel-infinispan/camel-infinispan/pom.xml index 1125215a0889d..c4664b17617dc 100644 --- a/components/camel-infinispan/camel-infinispan/pom.xml +++ b/components/camel-infinispan/camel-infinispan/pom.xml @@ -31,8 +31,10 @@ jar Camel :: Infinispan :: Remote Camel Infinispan Remote support + ${revision} + ${camel-infinispan.tesb.version} true true diff --git a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json index e422cb785380a..283be4b7e16d8 100644 --- a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json +++ b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-infinispan", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "infinispan", "extendsScheme": "", "syntax": "infinispan:cacheName", diff --git a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean.properties b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean.properties index 63084ac17ac97..af178d35eae4b 100644 --- a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean.properties +++ b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean.properties @@ -2,6 +2,6 @@ bean=InfinispanRemoteAggregationRepository InfinispanRemoteIdempotentRepository groupId=org.apache.camel artifactId=camel-infinispan -version=4.8.1-SNAPSHOT +version=4.8.1.20260608 projectName=Camel :: Infinispan :: Remote projectDescription=Camel Infinispan Remote support diff --git a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteAggregationRepository.json b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteAggregationRepository.json index 88ba2ec9e27b1..1f5be60fb0d00 100644 --- a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteAggregationRepository.json +++ b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteAggregationRepository.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-infinispan", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "properties": { "cacheName": { "index": 0, "kind": "property", "displayName": "Cache Name", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of cache" }, "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "required": false, "type": "object", "javaType": "org.apache.camel.component.infinispan.remote.InfinispanRemoteConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Configuration for remote Infinispan" }, "useRecovery": { "index": 2, "kind": "property", "displayName": "Use Recovery", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "description": "Whether or not recovery is enabled" }, "deadLetterUri": { "index": 3, "kind": "property", "displayName": "Dead Letter Uri", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an optional dead letter channel which exhausted recovered Exchange should be send to." }, "recoveryInterval": { "index": 4, "kind": "property", "displayName": "Recovery Interval", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Sets the interval between recovery scans" }, "maximumRedeliveries": { "index": 5, "kind": "property", "displayName": "Maximum Redeliveries", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3", "description": "Sets an optional limit of the number of redelivery attempt of recovered Exchange should be attempted, before its exhausted. When this limit is hit, then the Exchange is moved to the dead letter channel." }, "allowSerializedHeaders": { "index": 6, "kind": "property", "displayName": "Allow Serialized Headers", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether headers on the Exchange that are Java objects and Serializable should be included and saved to the repository" } } } } diff --git a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteIdempotentRepository.json b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteIdempotentRepository.json index 4bccd95af693a..d2cd382f3102a 100644 --- a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteIdempotentRepository.json +++ b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/services/org/apache/camel/bean/InfinispanRemoteIdempotentRepository.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-infinispan", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "properties": { "cacheName": { "index": 0, "kind": "property", "displayName": "Cache Name", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of cache" }, "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "required": false, "type": "object", "javaType": "org.apache.camel.component.infinispan.remote.InfinispanRemoteConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Configuration for remote Infinispan" } } } } diff --git a/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtils.java b/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtils.java index b439ed623014a..62d46e67f5c36 100644 --- a/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtils.java +++ b/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtils.java @@ -19,17 +19,28 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.ObjectInputFilter; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.apache.camel.support.DefaultExchangeHolder; import org.apache.camel.util.ClassLoadingAwareObjectInputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Utilities for {@link DefaultExchangeHolder} and the Infinispan Protostream marshaller. */ final class DefaultExchangeHolderUtils { + /** + * Default deserialization filter that restricts which classes can be deserialized. Allows standard Java types and + * Apache Camel types. Can be overridden via the JVM system property {@code jdk.serialFilter}. + */ + static final String DEFAULT_DESERIALIZATION_FILTER = "java.**;javax.**;org.apache.camel.**;!*"; + + private static final Logger LOG = LoggerFactory.getLogger(DefaultExchangeHolderUtils.class); + private DefaultExchangeHolderUtils() { // Utility class } @@ -46,6 +57,14 @@ static byte[] serialize(DefaultExchangeHolder holder) { static DefaultExchangeHolder deserialize(byte[] bytes) { try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ClassLoadingAwareObjectInputStream(bais)) { + ObjectInputFilter jvmFilter = ObjectInputFilter.Config.getSerialFilter(); + if (jvmFilter != null) { + ois.setObjectInputFilter(jvmFilter); + } else { + LOG.debug("No JVM-wide deserialization filter set, applying default Camel filter: {}", + DEFAULT_DESERIALIZATION_FILTER); + ois.setObjectInputFilter(ObjectInputFilter.Config.createFilter(DEFAULT_DESERIALIZATION_FILTER)); + } return (DefaultExchangeHolder) ois.readObject(); } catch (IOException | ClassNotFoundException e) { throw new RuntimeException(e); diff --git a/components/camel-infinispan/camel-infinispan/src/test/java/com/example/external/NotAllowedSerializable.java b/components/camel-infinispan/camel-infinispan/src/test/java/com/example/external/NotAllowedSerializable.java new file mode 100644 index 0000000000000..204d84216745b --- /dev/null +++ b/components/camel-infinispan/camel-infinispan/src/test/java/com/example/external/NotAllowedSerializable.java @@ -0,0 +1,37 @@ +/* + * 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 com.example.external; + +import java.io.Serializable; + +/** + * Serializable type living outside the {@code java.**}, {@code javax.**} and {@code org.apache.camel.**} packages, used + * to verify that the default deserialization allowlist rejects unknown classes. + */ +public final class NotAllowedSerializable implements Serializable { + private static final long serialVersionUID = 1L; + + private final String value; + + public NotAllowedSerializable(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/components/camel-infinispan/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtilsTest.java b/components/camel-infinispan/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtilsTest.java new file mode 100644 index 0000000000000..1b18b3a7fd931 --- /dev/null +++ b/components/camel-infinispan/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/remote/protostream/DefaultExchangeHolderUtilsTest.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.infinispan.remote.protostream; + +import java.io.ByteArrayOutputStream; +import java.io.ObjectOutputStream; + +import com.example.external.NotAllowedSerializable; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.support.DefaultExchange; +import org.apache.camel.support.DefaultExchangeHolder; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class DefaultExchangeHolderUtilsTest { + + @Test + public void testDeserializeAcceptsDefaultExchangeHolder() { + DefaultCamelContext context = new DefaultCamelContext(); + DefaultExchange exchange = new DefaultExchange(context); + exchange.getIn().setBody("hello"); + + DefaultExchangeHolder holder = DefaultExchangeHolder.marshal(exchange, true); + byte[] bytes = DefaultExchangeHolderUtils.serialize(holder); + + DefaultExchangeHolder roundTripped = DefaultExchangeHolderUtils.deserialize(bytes); + assertNotNull(roundTripped); + + DefaultExchange restored = new DefaultExchange(context); + DefaultExchangeHolder.unmarshal(restored, roundTripped); + assertEquals("hello", restored.getIn().getBody()); + } + + @Test + public void testDeserializeRejectsUnlistedType() throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(new NotAllowedSerializable("blocked")); + } + + RuntimeException thrown = assertThrows(RuntimeException.class, + () -> DefaultExchangeHolderUtils.deserialize(baos.toByteArray())); + Throwable cause = thrown.getCause(); + assertNotNull(cause); + } +} diff --git a/components/camel-jms/pom.xml b/components/camel-jms/pom.xml index 5e0c30754bac0..214f6d0406581 100644 --- a/components/camel-jms/pom.xml +++ b/components/camel-jms/pom.xml @@ -31,8 +31,10 @@ Camel :: JMS Camel JMS support + ${revision} + ${camel-jms.tesb.version} true 1 1200 diff --git a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java index 501103209df4a..8fa9c9f35573d 100644 --- a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java +++ b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java @@ -85,6 +85,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "deliveryMode": getOrCreateConfiguration(target).setDeliveryMode(property(camelContext, java.lang.Integer.class, value)); return true; case "deliverypersistent": case "deliveryPersistent": getOrCreateConfiguration(target).setDeliveryPersistent(property(camelContext, boolean.class, value)); return true; + case "deserializationfilter": + case "deserializationFilter": getOrCreateConfiguration(target).setDeserializationFilter(property(camelContext, java.lang.String.class, value)); return true; case "destinationresolver": case "destinationResolver": getOrCreateConfiguration(target).setDestinationResolver(property(camelContext, org.springframework.jms.support.destination.DestinationResolver.class, value)); return true; case "disablereplyto": @@ -293,6 +295,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "deliveryMode": return java.lang.Integer.class; case "deliverypersistent": case "deliveryPersistent": return boolean.class; + case "deserializationfilter": + case "deserializationFilter": return java.lang.String.class; case "destinationresolver": case "destinationResolver": return org.springframework.jms.support.destination.DestinationResolver.class; case "disablereplyto": @@ -502,6 +506,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "deliveryMode": return getOrCreateConfiguration(target).getDeliveryMode(); case "deliverypersistent": case "deliveryPersistent": return getOrCreateConfiguration(target).isDeliveryPersistent(); + case "deserializationfilter": + case "deserializationFilter": return getOrCreateConfiguration(target).getDeserializationFilter(); case "destinationresolver": case "destinationResolver": return getOrCreateConfiguration(target).getDestinationResolver(); case "disablereplyto": diff --git a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java index b492148d4ef9b..e1809ed0b3c56 100644 --- a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java +++ b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java @@ -71,6 +71,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "deliveryMode": target.getConfiguration().setDeliveryMode(property(camelContext, java.lang.Integer.class, value)); return true; case "deliverypersistent": case "deliveryPersistent": target.getConfiguration().setDeliveryPersistent(property(camelContext, boolean.class, value)); return true; + case "deserializationfilter": + case "deserializationFilter": target.getConfiguration().setDeserializationFilter(property(camelContext, java.lang.String.class, value)); return true; case "destinationresolver": case "destinationResolver": target.getConfiguration().setDestinationResolver(property(camelContext, org.springframework.jms.support.destination.DestinationResolver.class, value)); return true; case "disablereplyto": @@ -270,6 +272,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "deliveryMode": return java.lang.Integer.class; case "deliverypersistent": case "deliveryPersistent": return boolean.class; + case "deserializationfilter": + case "deserializationFilter": return java.lang.String.class; case "destinationresolver": case "destinationResolver": return org.springframework.jms.support.destination.DestinationResolver.class; case "disablereplyto": @@ -470,6 +474,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "deliveryMode": return target.getConfiguration().getDeliveryMode(); case "deliverypersistent": case "deliveryPersistent": return target.getConfiguration().isDeliveryPersistent(); + case "deserializationfilter": + case "deserializationFilter": return target.getConfiguration().getDeserializationFilter(); case "destinationresolver": case "destinationResolver": return target.getConfiguration().getDestinationResolver(); case "disablereplyto": diff --git a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointUriFactory.java b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointUriFactory.java index e85c9ba1a29ad..39e1340762ec3 100644 --- a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointUriFactory.java +++ b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointUriFactory.java @@ -23,7 +23,7 @@ public class JmsEndpointUriFactory extends org.apache.camel.support.component.En private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(101); + Set props = new HashSet<>(102); props.add("acceptMessagesWhileStopping"); props.add("acknowledgementModeName"); props.add("allowAdditionalHeaders"); @@ -48,6 +48,7 @@ public class JmsEndpointUriFactory extends org.apache.camel.support.component.En props.add("deliveryDelay"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationName"); props.add("destinationResolver"); props.add("destinationType"); diff --git a/components/camel-jms/src/generated/resources/META-INF/org/apache/camel/component/jms/jms.json b/components/camel-jms/src/generated/resources/META-INF/org/apache/camel/component/jms/jms.json index a7b9b56d8e55f..dc1d1cfc0c2b3 100644 --- a/components/camel-jms/src/generated/resources/META-INF/org/apache/camel/component/jms/jms.json +++ b/components/camel-jms/src/generated/resources/META-INF/org/apache/camel/component/jms/jms.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-jms", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "jms", "extendsScheme": "", "syntax": "jms:destinationType:destinationName", @@ -119,14 +119,15 @@ "headerFilterStrategy": { "index": 93, "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." }, "errorHandlerLoggingLevel": { "index": 94, "kind": "property", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 95, "kind": "property", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 96, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 97, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 98, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 99, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 100, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 101, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 102, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 103, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 96, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 97, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 98, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 99, "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 100, "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 101, "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 102, "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 103, "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 104, "kind": "property", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } }, "headers": { "CamelJmsDestination": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION" }, @@ -242,13 +243,14 @@ "waitForTemporaryReplyToToBeUpdatedThreadSleepingTime": { "index": 90, "kind": "parameter", "displayName": "Wait For Temporary Reply To To Be Updated Thread Sleeping Time", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Interval in millis to sleep each time while waiting for temporary replyTo queue to be ready." }, "errorHandlerLoggingLevel": { "index": 91, "kind": "parameter", "displayName": "Error Handler Logging Level", "group": "logging", "label": "consumer,logging", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to configure the default errorHandler logging level for logging uncaught exceptions." }, "errorHandlerLogStackTrace": { "index": 92, "kind": "parameter", "displayName": "Error Handler Log Stack Trace", "group": "logging", "label": "consumer,logging", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows to control whether stack-traces should be logged or not, by the default errorHandler." }, - "password": { "index": 93, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "username": { "index": 94, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, - "transacted": { "index": 95, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, - "transactedInOut": { "index": 96, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, - "lazyCreateTransactionManager": { "index": 97, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, - "transactionManager": { "index": 98, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, - "transactionName": { "index": 99, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, - "transactionTimeout": { "index": 100, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } + "deserializationFilter": { "index": 93, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "password": { "index": 94, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "username": { "index": 95, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, + "transacted": { "index": 96, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "index": 97, "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode If this flag is set to true, then Spring JmsTemplate will have sessionTransacted set to true, and the acknowledgeMode as transacted on the JmsTemplate used for InOut operations. Note from Spring JMS: that within a JTA transaction, the parameters passed to createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, the container makes its own decisions on these values. Analogously, these parameters are not taken into account within a locally managed transaction either, since Spring JMS operates on an existing JMS Session in this case. Setting this flag to true will use a short local JMS transaction when running outside of a managed transaction, and a synchronized local JMS transaction in case of a managed transaction (other than an XA transaction) being present. This has the effect of a local JMS transaction being managed alongside the main transaction (which might be a native JDBC transaction), with the JMS transaction committing right after the main transaction." }, + "lazyCreateTransactionManager": { "index": 98, "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true." }, + "transactionManager": { "index": 99, "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, + "transactionName": { "index": 100, "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, + "transactionTimeout": { "index": 101, "kind": "parameter", "displayName": "Transaction Timeout", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout value of the transaction (in seconds), if using transacted mode." } } } diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/ClassicJmsHeaderFilterStrategy.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/ClassicJmsHeaderFilterStrategy.java new file mode 100644 index 0000000000000..36d862a75a013 --- /dev/null +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/ClassicJmsHeaderFilterStrategy.java @@ -0,0 +1,51 @@ +/* + * 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.jms; + +import org.apache.camel.support.DefaultHeaderFilterStrategy; + +/** + * The classic {@link org.apache.camel.spi.HeaderFilterStrategy} which includes Camel specific headers with the JMS + * component. This strategy should only be used if you rely on this old behavior. + */ +public class ClassicJmsHeaderFilterStrategy extends DefaultHeaderFilterStrategy { + + public ClassicJmsHeaderFilterStrategy() { + this(false); + } + + public ClassicJmsHeaderFilterStrategy(boolean includeAllJMSXProperties) { + setLowerCase(true); + if (!includeAllJMSXProperties) { + initialize(); + } + } + + protected void initialize() { + // ignore provider specified JMS extension headers see page 39 of JMS 1.1 specification + // added "JMSXRecvTimestamp" as a workaround for an Oracle bug/typo in AqjmsMessage + getOutFilter().add(JmsConstants.JMS_HEADER_XUSER_ID); + getOutFilter().add("JMSXAppID"); + getOutFilter().add("JMSXDeliveryCount"); + getOutFilter().add("JMSXProducerTXID"); + getOutFilter().add("JMSXConsumerTXID"); + getOutFilter().add("JMSXRcvTimestamp"); + getOutFilter().add("JMSXRecvTimestamp"); + getOutFilter().add("JMSXState"); + } + +} diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java index d55776a9ff166..619019f0b3faf 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java @@ -19,6 +19,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.ObjectInputFilter; import java.io.Reader; import java.io.Serializable; import java.math.BigDecimal; @@ -77,17 +78,27 @@ * A Strategy used to convert between a Camel {@link Exchange} and {@link JmsMessage} to and from a JMS {@link Message} */ public class JmsBinding { + /** + * Default {@link ObjectInputFilter} pattern applied as a defense-in-depth check on the class returned by + * {@link jakarta.jms.ObjectMessage#getObject()}. Allows standard Java types and Apache Camel types and rejects + * everything else. Can be overridden per-endpoint via {@link JmsConfiguration#setDeserializationFilter(String)} or + * globally via the JVM system property {@code jdk.serialFilter}. + */ + static final String DEFAULT_DESERIALIZATION_FILTER = "java.**;javax.**;org.apache.camel.**;!*"; + private static final Logger LOG = LoggerFactory.getLogger(JmsBinding.class); private final JmsEndpoint endpoint; private final HeaderFilterStrategy headerFilterStrategy; private final JmsKeyFormatStrategy jmsKeyFormatStrategy; private final MessageCreatedStrategy messageCreatedStrategy; + private final ObjectInputFilter deserializationFilter; public JmsBinding() { this.endpoint = null; this.headerFilterStrategy = new JmsHeaderFilterStrategy(false); this.jmsKeyFormatStrategy = new DefaultJmsKeyFormatStrategy(); this.messageCreatedStrategy = null; + this.deserializationFilter = resolveDeserializationFilter(null); } public JmsBinding(JmsEndpoint endpoint) { @@ -110,6 +121,81 @@ public JmsBinding(JmsEndpoint endpoint) { } else { this.messageCreatedStrategy = null; } + String configured = endpoint.getConfiguration() != null + ? endpoint.getConfiguration().getDeserializationFilter() : null; + if (configured == null) { + configured = endpoint.getComponent().getDeserializationFilter(); + } + this.deserializationFilter = resolveDeserializationFilter(configured); + } + + private static ObjectInputFilter resolveDeserializationFilter(String configuredPattern) { + if (configuredPattern != null && !configuredPattern.isBlank()) { + return ObjectInputFilter.Config.createFilter(configuredPattern); + } + ObjectInputFilter jvmFilter = ObjectInputFilter.Config.getSerialFilter(); + if (jvmFilter != null) { + return jvmFilter; + } + LOG.debug("No JVM-wide deserialization filter set, applying default Camel filter: {}", + DEFAULT_DESERIALIZATION_FILTER); + return ObjectInputFilter.Config.createFilter(DEFAULT_DESERIALIZATION_FILTER); + } + + /** + * Applies the configured (or default) deserialization filter to the class of an object returned by + * {@link jakarta.jms.ObjectMessage#getObject()}. Throws {@link SecurityException} if the class is rejected. + * + *

+ * Note: this check runs after the JMS provider has already deserialized the payload. It prevents + * unexpected classes from being propagated to the route, but it cannot, on its own, stop gadget chains whose + * {@code readObject()} fires inside the provider's {@code ObjectInputStream}. Complete protection requires + * configuring the JMS provider's own deserialization filter and/or the JVM-wide {@code -Djdk.serialFilter}. + */ + protected void checkDeserializedClass(Object payload) { + if (payload == null) { + return; + } + Class clazz = payload.getClass(); + ObjectInputFilter.Status status = deserializationFilter.checkInput(new PostDeserializationFilterInfo(clazz)); + if (status == ObjectInputFilter.Status.REJECTED) { + throw new SecurityException( + "JMS ObjectMessage deserialization blocked for class: " + clazz.getName() + + ". Configure the 'deserializationFilter' endpoint option or -Djdk.serialFilter to allow it."); + } + } + + private static final class PostDeserializationFilterInfo implements ObjectInputFilter.FilterInfo { + private final Class clazz; + + private PostDeserializationFilterInfo(Class clazz) { + this.clazz = clazz; + } + + @Override + public Class serialClass() { + return clazz; + } + + @Override + public long arrayLength() { + return -1; + } + + @Override + public long depth() { + return 0; + } + + @Override + public long references() { + return 0; + } + + @Override + public long streamBytes() { + return 0; + } } /** @@ -140,6 +226,7 @@ public Object extractBodyFromJms(Exchange exchange, Message message) { if (message instanceof ObjectMessage objectMessage) { LOG.trace("Extracting body as a ObjectMessage from JMS message: {}", message); Object payload = objectMessage.getObject(); + checkDeserializedClass(payload); if (payload instanceof DefaultExchangeHolder holder) { DefaultExchangeHolder.unmarshal(exchange, holder); // enrich with JMS headers also as otherwise they will get lost when use the transferExchange option. @@ -147,7 +234,7 @@ public Object extractBodyFromJms(Exchange exchange, Message message) { exchange.getIn().getHeaders().putAll(jmsHeaders); return exchange.getIn().getBody(); } else { - return objectMessage.getObject(); + return payload; } } else if (message instanceof TextMessage textMessage) { LOG.trace("Extracting body as a TextMessage from JMS message: {}", message); diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java index 8cd465b71c7ac..87f325765abd8 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java @@ -720,6 +720,14 @@ public void setDisableReplyTo(boolean disableReplyTo) { configuration.setDisableReplyTo(disableReplyTo); } + public String getDeserializationFilter() { + return configuration.getDeserializationFilter(); + } + + public void setDeserializationFilter(String deserializationFilter) { + configuration.setDeserializationFilter(deserializationFilter); + } + public void setPreserveMessageQos(boolean preserveMessageQos) { configuration.setPreserveMessageQos(preserveMessageQos); } diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java index c4190ad74a066..ba80a0e1084eb 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java @@ -377,6 +377,15 @@ public class JmsConfiguration implements Cloneable { + " Applies only when {@code transferExchange} is {@code true}." + " This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.") private boolean allowSerializedHeaders; + @UriParam(label = "advanced,security", + description = "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth" + + " check on the class of the body returned by jakarta.jms.ObjectMessage.getObject()." + + " The pattern is evaluated after the JMS provider has deserialized the payload, so this option" + + " alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream;" + + " to block such attacks, also configure the JMS provider's own deserialization filter and/or" + + " the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured," + + " a conservative default filter allowing java.**, javax.** and org.apache.camel.** is applied.") + private String deserializationFilter; @UriParam(label = "advanced", description = "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side," + " then the caused Exception will be send back in response as a jakarta.jms.ObjectMessage." @@ -2010,6 +2019,23 @@ public void setAllowSerializedHeaders(boolean allowSerializedHeaders) { this.allowSerializedHeaders = allowSerializedHeaders; } + public String getDeserializationFilter() { + return deserializationFilter; + } + + /** + * Sets an {@link java.io.ObjectInputFilter} pattern (same syntax as {@code jdk.serialFilter}) applied as a + * defense-in-depth check on the class of the body returned by {@link jakarta.jms.ObjectMessage#getObject()}. The + * pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent + * gadget-chain execution that happens inside the provider's {@code ObjectInputStream}; to block such attacks, also + * configure the JMS provider's own deserialization filter and/or the JVM-wide {@code -Djdk.serialFilter}. When this + * option is not set and no JVM-wide filter is configured, a conservative default filter allowing {@code java.**}, + * {@code javax.**} and {@code org.apache.camel.**} is applied. + */ + public void setDeserializationFilter(String deserializationFilter) { + this.deserializationFilter = deserializationFilter; + } + public boolean isTransferException() { return transferException; } diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java index dd6ee5787eee0..6a290839767a0 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java @@ -25,6 +25,9 @@ public JmsHeaderFilterStrategy() { } public JmsHeaderFilterStrategy(boolean includeAllJMSXProperties) { + setLowerCase(true); + setOutFilterStartsWith(DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(DefaultHeaderFilterStrategy.CAMEL_FILTER_STARTS_WITH); if (!includeAllJMSXProperties) { initialize(); } diff --git a/components/camel-jms/src/test/java/com/example/external/NotAllowedPayload.java b/components/camel-jms/src/test/java/com/example/external/NotAllowedPayload.java new file mode 100644 index 0000000000000..7e1f7f4e18bd3 --- /dev/null +++ b/components/camel-jms/src/test/java/com/example/external/NotAllowedPayload.java @@ -0,0 +1,27 @@ +/* + * 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 com.example.external; + +import java.io.Serializable; + +/** + * Test payload deliberately placed in a package outside the default JmsBinding deserialization allow list + * ({@code java.**}, {@code javax.**}, {@code org.apache.camel.**}). + */ +public class NotAllowedPayload implements Serializable { + private static final long serialVersionUID = 1L; +} diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBindingTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBindingTest.java index 6794c45c3476a..3df506ac0f4c8 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBindingTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBindingTest.java @@ -20,12 +20,15 @@ import java.math.BigInteger; import java.time.Instant; import java.util.Date; +import java.util.HashMap; import jakarta.jms.JMSException; +import com.example.external.NotAllowedPayload; import org.apache.activemq.artemis.jms.client.ActiveMQTextMessage; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.support.DefaultExchangeHolder; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -36,6 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -49,6 +53,8 @@ public class JmsBindingTest { private JmsConfiguration mockJmsConfiguration; @Mock private JmsEndpoint mockJmsEndpoint; + @Mock + private JmsComponent mockJmsComponent; private JmsBinding jmsBindingUnderTest; @@ -57,6 +63,8 @@ public void setup() { lenient().when(mockJmsConfiguration.isFormatDateHeadersToIso8601()).thenReturn(false); lenient().when(mockJmsConfiguration.isMapJmsMessage()).thenReturn(true); lenient().when(mockJmsEndpoint.getConfiguration()).thenReturn(mockJmsConfiguration); + lenient().when(mockJmsEndpoint.getComponent()).thenReturn(mockJmsComponent); + lenient().when(mockJmsComponent.getConfiguration()).thenReturn(mockJmsConfiguration); jmsBindingUnderTest = new JmsBinding(mockJmsEndpoint); } @@ -105,4 +113,35 @@ public void testGetValidJmsHeaderValueWithIso8601DateShouldSucceed() { Object value = jmsBindingUnderTest.getValidJMSHeaderValue("foo", Date.from(instant)); assertEquals("2018-02-26T19:12:18Z", value); } + + @Test + public void testDefaultFilterAllowsStandardJavaType() { + assertDoesNotThrow(() -> jmsBindingUnderTest.checkDeserializedClass(new HashMap<>())); + } + + @Test + public void testDefaultFilterAllowsCamelExchangeHolder() { + assertDoesNotThrow(() -> jmsBindingUnderTest.checkDeserializedClass(new DefaultExchangeHolder())); + } + + @Test + public void testDefaultFilterAllowsNullPayload() { + assertDoesNotThrow(() -> jmsBindingUnderTest.checkDeserializedClass(null)); + } + + @Test + public void testDefaultFilterRejectsClassOutsideAllowList() { + SecurityException ex = assertThrows(SecurityException.class, + () -> jmsBindingUnderTest.checkDeserializedClass(new NotAllowedPayload())); + assertNotNull(ex.getMessage()); + assertEquals(true, ex.getMessage().contains(NotAllowedPayload.class.getName())); + } + + @Test + public void testConfiguredFilterAllowsCustomClass() { + when(mockJmsConfiguration.getDeserializationFilter()) + .thenReturn("com.example.external.*;java.**;javax.**;org.apache.camel.**;!*"); + JmsBinding bindingWithCustomFilter = new JmsBinding(mockJmsEndpoint); + assertDoesNotThrow(() -> bindingWithCustomFilter.checkDeserializedClass(new NotAllowedPayload())); + } } diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java index 16cb37a344e3e..40c2cd907670f 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java @@ -61,8 +61,8 @@ public void testHeaderFilters() throws Exception { errors.expectedMessageCount(0); template.send(testQueueEndpointA, ExchangePattern.InOnly, exchange -> { - exchange.getIn().setHeader("org.apache.camel.jms", 10000); - exchange.getIn().setHeader("org.apache.camel.test.jms", 20000); + exchange.getIn().setHeader("org.foo.jms", 10000); + exchange.getIn().setHeader("org.foo.test.jms", 20000); exchange.getIn().setHeader("testheader", 1020); exchange.getIn().setHeader("anotherheader", 1030); exchange.getIn().setHeader("JMSXAppID", "myApp"); @@ -132,10 +132,10 @@ public void process(Exchange exchange) throws Exception { assertNull(message.getJmsMessage().getObjectProperty("anotherheader")); // notice dots are replaced by '_DOT_' when it is copied to the jms message properties - assertEquals(10000, message.getJmsMessage().getObjectProperty("org_DOT_apache_DOT_camel_DOT_jms")); + assertEquals(10000, message.getJmsMessage().getObjectProperty("org_DOT_foo_DOT_jms")); // like testheader, org.apache.camel.test.jms will be filtered by the "in" filter - assertEquals(20000, message.getJmsMessage().getObjectProperty("org_DOT_apache_DOT_camel_DOT_test_DOT_jms")); + assertEquals(20000, message.getJmsMessage().getObjectProperty("org_DOT_foo_DOT_test_DOT_jms")); // should be filtered by default assertNull(message.getJmsMessage().getStringProperty("JMSXAppID")); @@ -157,10 +157,10 @@ public void process(Exchange exchange) { assertNull(exchange.getIn().getHeader("anotherheader")); // it should not been filtered out - assertEquals(10000, exchange.getIn().getHeader("org.apache.camel.jms")); + assertEquals(10000, exchange.getIn().getHeader("org.foo.jms")); // filtered out by "in" filter - assertNull(exchange.getIn().getHeader("org_DOT_apache_DOT_camel_DOT_test_DOT_jms")); + assertNull(exchange.getIn().getHeader("org_DOT_foo_DOT_test_DOT_jms")); // should be filtered by default assertNull(exchange.getIn().getHeader("JMSXAppID")); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteWithDefaultKeyFormatStrategyTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteWithDefaultKeyFormatStrategyTest.java index 4366ed4e94186..5b26c93bf06ee 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteWithDefaultKeyFormatStrategyTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteWithDefaultKeyFormatStrategyTest.java @@ -84,12 +84,12 @@ public void testWithMixedHeader() throws Exception { mock.expectedBodiesReceived("Hello World"); mock.expectedHeaderReceived("foo", "cheese"); mock.expectedHeaderReceived("Content-Type", "text/plain"); - mock.expectedHeaderReceived("org.apache.camel.MyKey", "foo"); + mock.expectedHeaderReceived("org.foo.MyKey", "foo"); Map headers = new HashMap<>(); headers.put("foo", "cheese"); headers.put("Content-Type", "text/plain"); - headers.put("org.apache.camel.MyKey", "foo"); + headers.put("org.foo.MyKey", "foo"); template.sendBodyAndHeaders("direct:start", "Hello World", headers); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsKeepLastModifiedIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsKeepLastModifiedIT.java index 068e5b7705511..babd844399ec5 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsKeepLastModifiedIT.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsKeepLastModifiedIT.java @@ -19,12 +19,16 @@ import java.io.File; import java.util.concurrent.TimeUnit; +import jakarta.jms.ConnectionFactory; + import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.AbstractJMSTest; +import org.apache.camel.component.jms.ClassicJmsHeaderFilterStrategy; +import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.DefaultCamelContextExtension; @@ -93,6 +97,14 @@ public CamelContextExtension getCamelContextExtension() { return camelContextExtension; } + @Override + protected JmsComponent buildComponent(ConnectionFactory connectionFactory) { + JmsComponent amq = super.buildComponent(connectionFactory); + // need to use the classic header filter + amq.setHeaderFilterStrategy(new ClassicJmsHeaderFilterStrategy()); + return amq; + } + @BeforeEach void setUpRequirements() { context = camelContextExtension.getContext(); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsPreMoveIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsPreMoveIT.java index bf811abe86828..64455cf9aefa5 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsPreMoveIT.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteJmsPreMoveIT.java @@ -16,12 +16,16 @@ */ package org.apache.camel.component.jms.integration; +import jakarta.jms.ConnectionFactory; + import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.AbstractJMSTest; +import org.apache.camel.component.jms.ClassicJmsHeaderFilterStrategy; +import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.DefaultCamelContextExtension; @@ -87,6 +91,14 @@ public CamelContextExtension getCamelContextExtension() { return camelContextExtension; } + @Override + protected JmsComponent buildComponent(ConnectionFactory connectionFactory) { + JmsComponent amq = super.buildComponent(connectionFactory); + // need to use the classic header filter + amq.setHeaderFilterStrategy(new ClassicJmsHeaderFilterStrategy()); + return amq; + } + @BeforeEach void setUpRequirements() { context = camelContextExtension.getContext(); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteToJmsToFileIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteToJmsToFileIT.java index 9edb311faa1a7..a3dc32bb5947a 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteToJmsToFileIT.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/FileRouteToJmsToFileIT.java @@ -18,6 +18,8 @@ import java.io.File; +import jakarta.jms.ConnectionFactory; + import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.Exchange; @@ -25,6 +27,8 @@ import org.apache.camel.builder.NotifyBuilder; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.AbstractJMSTest; +import org.apache.camel.component.jms.ClassicJmsHeaderFilterStrategy; +import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.DefaultCamelContextExtension; @@ -88,6 +92,14 @@ public CamelContextExtension getCamelContextExtension() { return camelContextExtension; } + @Override + protected JmsComponent buildComponent(ConnectionFactory connectionFactory) { + JmsComponent amq = super.buildComponent(connectionFactory); + // need to use the classic header filter + amq.setHeaderFilterStrategy(new ClassicJmsHeaderFilterStrategy()); + return amq; + } + @BeforeEach void setUpRequirements() { context = camelContextExtension.getContext(); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/issues/JmsFilenameHeaderIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/issues/JmsFilenameHeaderIT.java index 9cf60eeb87c9b..09db709ee80c5 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/issues/JmsFilenameHeaderIT.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/issues/JmsFilenameHeaderIT.java @@ -18,12 +18,16 @@ import java.io.File; +import jakarta.jms.ConnectionFactory; + import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.AbstractJMSTest; +import org.apache.camel.component.jms.ClassicJmsHeaderFilterStrategy; +import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.DefaultCamelContextExtension; @@ -88,4 +92,13 @@ void setUpRequirements() { template = camelContextExtension.getProducerTemplate(); consumer = camelContextExtension.getConsumerTemplate(); } + + @Override + protected JmsComponent buildComponent(ConnectionFactory connectionFactory) { + JmsComponent amq = super.buildComponent(connectionFactory); + // need to use the classic header filter + amq.setHeaderFilterStrategy(new ClassicJmsHeaderFilterStrategy()); + return amq; + } + } diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBeanMethodHeaderTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBeanMethodHeaderTest.java deleted file mode 100644 index 19e6224201588..0000000000000 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBeanMethodHeaderTest.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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.jms.issues; - -import org.apache.camel.BindToRegistry; -import org.apache.camel.Body; -import org.apache.camel.CamelContext; -import org.apache.camel.ConsumerTemplate; -import org.apache.camel.Exchange; -import org.apache.camel.ExchangePattern; -import org.apache.camel.ProducerTemplate; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jms.AbstractJMSTest; -import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.test.infra.core.CamelContextExtension; -import org.apache.camel.test.infra.core.DefaultCamelContextExtension; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** - * Unit test for sending the bean method name as a key over the JMS wire, that we now support this. - */ -public class JmsBeanMethodHeaderTest extends AbstractJMSTest { - - @Order(2) - @RegisterExtension - public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension(); - protected CamelContext context; - protected ProducerTemplate template; - protected ConsumerTemplate consumer; - @BindToRegistry("approveService") - private final ApproveService service = new ApproveService(); - - @Test - public void testPlainHeader() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedBodiesReceived("Hello World"); - mock.expectedHeaderReceived("foo", "yes"); - - template.sendBodyAndHeader("direct:in", "Hello World", "foo", "yes"); - - mock.assertIsSatisfied(); - } - - @Test - public void testUnderscoreHeader() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedBodiesReceived("Hello World"); - mock.expectedHeaderReceived("foo_bar", "yes"); - - template.sendBodyAndHeader("direct:in", "Hello World", "foo_bar", "yes"); - - mock.assertIsSatisfied(); - } - - @Test - public void testUsingBeanNoJMS() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:approve"); - mock.expectedBodiesReceived("Yes"); - - template.sendBodyAndHeader("direct:approve", ExchangePattern.InOut, "James", Exchange.BEAN_METHOD_NAME, "approveLoan"); - - mock.assertIsSatisfied(); - } - - @Test - public void testUsingBeanAndJMS() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:approve"); - mock.expectedBodiesReceived("Yes"); - - template.sendBodyAndHeader("activemq:JmsBeanMethodHeaderTest.approve", ExchangePattern.InOut, "James", - Exchange.BEAN_METHOD_NAME, - "approveLoan"); - - mock.assertIsSatisfied(); - } - - @Test - public void testUsingJMStoJMStoBean() throws Exception { - // the big one from jms to jms to test that we do not lost the bean - // method name - MockEndpoint mock = getMockEndpoint("mock:approve"); - mock.expectedBodiesReceived("No"); - - template.sendBodyAndHeader("activemq:JmsBeanMethodHeaderTest.queue", ExchangePattern.InOut, "James", - Exchange.BEAN_METHOD_NAME, - "approveSuperLoan"); - - mock.assertIsSatisfied(); - } - - @Override - protected String getComponentName() { - return "activemq"; - } - - @Override - protected RouteBuilder createRouteBuilder() { - return new RouteBuilder() { - public void configure() { - from("direct:in").to("activemq:JmsBeanMethodHeaderTest.a"); - from("activemq:JmsBeanMethodHeaderTest.a").to("mock:result"); - - from("activemq:JmsBeanMethodHeaderTest.queue").to("activemq:JmsBeanMethodHeaderTest.approve"); - - from("activemq:JmsBeanMethodHeaderTest.approve").to("direct:approve"); - - from("direct:approve").to("bean:approveService").to("mock:approve"); - } - }; - } - - @Override - public CamelContextExtension getCamelContextExtension() { - return camelContextExtension; - } - - @BeforeEach - void setUpRequirements() { - context = camelContextExtension.getContext(); - template = camelContextExtension.getProducerTemplate(); - consumer = camelContextExtension.getConsumerTemplate(); - } - - public static class ApproveService { - - public void doSomeStuff(String input) { - // just to confuse Camel with more public methods to choose among - } - - public String approveLoan(@Body String body) { - return "Yes"; - } - - public String approveSuperLoan(@Body String body) { - return "No"; - } - - } - -} diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java index 342c371741fad..2e54bd56b435e 100644 --- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java +++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java @@ -32,5 +32,6 @@ protected final void initialize() { // filter headers begin with "Camel" or "org.apache.camel" // must ignore case for Http based transports setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*"); + setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH); } } diff --git a/components/camel-mail/pom.xml b/components/camel-mail/pom.xml index 95743bea37602..a06d5f4f0ae94 100644 --- a/components/camel-mail/pom.xml +++ b/components/camel-mail/pom.xml @@ -30,8 +30,10 @@ jar Camel :: Mail Camel Mail support + ${revision} + ${camel-mail.tesb.version} -Dfile.encoding=UTF-8 diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imap.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imap.json index 94279685ebefa..7e3260ce83546 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imap.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imap.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "imap", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imaps.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imaps.json index d18e6e4ea320c..0f1e1b1f81c93 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imaps.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/imaps.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "imaps", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3.json index 408696423d684..962d94c811e1b 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "pop3", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3s.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3s.json index c2d56f4344b5e..6926c99d23065 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3s.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/pop3s.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "pop3s", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtp.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtp.json index 15463682b26be..350902f40a590 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtp.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtp.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "smtp", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtps.json b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtps.json index b069c786fd414..151356a31f585 100644 --- a/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtps.json +++ b/components/camel-mail/src/generated/resources/META-INF/org/apache/camel/component/mail/smtps.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mail", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "smtps", "extendsScheme": "", "alternativeSchemes": "imap,imaps,pop3,pop3s,smtp,smtps", diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java index 9b5bddb7b2b60..659cdcfbb0391 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailHeaderFilterStrategy.java @@ -25,8 +25,10 @@ public MailHeaderFilterStrategy() { } protected void initialize() { + setLowerCase(true); // filter headers begin with "Camel" or "org.apache.camel" setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH); + setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH); } } diff --git a/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/component/mina/mina.json b/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/component/mina/mina.json index 2a6a14ed7d1fe..678e36489f979 100644 --- a/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/component/mina/mina.json +++ b/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/component/mina/mina.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-mina", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "mina", "extendsScheme": "", "syntax": "mina:protocol:host:port", diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java index d34f6309ade58..3c55670e07c69 100644 --- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java +++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java @@ -19,18 +19,28 @@ import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; +import java.io.ObjectInputFilter; import java.io.ObjectInputStream; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.StreamCache; import org.apache.mina.core.buffer.IoBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A set of converter methods for working with MINA types */ @Converter(generateLoader = true) public final class MinaConverter { + private static final Logger LOG = LoggerFactory.getLogger(MinaConverter.class); + + /** + * Default deserialization filter that restricts which classes can be deserialized. Allows standard Java types and + * Apache Camel types. Can be overridden via the JVM system property {@code jdk.serialFilter}. + */ + static final String DEFAULT_DESERIALIZATION_FILTER = "java.**;javax.**;org.apache.camel.**;!*"; private MinaConverter() { //Utility Class @@ -59,7 +69,16 @@ public static InputStream toInputStream(IoBuffer buffer) { @Converter public static ObjectInput toObjectInput(IoBuffer buffer) throws IOException { InputStream is = toInputStream(buffer); - return new ObjectInputStream(is); + ObjectInputStream ois = new ObjectInputStream(is); + ObjectInputFilter jvmFilter = ObjectInputFilter.Config.getSerialFilter(); + if (jvmFilter != null) { + ois.setObjectInputFilter(jvmFilter); + } else { + LOG.debug("No JVM-wide deserialization filter set, applying default Camel filter: {}", + DEFAULT_DESERIALIZATION_FILTER); + ois.setObjectInputFilter(ObjectInputFilter.Config.createFilter(DEFAULT_DESERIALIZATION_FILTER)); + } + return ois; } @Converter diff --git a/components/camel-mina/src/test/java/com/example/external/NotAllowedSerializable.java b/components/camel-mina/src/test/java/com/example/external/NotAllowedSerializable.java new file mode 100644 index 0000000000000..204d84216745b --- /dev/null +++ b/components/camel-mina/src/test/java/com/example/external/NotAllowedSerializable.java @@ -0,0 +1,37 @@ +/* + * 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 com.example.external; + +import java.io.Serializable; + +/** + * Serializable type living outside the {@code java.**}, {@code javax.**} and {@code org.apache.camel.**} packages, used + * to verify that the default deserialization allowlist rejects unknown classes. + */ +public final class NotAllowedSerializable implements Serializable { + private static final long serialVersionUID = 1L; + + private final String value; + + public NotAllowedSerializable(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java b/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java index ed12049bff0be..8b3060b97b1ee 100644 --- a/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java +++ b/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java @@ -16,10 +16,15 @@ */ package org.apache.camel.component.mina; +import java.io.ByteArrayOutputStream; import java.io.InputStream; +import java.io.InvalidClassException; +import java.io.ObjectInput; +import java.io.ObjectOutputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; +import com.example.external.NotAllowedSerializable; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; @@ -27,7 +32,9 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; public class MinaConverterTest { @@ -97,4 +104,30 @@ public void testToByteBuffer() { assertEquals(in[i], out[i]); } } + + @Test + public void testToObjectInputAcceptsAllowlistedTypes() throws Exception { + IoBuffer bb = serialize("hello"); + try (ObjectInput in = MinaConverter.toObjectInput(bb)) { + Object value = in.readObject(); + assertInstanceOf(String.class, value); + assertEquals("hello", value); + } + } + + @Test + public void testToObjectInputRejectsUnlistedTypes() throws Exception { + IoBuffer bb = serialize(new NotAllowedSerializable("blocked")); + try (ObjectInput in = MinaConverter.toObjectInput(bb)) { + assertThrows(InvalidClassException.class, in::readObject); + } + } + + private static IoBuffer serialize(Object value) throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(value); + } + return IoBuffer.wrap(baos.toByteArray()); + } } diff --git a/components/camel-sjms/pom.xml b/components/camel-sjms/pom.xml index c1612eea4f358..8bfe0722d4e3d 100644 --- a/components/camel-sjms/pom.xml +++ b/components/camel-sjms/pom.xml @@ -30,8 +30,10 @@ jar Camel :: Simple JMS A pure Java JMS Camel Component + ${revision} + ${camel-sjms.tesb.version} true 1 1200 diff --git a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsComponentConfigurer.java b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsComponentConfigurer.java index 72623c0e79ca9..074a8a194d543 100644 --- a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsComponentConfigurer.java +++ b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsComponentConfigurer.java @@ -29,6 +29,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; case "connectionfactory": case "connectionFactory": target.setConnectionFactory(property(camelContext, jakarta.jms.ConnectionFactory.class, value)); return true; + case "deserializationfilter": + case "deserializationFilter": target.setDeserializationFilter(property(camelContext, java.lang.String.class, value)); return true; case "destinationcreationstrategy": case "destinationCreationStrategy": target.setDestinationCreationStrategy(property(camelContext, org.apache.camel.component.sjms.jms.DestinationCreationStrategy.class, value)); return true; case "exceptionlistener": @@ -65,6 +67,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "bridgeErrorHandler": return boolean.class; case "connectionfactory": case "connectionFactory": return jakarta.jms.ConnectionFactory.class; + case "deserializationfilter": + case "deserializationFilter": return java.lang.String.class; case "destinationcreationstrategy": case "destinationCreationStrategy": return org.apache.camel.component.sjms.jms.DestinationCreationStrategy.class; case "exceptionlistener": @@ -97,6 +101,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "bridgeErrorHandler": return target.isBridgeErrorHandler(); case "connectionfactory": case "connectionFactory": return target.getConnectionFactory(); + case "deserializationfilter": + case "deserializationFilter": return target.getDeserializationFilter(); case "destinationcreationstrategy": case "destinationCreationStrategy": return target.getDestinationCreationStrategy(); case "exceptionlistener": diff --git a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointConfigurer.java b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointConfigurer.java index 8c3bee1e02171..c18b390dcdecc 100644 --- a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointConfigurer.java +++ b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointConfigurer.java @@ -47,6 +47,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "deliveryMode": target.setDeliveryMode(property(camelContext, java.lang.Integer.class, value)); return true; case "deliverypersistent": case "deliveryPersistent": target.setDeliveryPersistent(property(camelContext, boolean.class, value)); return true; + case "deserializationfilter": + case "deserializationFilter": target.setDeserializationFilter(property(camelContext, java.lang.String.class, value)); return true; case "destinationcreationstrategy": case "destinationCreationStrategy": target.setDestinationCreationStrategy(property(camelContext, org.apache.camel.component.sjms.jms.DestinationCreationStrategy.class, value)); return true; case "disablereplyto": @@ -139,6 +141,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "deliveryMode": return java.lang.Integer.class; case "deliverypersistent": case "deliveryPersistent": return boolean.class; + case "deserializationfilter": + case "deserializationFilter": return java.lang.String.class; case "destinationcreationstrategy": case "destinationCreationStrategy": return org.apache.camel.component.sjms.jms.DestinationCreationStrategy.class; case "disablereplyto": @@ -232,6 +236,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "deliveryMode": return target.getDeliveryMode(); case "deliverypersistent": case "deliveryPersistent": return target.isDeliveryPersistent(); + case "deserializationfilter": + case "deserializationFilter": return target.getDeserializationFilter(); case "destinationcreationstrategy": case "destinationCreationStrategy": return target.getDestinationCreationStrategy(); case "disablereplyto": diff --git a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointUriFactory.java b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointUriFactory.java index b2c746465afb2..bbc9fe0a554c7 100644 --- a/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointUriFactory.java +++ b/components/camel-sjms/src/generated/java/org/apache/camel/component/sjms/SjmsEndpointUriFactory.java @@ -23,7 +23,7 @@ public class SjmsEndpointUriFactory extends org.apache.camel.support.component.E private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(46); + Set props = new HashSet<>(47); props.add("acknowledgementMode"); props.add("allowNullBody"); props.add("asyncConsumer"); @@ -36,6 +36,7 @@ public class SjmsEndpointUriFactory extends org.apache.camel.support.component.E props.add("connectionFactory"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationCreationStrategy"); props.add("destinationName"); props.add("destinationType"); diff --git a/components/camel-sjms/src/generated/resources/META-INF/org/apache/camel/component/sjms/sjms.json b/components/camel-sjms/src/generated/resources/META-INF/org/apache/camel/component/sjms/sjms.json index 9978262d41989..d256b5b0bfd1a 100644 --- a/components/camel-sjms/src/generated/resources/META-INF/org/apache/camel/component/sjms/sjms.json +++ b/components/camel-sjms/src/generated/resources/META-INF/org/apache/camel/component/sjms/sjms.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-sjms", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "sjms", "extendsScheme": "", "syntax": "sjms:destinationType:destinationName", @@ -34,7 +34,8 @@ "recoveryInterval": { "index": 8, "kind": "property", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "replyToOnTimeoutMaxConcurrentConsumers": { "index": 9, "kind": "property", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "description": "Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request\/reply over JMS." }, "requestTimeoutCheckerInterval": { "index": 10, "kind": "property", "displayName": "Request Timeout Checker Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Configures how often Camel should check for timed out Exchanges when doing request\/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout." }, - "headerFilterStrategy": { "index": 11, "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." } + "headerFilterStrategy": { "index": 11, "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." }, + "deserializationFilter": { "index": 12, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." } }, "headers": { "CamelJMSDestinationName": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name.", "constantName": "org.apache.camel.component.sjms.SjmsConstants#JMS_DESTINATION_NAME" }, @@ -88,6 +89,7 @@ "recoveryInterval": { "index": 42, "kind": "parameter", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "synchronous": { "index": 43, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used" }, "transferException": { "index": 44, "kind": "parameter", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a jakarta.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer!" }, - "transacted": { "index": 45, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } + "deserializationFilter": { "index": 45, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "transacted": { "index": 46, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } } } diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java index 585482ce5448f..7fad4dab0f9d2 100644 --- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java +++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java @@ -75,6 +75,15 @@ public class SjmsComponent extends HeaderFilterStrategyComponent { @Metadata(label = "advanced", description = "Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions.") private ExceptionListener exceptionListener; + @Metadata(label = "advanced,security", + description = "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth" + + " check on the class of the body returned by jakarta.jms.ObjectMessage.getObject()." + + " The pattern is evaluated after the JMS provider has deserialized the payload, so this option" + + " alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream;" + + " to block such attacks, also configure the JMS provider's own deserialization filter and/or" + + " the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured," + + " a conservative default filter allowing java.**, javax.** and org.apache.camel.** is applied.") + private String deserializationFilter; public SjmsComponent() { } @@ -93,6 +102,7 @@ protected Endpoint createEndpoint(String uri, String remaining, Map + * Note: this check runs after the JMS provider has already deserialized the payload. It prevents + * unexpected classes from being propagated to the route, but it cannot, on its own, stop gadget chains whose + * {@code readObject()} fires inside the provider's {@code ObjectInputStream}. Complete protection requires + * configuring the JMS provider's own deserialization filter and/or the JVM-wide {@code -Djdk.serialFilter}. + */ + protected void checkDeserializedClass(Object payload) { + if (payload == null) { + return; + } + Class clazz = payload.getClass(); + ObjectInputFilter.Status status = deserializationFilter.checkInput(new PostDeserializationFilterInfo(clazz)); + if (status == ObjectInputFilter.Status.REJECTED) { + throw new SecurityException( + "JMS ObjectMessage deserialization blocked for class: " + clazz.getName() + + ". Configure the 'deserializationFilter' endpoint option or -Djdk.serialFilter to allow it."); + } + } + + private static final class PostDeserializationFilterInfo implements ObjectInputFilter.FilterInfo { + private final Class clazz; + + private PostDeserializationFilterInfo(Class clazz) { + this.clazz = clazz; + } + + @Override + public Class serialClass() { + return clazz; + } + + @Override + public long arrayLength() { + return -1; + } + + @Override + public long depth() { + return 0; + } + + @Override + public long references() { + return 0; + } + + @Override + public long streamBytes() { + return 0; + } } /** @@ -100,12 +187,13 @@ public Object extractBodyFromJms(Exchange exchange, Message message) { LOG.trace("Extracting body as a ObjectMessage from JMS message: {}", message); ObjectMessage objectMessage = (ObjectMessage) message; Object payload = objectMessage.getObject(); + checkDeserializedClass(payload); if (payload instanceof DefaultExchangeHolder) { DefaultExchangeHolder holder = (DefaultExchangeHolder) payload; - DefaultExchangeHolder.unmarshal(exchange, holder); + DefaultExchangeHolder.unmarshal(exchange, holder); // NOSONAR return exchange.getIn().getBody(); } else { - return objectMessage.getObject(); + return payload; } } else if (message instanceof TextMessage) { LOG.trace("Extracting body as a TextMessage from JMS message: {}", message); diff --git a/components/camel-sjms/src/test/java/com/example/external/NotAllowedPayload.java b/components/camel-sjms/src/test/java/com/example/external/NotAllowedPayload.java new file mode 100644 index 0000000000000..7e1f7f4e18bd3 --- /dev/null +++ b/components/camel-sjms/src/test/java/com/example/external/NotAllowedPayload.java @@ -0,0 +1,27 @@ +/* + * 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 com.example.external; + +import java.io.Serializable; + +/** + * Test payload deliberately placed in a package outside the default JmsBinding deserialization allow list + * ({@code java.**}, {@code javax.**}, {@code org.apache.camel.**}). + */ +public class NotAllowedPayload implements Serializable { + private static final long serialVersionUID = 1L; +} diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/jms/JmsBindingDeserializationFilterTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/jms/JmsBindingDeserializationFilterTest.java new file mode 100644 index 0000000000000..90b411b560146 --- /dev/null +++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/jms/JmsBindingDeserializationFilterTest.java @@ -0,0 +1,68 @@ +/* + * 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.sjms.jms; + +import java.util.HashMap; + +import com.example.external.NotAllowedPayload; +import org.apache.camel.support.DefaultExchangeHolder; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class JmsBindingDeserializationFilterTest { + + private JmsBinding newBinding(String filter) { + return new JmsBinding(true, true, null, null, null, filter); + } + + @Test + public void testDefaultFilterAllowsStandardJavaType() { + JmsBinding binding = newBinding(null); + assertDoesNotThrow(() -> binding.checkDeserializedClass(new HashMap<>())); + } + + @Test + public void testDefaultFilterAllowsCamelExchangeHolder() { + JmsBinding binding = newBinding(null); + assertDoesNotThrow(() -> binding.checkDeserializedClass(new DefaultExchangeHolder())); + } + + @Test + public void testDefaultFilterAllowsNullPayload() { + JmsBinding binding = newBinding(null); + assertDoesNotThrow(() -> binding.checkDeserializedClass(null)); + } + + @Test + public void testDefaultFilterRejectsClassOutsideAllowList() { + JmsBinding binding = newBinding(null); + SecurityException ex = assertThrows(SecurityException.class, + () -> binding.checkDeserializedClass(new NotAllowedPayload())); + assertNotNull(ex.getMessage()); + assertTrue(ex.getMessage().contains(NotAllowedPayload.class.getName())); + } + + @Test + public void testConfiguredFilterAllowsCustomClass() { + JmsBinding binding = newBinding("com.example.external.*;java.**;javax.**;org.apache.camel.**;!*"); + assertDoesNotThrow(() -> binding.checkDeserializedClass(new NotAllowedPayload())); + } +} diff --git a/components/camel-sjms2/pom.xml b/components/camel-sjms2/pom.xml index 3e879fed91bae..5aaa9285b5d18 100644 --- a/components/camel-sjms2/pom.xml +++ b/components/camel-sjms2/pom.xml @@ -31,8 +31,10 @@ jar Camel :: Simple JMS2 A pure Java JMS 2.0 Camel Component + ${revision} + ${camel-sjms2.tesb.version} 6000 diff --git a/components/camel-sjms2/src/generated/java/org/apache/camel/component/sjms2/Sjms2EndpointUriFactory.java b/components/camel-sjms2/src/generated/java/org/apache/camel/component/sjms2/Sjms2EndpointUriFactory.java index 20138d3549d31..24ee214dbeef7 100644 --- a/components/camel-sjms2/src/generated/java/org/apache/camel/component/sjms2/Sjms2EndpointUriFactory.java +++ b/components/camel-sjms2/src/generated/java/org/apache/camel/component/sjms2/Sjms2EndpointUriFactory.java @@ -23,7 +23,7 @@ public class Sjms2EndpointUriFactory extends org.apache.camel.support.component. private static final Set SECRET_PROPERTY_NAMES; private static final Set MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(49); + Set props = new HashSet<>(50); props.add("acknowledgementMode"); props.add("allowNullBody"); props.add("asyncConsumer"); @@ -36,6 +36,7 @@ public class Sjms2EndpointUriFactory extends org.apache.camel.support.component. props.add("connectionFactory"); props.add("deliveryMode"); props.add("deliveryPersistent"); + props.add("deserializationFilter"); props.add("destinationCreationStrategy"); props.add("destinationName"); props.add("destinationType"); diff --git a/components/camel-sjms2/src/generated/resources/META-INF/org/apache/camel/component/sjms2/sjms2.json b/components/camel-sjms2/src/generated/resources/META-INF/org/apache/camel/component/sjms2/sjms2.json index 6a2d012a207eb..37d06d52342dd 100644 --- a/components/camel-sjms2/src/generated/resources/META-INF/org/apache/camel/component/sjms2/sjms2.json +++ b/components/camel-sjms2/src/generated/resources/META-INF/org/apache/camel/component/sjms2/sjms2.json @@ -11,7 +11,7 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-sjms2", - "version": "4.8.1-SNAPSHOT", + "version": "4.8.1.20260608", "scheme": "sjms2", "extendsScheme": "sjms", "syntax": "sjms2:destinationType:destinationName", @@ -34,7 +34,8 @@ "recoveryInterval": { "index": 8, "kind": "property", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "replyToOnTimeoutMaxConcurrentConsumers": { "index": 9, "kind": "property", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "description": "Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request\/reply over JMS." }, "requestTimeoutCheckerInterval": { "index": 10, "kind": "property", "displayName": "Request Timeout Checker Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Configures how often Camel should check for timed out Exchanges when doing request\/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout." }, - "headerFilterStrategy": { "index": 11, "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." } + "headerFilterStrategy": { "index": 11, "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." }, + "deserializationFilter": { "index": 12, "kind": "property", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." } }, "headers": { "CamelJMSDestinationName": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name.", "constantName": "org.apache.camel.component.sjms.SjmsConstants#JMS_DESTINATION_NAME" }, @@ -91,6 +92,7 @@ "recoveryInterval": { "index": 45, "kind": "parameter", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds." }, "synchronous": { "index": 46, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used" }, "transferException": { "index": 47, "kind": "parameter", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a jakarta.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer!" }, - "transacted": { "index": 48, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } + "deserializationFilter": { "index": 48, "kind": "parameter", "displayName": "Deserialization Filter", "group": "security", "label": "advanced,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied as a defense-in-depth check on the class of the body returned by jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after the JMS provider has deserialized the payload, so this option alone does not prevent gadget-chain execution that happens inside the provider's ObjectInputStream; to block such attacks, also configure the JMS provider's own deserialization filter and\/or the JVM-wide -Djdk.serialFilter. When this option is not set and no JVM-wide filter is configured, a conservative default filter allowing java., javax. and org.apache.camel. is applied." }, + "transacted": { "index": 49, "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether to use transacted mode" } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean.properties b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean.properties index 9b3833dacc87f..bf5f3336175bb 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean.properties +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean.properties @@ -2,6 +2,6 @@ bean=DefaultHeaderFilterStrategy FileIdempotentRepository MemoryIdempotentRepository ThrottlingExceptionRoutePolicy ThrottlingInflightRoutePolicy groupId=org.apache.camel artifactId=camel-support -version=4.8.1.20240820 +version=4.8.1.20260120 projectName=Camel :: Support projectDescription=The Camel Support diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/DefaultHeaderFilterStrategy.json b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/DefaultHeaderFilterStrategy.json index d6812ebedb013..8e6f988fb172a 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/DefaultHeaderFilterStrategy.json +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/DefaultHeaderFilterStrategy.json @@ -9,7 +9,7 @@ "deprecated": true, "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820", + "version": "4.8.1.20260120", "properties": { "inFilter": { "index": 0, "kind": "property", "displayName": "In Filter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the in direction filter set. The in direction is referred to copying headers from an external message to a Camel message. Multiple patterns can be separated by comma" }, "outFilter": { "index": 1, "kind": "property", "displayName": "Out Filter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the out direction filter set. The out direction is referred to copying headers from a Camel message to an external message. Multiple patterns can be separated by comma" }, "lowerCase": { "index": 2, "kind": "property", "displayName": "Lower Case", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "description": "Whether header names should be converted to lower case before checking it with the filter Set. It does not affect filtering using regular expression pattern." }, "allowNullValues": { "index": 3, "kind": "property", "displayName": "Allow Null Values", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "description": "Whether to allow null values. By default a header is skipped if its value is null. Setting this to true will preserve the header." }, "caseInsensitive": { "index": 4, "kind": "property", "displayName": "Case Insensitive", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "description": "Sets the caseInsensitive property which is a boolean to determine whether header names should be case insensitive when checking it with the filter set. It does not affect filtering using regular expression pattern." }, "filterOnMatch": { "index": 5, "kind": "property", "displayName": "Filter On Match", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "description": "Sets what to do when a pattern or filter set is matched. When set to true, a match will filter out the header. This is the default value for backwards compatibility. When set to false, the pattern or filter will indicate that the header must be kept; anything not matched will be filtered (skipped)." } } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/FileIdempotentRepository.json b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/FileIdempotentRepository.json index df7e54ac4eb80..38f871b076d35 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/FileIdempotentRepository.json +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/FileIdempotentRepository.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820", + "version": "4.8.1.20260120", "properties": { "cacheSize": { "index": 0, "kind": "property", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "The maximum size of the 1st-level in-memory cache" }, "fileStore": { "index": 1, "kind": "property", "displayName": "File Store", "required": true, "type": "string", "javaType": "java.io.File", "deprecated": false, "autowired": false, "secret": false, "description": "File name of the repository (incl directory)" }, "maxFileStoreSize": { "index": 2, "kind": "property", "displayName": "Max File Store Size", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "32768000", "description": "The maximum file size for the file store in bytes. The default value is 32mb" }, "dropOldestFileStore": { "index": 3, "kind": "property", "displayName": "Drop Oldest File Store", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Sets the number of oldest entries to drop from the file store when the maximum capacity is hit to reduce disk space to allow room for new entries." } } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json index aff68ca5c4be2..da9e15ad1415b 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/MemoryIdempotentRepository.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820", + "version": "4.8.1.20260120", "properties": { "cacheSize": { "index": 0, "kind": "property", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Maximum elements that can be stored in-memory" } } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingExceptionRoutePolicy.json b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingExceptionRoutePolicy.json index cc4eeb9631d54..7e9b569ff8a10 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingExceptionRoutePolicy.json +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingExceptionRoutePolicy.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820", + "version": "4.8.1.20260120", "properties": { "failureThreshold": { "index": 0, "kind": "property", "displayName": "Failure Threshold", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "50", "description": "How many failed messages within the window would trigger the circuit breaker to open" }, "failureWindow": { "index": 1, "kind": "property", "displayName": "Failure Window", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "60000", "description": "Sliding window for how long time to go back (in millis) when counting number of failures" }, "halfOpenAfter": { "index": 2, "kind": "property", "displayName": "Half Open After", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30000", "description": "Interval (in millis) for how often to check whether a currently open circuit breaker may work again" }, "keepOpen": { "index": 3, "kind": "property", "displayName": "Keep Open", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether to always keep the circuit breaker open (never closes). This is only intended for development and testing purposes." }, "exceptions": { "index": 4, "kind": "property", "displayName": "Exceptions", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to only throttle based on certain types of exceptions. Multiple exceptions (use FQN class name) can be separated by comma." }, "stateLoggingLevel": { "index": 5, "kind": "property", "displayName": "State Logging Level", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "DEBUG", "description": "Logging level for state changes" }, "halfOpenHandler": { "index": 6, "kind": "property", "displayName": "Half Open Handler", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler", "deprecated": false, "autowired": false, "secret": false, "description": "Custom check to perform whether the circuit breaker can move to half-open state. If set then this is used instead of resuming the route." } } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingInflightRoutePolicy.json b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingInflightRoutePolicy.json index 631612e4c6c85..0f0afd7799515 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingInflightRoutePolicy.json +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/bean/ThrottlingInflightRoutePolicy.json @@ -9,7 +9,7 @@ "deprecated": false, "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820", + "version": "4.8.1.20260120", "properties": { "scope": { "index": 0, "kind": "property", "displayName": "Scope", "required": false, "type": "object", "javaType": "org.apache.camel.throttling.ThrottlingInflightRoutePolicy$ThrottlingScope", "enum": [ "Context", "Route" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Route", "description": "Sets which scope the throttling should be based upon, either route or total scoped." }, "maxInflightExchanges": { "index": 1, "kind": "property", "displayName": "Max Inflight Exchanges", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "description": "Sets the upper limit of number of concurrent inflight exchanges at which point reached the throttler should suspend the route." }, "resumePercentOfMax": { "index": 2, "kind": "property", "displayName": "Resume Percent Of Max", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "70", "description": "Sets at which percentage of the max the throttler should start resuming the route." }, "loggingLevel": { "index": 3, "kind": "property", "displayName": "Logging Level", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "INFO", "description": "Sets the logging level to report the throttling activity." } } } } diff --git a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/other.properties index 8b8dc5af0e21f..1c1b9e8530700 100644 --- a/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/other.properties +++ b/core/camel-support/src/generated/resources/META-INF/services/org/apache/camel/other.properties @@ -2,6 +2,6 @@ name=support groupId=org.apache.camel artifactId=camel-support -version=4.8.1.20240820 +version=4.8.1.20260120 projectName=Camel :: Support projectDescription=The Camel Support diff --git a/core/camel-support/src/generated/resources/support.json b/core/camel-support/src/generated/resources/support.json index 166327ebd54eb..dc9e4060b10c7 100644 --- a/core/camel-support/src/generated/resources/support.json +++ b/core/camel-support/src/generated/resources/support.json @@ -10,6 +10,6 @@ "supportLevel": "Stable", "groupId": "org.apache.camel", "artifactId": "camel-support", - "version": "4.8.1.20240820" + "version": "4.8.1.20260120" } } diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Activemq6ComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Activemq6ComponentBuilderFactory.java index 07d82bd0ab4e0..04e8b428cc070 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Activemq6ComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Activemq6ComponentBuilderFactory.java @@ -2091,6 +2091,30 @@ default Activemq6ComponentBuilder errorHandlerLogStackTrace(boolean errorHandler return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default Activemq6ComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } + /** * Password to use with the ConnectionFactory. You can also configure * username/password directly on the ConnectionFactory. @@ -2361,6 +2385,7 @@ protected boolean setPropertyOnComponent( case "headerFilterStrategy": ((ActiveMQComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; case "errorHandlerLoggingLevel": getOrCreateConfiguration((ActiveMQComponent) component).setErrorHandlerLoggingLevel((org.apache.camel.LoggingLevel) value); return true; case "errorHandlerLogStackTrace": getOrCreateConfiguration((ActiveMQComponent) component).setErrorHandlerLogStackTrace((boolean) value); return true; + case "deserializationFilter": getOrCreateConfiguration((ActiveMQComponent) component).setDeserializationFilter((java.lang.String) value); return true; case "password": getOrCreateConfiguration((ActiveMQComponent) component).setPassword((java.lang.String) value); return true; case "username": getOrCreateConfiguration((ActiveMQComponent) component).setUsername((java.lang.String) value); return true; case "transacted": getOrCreateConfiguration((ActiveMQComponent) component).setTransacted((boolean) value); return true; @@ -2373,4 +2398,4 @@ protected boolean setPropertyOnComponent( } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ActivemqComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ActivemqComponentBuilderFactory.java index db57143d20d08..9dc5b7c3f91c5 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ActivemqComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ActivemqComponentBuilderFactory.java @@ -2091,6 +2091,30 @@ default ActivemqComponentBuilder errorHandlerLogStackTrace(boolean errorHandlerL return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default ActivemqComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } + /** * Password to use with the ConnectionFactory. You can also configure * username/password directly on the ConnectionFactory. @@ -2361,6 +2385,7 @@ protected boolean setPropertyOnComponent( case "headerFilterStrategy": ((ActiveMQComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; case "errorHandlerLoggingLevel": getOrCreateConfiguration((ActiveMQComponent) component).setErrorHandlerLoggingLevel((org.apache.camel.LoggingLevel) value); return true; case "errorHandlerLogStackTrace": getOrCreateConfiguration((ActiveMQComponent) component).setErrorHandlerLogStackTrace((boolean) value); return true; + case "deserializationFilter": getOrCreateConfiguration((ActiveMQComponent) component).setDeserializationFilter((java.lang.String) value); return true; case "password": getOrCreateConfiguration((ActiveMQComponent) component).setPassword((java.lang.String) value); return true; case "username": getOrCreateConfiguration((ActiveMQComponent) component).setUsername((java.lang.String) value); return true; case "transacted": getOrCreateConfiguration((ActiveMQComponent) component).setTransacted((boolean) value); return true; @@ -2373,4 +2398,4 @@ protected boolean setPropertyOnComponent( } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java index 94f8be22d748f..8a4be964e9463 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java @@ -2008,6 +2008,30 @@ default AmqpComponentBuilder errorHandlerLogStackTrace(boolean errorHandlerLogSt return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AmqpComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } + /** * Password to use with the ConnectionFactory. You can also configure * username/password directly on the ConnectionFactory. @@ -2274,6 +2298,7 @@ protected boolean setPropertyOnComponent( case "headerFilterStrategy": ((AMQPComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; case "errorHandlerLoggingLevel": getOrCreateConfiguration((AMQPComponent) component).setErrorHandlerLoggingLevel((org.apache.camel.LoggingLevel) value); return true; case "errorHandlerLogStackTrace": getOrCreateConfiguration((AMQPComponent) component).setErrorHandlerLogStackTrace((boolean) value); return true; + case "deserializationFilter": getOrCreateConfiguration((AMQPComponent) component).setDeserializationFilter((java.lang.String) value); return true; case "password": getOrCreateConfiguration((AMQPComponent) component).setPassword((java.lang.String) value); return true; case "username": getOrCreateConfiguration((AMQPComponent) component).setUsername((java.lang.String) value); return true; case "transacted": getOrCreateConfiguration((AMQPComponent) component).setTransacted((boolean) value); return true; @@ -2286,4 +2311,4 @@ protected boolean setPropertyOnComponent( } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapComponentBuilderFactory.java index 8fd1902e1b6e3..4a885c1bafb68 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapComponentBuilderFactory.java @@ -126,6 +126,24 @@ default CoapComponentBuilder autowiredEnabled(boolean autowiredEnabled) { doSetProperty("autowiredEnabled", autowiredEnabled); return this; } + + /** + * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter + * header to and from Camel message. + * + * The option is a: + * <code>org.apache.camel.spi.HeaderFilterStrategy</code> + * type. + * + * Group: filter + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default CoapComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } class CoapComponentBuilderImpl @@ -144,8 +162,9 @@ protected boolean setPropertyOnComponent( case "bridgeErrorHandler": ((CoAPComponent) component).setBridgeErrorHandler((boolean) value); return true; case "lazyStartProducer": ((CoAPComponent) component).setLazyStartProducer((boolean) value); return true; case "autowiredEnabled": ((CoAPComponent) component).setAutowiredEnabled((boolean) value); return true; + case "headerFilterStrategy": ((CoAPComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapTcpComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapTcpComponentBuilderFactory.java index 01c311ded8197..a4beace2836fb 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapTcpComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapTcpComponentBuilderFactory.java @@ -126,6 +126,24 @@ default CoapTcpComponentBuilder autowiredEnabled(boolean autowiredEnabled) { doSetProperty("autowiredEnabled", autowiredEnabled); return this; } + + /** + * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter + * header to and from Camel message. + * + * The option is a: + * <code>org.apache.camel.spi.HeaderFilterStrategy</code> + * type. + * + * Group: filter + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default CoapTcpComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } class CoapTcpComponentBuilderImpl @@ -144,8 +162,9 @@ protected boolean setPropertyOnComponent( case "bridgeErrorHandler": ((CoAPComponent) component).setBridgeErrorHandler((boolean) value); return true; case "lazyStartProducer": ((CoAPComponent) component).setLazyStartProducer((boolean) value); return true; case "autowiredEnabled": ((CoAPComponent) component).setAutowiredEnabled((boolean) value); return true; + case "headerFilterStrategy": ((CoAPComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsComponentBuilderFactory.java index c16bda967f64a..633b0cc5e11c6 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsComponentBuilderFactory.java @@ -126,6 +126,24 @@ default CoapsComponentBuilder autowiredEnabled(boolean autowiredEnabled) { doSetProperty("autowiredEnabled", autowiredEnabled); return this; } + + /** + * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter + * header to and from Camel message. + * + * The option is a: + * <code>org.apache.camel.spi.HeaderFilterStrategy</code> + * type. + * + * Group: filter + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default CoapsComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } class CoapsComponentBuilderImpl @@ -144,8 +162,9 @@ protected boolean setPropertyOnComponent( case "bridgeErrorHandler": ((CoAPComponent) component).setBridgeErrorHandler((boolean) value); return true; case "lazyStartProducer": ((CoAPComponent) component).setLazyStartProducer((boolean) value); return true; case "autowiredEnabled": ((CoAPComponent) component).setAutowiredEnabled((boolean) value); return true; + case "headerFilterStrategy": ((CoAPComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsTcpComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsTcpComponentBuilderFactory.java index fd326e3096d57..48f4f93e70f5a 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsTcpComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CoapsTcpComponentBuilderFactory.java @@ -126,6 +126,24 @@ default CoapsTcpComponentBuilder autowiredEnabled(boolean autowiredEnabled) { doSetProperty("autowiredEnabled", autowiredEnabled); return this; } + + /** + * To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter + * header to and from Camel message. + * + * The option is a: + * <code>org.apache.camel.spi.HeaderFilterStrategy</code> + * type. + * + * Group: filter + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default CoapsTcpComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } class CoapsTcpComponentBuilderImpl @@ -144,8 +162,9 @@ protected boolean setPropertyOnComponent( case "bridgeErrorHandler": ((CoAPComponent) component).setBridgeErrorHandler((boolean) value); return true; case "lazyStartProducer": ((CoAPComponent) component).setLazyStartProducer((boolean) value); return true; case "autowiredEnabled": ((CoAPComponent) component).setAutowiredEnabled((boolean) value); return true; + case "headerFilterStrategy": ((CoAPComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java index 6bcbc6ddd3c33..8e1b05c4bf85e 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java @@ -1988,6 +1988,30 @@ default JmsComponentBuilder errorHandlerLogStackTrace(boolean errorHandlerLogSta return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default JmsComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } + /** * Password to use with the ConnectionFactory. You can also configure * username/password directly on the ConnectionFactory. @@ -2253,6 +2277,7 @@ protected boolean setPropertyOnComponent( case "headerFilterStrategy": ((JmsComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; case "errorHandlerLoggingLevel": getOrCreateConfiguration((JmsComponent) component).setErrorHandlerLoggingLevel((org.apache.camel.LoggingLevel) value); return true; case "errorHandlerLogStackTrace": getOrCreateConfiguration((JmsComponent) component).setErrorHandlerLogStackTrace((boolean) value); return true; + case "deserializationFilter": getOrCreateConfiguration((JmsComponent) component).setDeserializationFilter((java.lang.String) value); return true; case "password": getOrCreateConfiguration((JmsComponent) component).setPassword((java.lang.String) value); return true; case "username": getOrCreateConfiguration((JmsComponent) component).setUsername((java.lang.String) value); return true; case "transacted": getOrCreateConfiguration((JmsComponent) component).setTransacted((boolean) value); return true; @@ -2265,4 +2290,4 @@ protected boolean setPropertyOnComponent( } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Sjms2ComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Sjms2ComponentBuilderFactory.java index d4eb47925aed0..0e8d068085cb6 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Sjms2ComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Sjms2ComponentBuilderFactory.java @@ -293,6 +293,30 @@ default Sjms2ComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFi doSetProperty("headerFilterStrategy", headerFilterStrategy); return this; } + + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default Sjms2ComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } class Sjms2ComponentBuilderImpl @@ -320,8 +344,9 @@ protected boolean setPropertyOnComponent( case "replyToOnTimeoutMaxConcurrentConsumers": ((Sjms2Component) component).setReplyToOnTimeoutMaxConcurrentConsumers((int) value); return true; case "requestTimeoutCheckerInterval": ((Sjms2Component) component).setRequestTimeoutCheckerInterval((long) value); return true; case "headerFilterStrategy": ((Sjms2Component) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; + case "deserializationFilter": ((Sjms2Component) component).setDeserializationFilter((java.lang.String) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SjmsComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SjmsComponentBuilderFactory.java index 4623243e5a598..695cafea9c460 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SjmsComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SjmsComponentBuilderFactory.java @@ -293,6 +293,30 @@ default SjmsComponentBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFil doSetProperty("headerFilterStrategy", headerFilterStrategy); return this; } + + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default SjmsComponentBuilder deserializationFilter(java.lang.String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } class SjmsComponentBuilderImpl @@ -320,8 +344,9 @@ protected boolean setPropertyOnComponent( case "replyToOnTimeoutMaxConcurrentConsumers": ((SjmsComponent) component).setReplyToOnTimeoutMaxConcurrentConsumers((int) value); return true; case "requestTimeoutCheckerInterval": ((SjmsComponent) component).setRequestTimeoutCheckerInterval((long) value); return true; case "headerFilterStrategy": ((SjmsComponent) component).setHeaderFilterStrategy((org.apache.camel.spi.HeaderFilterStrategy) value); return true; + case "deserializationFilter": ((SjmsComponent) component).setDeserializationFilter((java.lang.String) value); return true; default: return false; } } } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java index 57193110b6658..cb75c51777444 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java @@ -2492,6 +2492,29 @@ default AdvancedAMQPEndpointConsumerBuilder waitForTemporaryReplyToToBeUpdatedTh doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedAMQPEndpointConsumerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -4946,6 +4969,29 @@ default AdvancedAMQPEndpointProducerBuilder waitForTemporaryReplyToToBeUpdatedTh doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedAMQPEndpointProducerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -6571,6 +6617,29 @@ default AdvancedAMQPEndpointBuilder waitForTemporaryReplyToToBeUpdatedThreadSlee doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedAMQPEndpointBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -6988,4 +7057,4 @@ public AMQPEndpointBuilderImpl(String path) { } return new AMQPEndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ActiveMQEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ActiveMQEndpointBuilderFactory.java index 2ad5b4da24c56..a3e3ba4045c54 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ActiveMQEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ActiveMQEndpointBuilderFactory.java @@ -2538,6 +2538,29 @@ default AdvancedActiveMQEndpointConsumerBuilder waitForTemporaryReplyToToBeUpdat doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedActiveMQEndpointConsumerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -4992,6 +5015,29 @@ default AdvancedActiveMQEndpointProducerBuilder waitForTemporaryReplyToToBeUpdat doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedActiveMQEndpointProducerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -6617,6 +6663,29 @@ default AdvancedActiveMQEndpointBuilder waitForTemporaryReplyToToBeUpdatedThread doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedActiveMQEndpointBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -7037,4 +7106,4 @@ public ActiveMQEndpointBuilderImpl(String path) { } return new ActiveMQEndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CoAPEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CoAPEndpointBuilderFactory.java index 722636996c7dc..76685b77331ed 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CoAPEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CoAPEndpointBuilderFactory.java @@ -510,6 +510,38 @@ default AdvancedCoAPEndpointConsumerBuilder exchangePattern(String exchangePatte doSetProperty("exchangePattern", exchangePattern); return this; } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option is a: + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointConsumerBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option will be converted to a + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointConsumerBuilder headerFilterStrategy(String headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } /** @@ -875,6 +907,38 @@ default AdvancedCoAPEndpointProducerBuilder lazyStartProducer(String lazyStartPr doSetProperty("lazyStartProducer", lazyStartProducer); return this; } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option is a: + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointProducerBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option will be converted to a + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointProducerBuilder headerFilterStrategy(String headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } /** @@ -1164,6 +1228,38 @@ default CoAPEndpointBuilder basic() { return (CoAPEndpointBuilder) this; } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option is a: + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointBuilder headerFilterStrategy(org.apache.camel.spi.HeaderFilterStrategy headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } + /** + * To use a custom HeaderFilterStrategy to filter header to and from + * Camel message. + * + * The option will be converted to a + * org.apache.camel.spi.HeaderFilterStrategy type. + * + * Group: advanced + * + * @param headerFilterStrategy the value to set + * @return the dsl builder + */ + default AdvancedCoAPEndpointBuilder headerFilterStrategy(String headerFilterStrategy) { + doSetProperty("headerFilterStrategy", headerFilterStrategy); + return this; + } } public interface CoAPBuilders { @@ -1367,4 +1463,4 @@ public CoAPEndpointBuilderImpl(String path) { } return new CoAPEndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java index 512910e0d725a..68cc4b77a6285 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java @@ -2492,6 +2492,29 @@ default AdvancedJmsEndpointConsumerBuilder waitForTemporaryReplyToToBeUpdatedThr doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedJmsEndpointConsumerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -4946,6 +4969,29 @@ default AdvancedJmsEndpointProducerBuilder waitForTemporaryReplyToToBeUpdatedThr doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedJmsEndpointProducerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -6571,6 +6617,29 @@ default AdvancedJmsEndpointBuilder waitForTemporaryReplyToToBeUpdatedThreadSleep doSetProperty("waitForTemporaryReplyToToBeUpdatedThreadSleepingTime", waitForTemporaryReplyToToBeUpdatedThreadSleepingTime); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedJmsEndpointBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. @@ -6988,4 +7057,4 @@ public JmsEndpointBuilderImpl(String path) { } return new JmsEndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Sjms2EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Sjms2EndpointBuilderFactory.java index c2fe4fae71f7e..5a5e3c0850262 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Sjms2EndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Sjms2EndpointBuilderFactory.java @@ -1173,6 +1173,29 @@ default AdvancedSjms2EndpointConsumerBuilder transferException(String transferEx doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjms2EndpointConsumerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } /** @@ -2301,6 +2324,29 @@ default AdvancedSjms2EndpointProducerBuilder transferException(String transferEx doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjms2EndpointProducerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } /** @@ -2964,6 +3010,29 @@ default AdvancedSjms2EndpointBuilder transferException(String transferException) doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjms2EndpointBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } public interface Sjms2Builders { @@ -3107,4 +3176,4 @@ public Sjms2EndpointBuilderImpl(String path) { } return new Sjms2EndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SjmsEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SjmsEndpointBuilderFactory.java index f943b806288f3..dcda2d7c4d80d 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SjmsEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SjmsEndpointBuilderFactory.java @@ -1098,6 +1098,29 @@ default AdvancedSjmsEndpointConsumerBuilder transferException(String transferExc doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjmsEndpointConsumerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } /** @@ -2226,6 +2249,29 @@ default AdvancedSjmsEndpointProducerBuilder transferException(String transferExc doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjmsEndpointProducerBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } /** @@ -2889,6 +2935,29 @@ default AdvancedSjmsEndpointBuilder transferException(String transferException) doSetProperty("transferException", transferException); return this; } + /** + * Sets an ObjectInputFilter pattern (jdk.serialFilter syntax) applied + * as a defense-in-depth check on the class of the body returned by + * jakarta.jms.ObjectMessage.getObject(). The pattern is evaluated after + * the JMS provider has deserialized the payload, so this option alone + * does not prevent gadget-chain execution that happens inside the + * provider's ObjectInputStream; to block such attacks, also configure + * the JMS provider's own deserialization filter and/or the JVM-wide + * -Djdk.serialFilter. When this option is not set and no JVM-wide + * filter is configured, a conservative default filter allowing java., + * javax. and org.apache.camel. is applied. + * + * The option is a: java.lang.String type. + * + * Group: security + * + * @param deserializationFilter the value to set + * @return the dsl builder + */ + default AdvancedSjmsEndpointBuilder deserializationFilter(String deserializationFilter) { + doSetProperty("deserializationFilter", deserializationFilter); + return this; + } } public interface SjmsBuilders { @@ -3032,4 +3101,4 @@ public SjmsEndpointBuilderImpl(String path) { } return new SjmsEndpointBuilderImpl(path); } -} \ No newline at end of file +} diff --git a/parent/pom.xml b/parent/pom.xml index 72752a3849416..8755e6ec7c596 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -690,7 +690,7 @@ org.apache.camel camel-amqp - ${upstream.version} + ${camel-amqp.tesb.version} org.apache.camel @@ -1025,7 +1025,7 @@ org.apache.camel camel-coap - ${upstream.version} + ${camel-coap.tesb.version} org.apache.camel @@ -1035,7 +1035,7 @@ org.apache.camel camel-consul - ${upstream.version} + ${camel-consul.tesb.version} org.apache.camel @@ -1115,7 +1115,7 @@ org.apache.camel camel-cxf-transport - ${camel-cxf.tesb.version} + ${camel-cxf-transport.tesb.version} org.apache.camel @@ -1350,7 +1350,7 @@ org.apache.camel camel-google-pubsub - ${upstream.version} + ${camel-google-pubsub.tesb.version} org.apache.camel @@ -1500,7 +1500,7 @@ org.apache.camel camel-infinispan - ${upstream.version} + ${camel-infinispan.tesb.version} org.apache.camel @@ -1615,7 +1615,7 @@ org.apache.camel camel-jms - ${upstream.version} + ${camel-jms.tesb.version} org.apache.camel @@ -1815,7 +1815,7 @@ org.apache.camel camel-mail - ${upstream.version} + ${camel-mail.tesb.version} org.apache.camel @@ -2230,12 +2230,12 @@ org.apache.camel camel-sjms - ${upstream.version} + ${camel-sjms.tesb.version} org.apache.camel camel-sjms2 - ${upstream.version} + ${camel-sjms2.tesb.version} org.apache.camel diff --git a/pom.xml b/pom.xml index 43b198ef3c7ce..155e9f67cd710 100644 --- a/pom.xml +++ b/pom.xml @@ -105,23 +105,25 @@ 4.8.1 4.8.1.20260120 - 4.8.1.20250320 - 4.8.1.20250320 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20251008 4.8.1.20250320 - 4.8.1.20250320 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20250320 4.1.0.2 4.8.1.20251119 4.8.1.20251119 4.8.1.20251119 + 4.8.1.20260608 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20250320 - - 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 @@ -134,13 +136,17 @@ 4.8.1.20250901 4.8.1.20250320 4.8.1.20250320 + 4.8.1.20260608 4.8.1.20250320 + 4.8.1.20260608 4.8.1.20250320 + 4.8.1.20260608 4.8.1.20250320 - 4.8.1.20250320 + 4.8.1.20260608 4.8.1.20250320 4.8.1.20260304 - 4.8.1.20250320 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 @@ -151,6 +157,8 @@ 4.8.1.20250320 4.8.1.20250320 4.8.1.20251213 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20250320 4.8.1.20250320 4.8.1.20251208 @@ -168,10 +176,9 @@ 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 - 4.8.1.20250320 - 4.8.1.20250320 - 4.8.1.20250320 + 4.8.1.20260608 + 4.8.1.20260608 4.8.1.20250320 4.8.1.20250320 4.8.1.20250320 @@ -331,18 +338,20 @@ ${camel-cxf.tesb.version} ${camel-cxf-soap.tesb.version} ${camel-cxf-rest.tesb.version} + ${camel-cxf-transport.tesb.version} ${camel-spring.tesb.version} ${cxf.tesb.version} ${camel-langchain4j-core.tesb.version} ${camel-langchain4j-chat.tesb.version} ${camel-langchain4j-tools.tesb.version} + ${camel-amqp.tesb.version} ${camel-as2-api.tesb.version} ${camel-aws2-kinesis.tesb.version} ${camel-aws2-s3.tesb.version} ${camel-aws2-sqs.tesb.version} + ${camel-coap.tesb.version} + ${camel-consul.tesb.version} ${camel-crypto.tesb.version} - - ${camel-debezium-common.tesb.version} ${camel-debezium-maven-plugin.tesb.version} ${camel-debezium-db2.tesb.version} @@ -355,12 +364,16 @@ ${camel-drill.tesb.version} ${camel-dynamic-router.tesb.version} ${camel-file.tesb.version} + ${camel-google-pubsub.tesb.version} ${camel-http.tesb.version} + ${camel-infinispan.tesb.version} ${camel-jaxb.tesb.version} + ${camel-jms.tesb.version} ${camel-jsonpath.tesb.version} ${camel-knative-http.tesb.version} ${camel-kubernetes.tesb.version} ${camel-leveldb.tesb.version} + ${camel-mail.tesb.version} ${camel-mina.tesb.version} ${camel-minio.tesb.version} ${camel-mongodb.tesb.version} @@ -372,6 +385,8 @@ ${camel-rest-openapi.tesb.version} ${camel-salesforce-codegen.tesb.version} ${camel-salesforce.tesb.version} + ${camel-sjms.tesb.version} + ${camel-sjms2.tesb.version} ${camel-smb.tesb.version} ${camel-sql.tesb.version} ${camel-tika.tesb.version} @@ -389,7 +404,6 @@ ${camel-main.tesb.version} ${camel-management.tesb.version} ${camel-management-api.tesb.version} - ${camel-yaml-io.tesb.version} ${camel-componentdsl.tesb.version} ${camel-endpointdsl.tesb.version} diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CxfToJmsInOutTest-context.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CxfToJmsInOutTest-context.xml index cb9f1c53d4fd6..06342dff6b9a1 100644 --- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CxfToJmsInOutTest-context.xml +++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CxfToJmsInOutTest-context.xml @@ -42,11 +42,17 @@ - - - + + + + + + + + + diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JmsToCxfInOutTest-context.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JmsToCxfInOutTest-context.xml index e6c4f90aabd13..dac3ece335c1b 100644 --- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JmsToCxfInOutTest-context.xml +++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JmsToCxfInOutTest-context.xml @@ -50,11 +50,17 @@ - - - + + + + + + + + +