You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/06/20 08:47:11 UTC

[camel] branch main updated (e63792ff182 -> 48197c03a08)

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

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


    from e63792ff182 Change to Checkstyle format
     new d99c53bf6eb Re-add camel-activemq component using activemq-client-jakarta with JMS 2.x support.
     new 4f07a871cf5 CAMEL-19429: added an initial set of integration tests
     new 7d5447b1427 CAMEL-19429: removed unnecessary use o transient variables
     new 3f144ffb523 CAMEL-19429: removed unnecessary null check
     new 49f7629c556 CAMEL-19429: fixed checkstyle
     new 48197c03a08 CAMEL-19429: added auto-generated files

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 catalog/camel-allcomponents/pom.xml                |   5 +
 components/camel-activemq/pom.xml                  |  77 ++++++
 .../activemq/ActiveMQComponentConfigurer.java      |  67 +++++
 .../activemq/ActiveMQEndpointConfigurer.java       |  58 +++++
 .../activemq/ActiveMQEndpointUriFactory.java       | 172 +++++++++++++
 .../converter/ActiveMQConverterLoader.java         |  60 +++++
 .../converter/ActiveMQMessageConverterLoader.java  |  62 +++++
 .../services/org/apache/camel/TypeConverterLoader  |   3 +
 .../services/org/apache/camel/component.properties |   7 +
 .../services/org/apache/camel/component/activemq   |   2 +
 .../org/apache/camel/configurer/activemq-component |   2 +
 .../org/apache/camel/configurer/activemq-endpoint  |   2 +
 .../org/apache/camel/send-dynamic/activemq         |   2 +
 .../org/apache/camel/urifactory/activemq-endpoint  |   2 +
 .../apache/camel/component/activemq/activemq.json  | 249 ++++++++++++++++++
 .../src/main/docs/activemq-component.adoc          |  90 +++++++
 .../component/activemq/ActiveMQComponent.java      | 283 +++++++++++++++++++++
 .../component/activemq/ActiveMQConfiguration.java  | 220 ++++++++++++++++
 .../camel/component/activemq/ActiveMQEndpoint.java |  73 ++++++
 .../component/activemq/ActiveMQQueueEndpoint.java  | 101 ++++++++
 .../activemq/ActiveMQSendDynamicAware.java         |  25 ++
 .../activemq/ActiveMQTemporaryQueueEndpoint.java   |  39 +++
 .../activemq/ActiveMQTemporaryTopicEndpoint.java   |  33 +++
 .../OriginalDestinationPropagateStrategy.java      |  56 ++++
 .../activemq/converter/ActiveMQConverter.java      |  38 +++
 .../converter/ActiveMQMessageConverter.java        |  97 +++++++
 .../component/activemq/converter/package.html      |  30 +++
 .../apache/camel/component/activemq/package.html   |  31 +++
 .../component/activemq/ActiveMQITSupport.java      |  64 +++++
 .../camel/component/activemq/ActiveMQRouteIT.java  | 121 +++++++++
 .../camel/component/activemq/ActiveMQToDIT.java    |  68 +++++
 .../activemq/ActiveMQToDSendDynamicIT.java         |  70 +++++
 .../src/test/resources/log4j2-test.properties      |  28 ++
 components/pom.xml                                 |   1 +
 parent/pom.xml                                     |   7 +
 35 files changed, 2245 insertions(+)
 create mode 100644 components/camel-activemq/pom.xml
 create mode 100644 components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQComponentConfigurer.java
 create mode 100644 components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointConfigurer.java
 create mode 100644 components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java
 create mode 100644 components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQConverterLoader.java
 create mode 100644 components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverterLoader.java
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component.properties
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component/activemq
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-component
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-endpoint
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/send-dynamic/activemq
 create mode 100644 components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/urifactory/activemq-endpoint
 create mode 100644 components/camel-activemq/src/generated/resources/org/apache/camel/component/activemq/activemq.json
 create mode 100644 components/camel-activemq/src/main/docs/activemq-component.adoc
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/package.html
 create mode 100644 components/camel-activemq/src/main/java/org/apache/camel/component/activemq/package.html
 create mode 100644 components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
 create mode 100644 components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQRouteIT.java
 create mode 100644 components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDIT.java
 create mode 100644 components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDSendDynamicIT.java
 create mode 100644 components/camel-activemq/src/test/resources/log4j2-test.properties


[camel] 01/06: Re-add camel-activemq component using activemq-client-jakarta with JMS 2.x support.

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d99c53bf6ebe6d2e07265d5d211c0891dc4041d1
Author: JB Onofré <jb...@dremio.com>
AuthorDate: Tue Jun 6 17:57:39 2023 +0200

    Re-add camel-activemq component using activemq-client-jakarta with JMS 2.x support.
---
 components/camel-activemq/pom.xml                  |  58 +++++
 .../src/main/docs/activemq-component.adoc          |  89 +++++++
 .../component/activemq/ActiveMQComponent.java      | 283 +++++++++++++++++++++
 .../component/activemq/ActiveMQConfiguration.java  | 220 ++++++++++++++++
 .../camel/component/activemq/ActiveMQEndpoint.java |  73 ++++++
 .../component/activemq/ActiveMQQueueEndpoint.java  | 101 ++++++++
 .../activemq/ActiveMQSendDynamicAware.java         |  25 ++
 .../activemq/ActiveMQTemporaryQueueEndpoint.java   |  39 +++
 .../activemq/ActiveMQTemporaryTopicEndpoint.java   |  33 +++
 .../OriginalDestinationPropagateStrategy.java      |  56 ++++
 .../activemq/converter/ActiveMQConverter.java      |  38 +++
 .../converter/ActiveMQMessageConverter.java        |  97 +++++++
 .../component/activemq/converter/package.html      |  30 +++
 .../apache/camel/component/activemq/package.html   |  31 +++
 .../src/test/resources/log4j2-test.properties      |  28 ++
 components/pom.xml                                 |   1 +
 parent/pom.xml                                     |   1 +
 17 files changed, 1203 insertions(+)

diff --git a/components/camel-activemq/pom.xml b/components/camel-activemq/pom.xml
new file mode 100644
index 00000000000..43c3654bd57
--- /dev/null
+++ b/components/camel-activemq/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>components</artifactId>
+        <version>4.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-activemq</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Camel :: ActiveMQ</name>
+    <description>ActiveMQ component for Camel</description>
+
+    <properties>
+        <camel.surefire.parallel>true</camel.surefire.parallel>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-jms</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-client-jakarta</artifactId>
+            <version>${activemq-version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/docs/activemq-component.adoc b/components/camel-activemq/src/main/docs/activemq-component.adoc
new file mode 100644
index 00000000000..fbf591dbc65
--- /dev/null
+++ b/components/camel-activemq/src/main/docs/activemq-component.adoc
@@ -0,0 +1,89 @@
+= ActiveMQ Component
+:doctitle: ActiveMQ
+:shortname: activemq
+:artifactid: camel-activemq
+:description: Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component.
+:since: 1.0
+:supportlevel: Stable
+:component-header: Both producer and consumer are supported
+//Manually maintained attributes
+:camel-spring-boot-name: activemq
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The ActiveMQ component is an extension to the JMS component and has been pre-configured for using Apache ActiveMQ 5.x (not Artemis).
+Users of Apache ActiveMQ Artemis should use the JMS component.
+
+[TIP]
+====
+*More documentation*
+
+See the JMS component for more documentation and examples
+====
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-activemq</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+== URI format
+
+--------------------------------------------
+activemq:[queue:|topic:]destinationName[?options]
+--------------------------------------------
+
+Where `destinationName` is a JMS queue or topic name. By default, the
+`destinationName` is interpreted as a queue name. For example, to
+connect to the queue, `foo` use:
+
+-----------
+activemq:foo
+-----------
+
+// component-configure options: START
+
+// component-configure options: END
+
+// component options: START
+include::partial$component-configure-options.adoc[]
+include::partial$component-endpoint-options.adoc[]
+// component options: END
+
+// endpoint options: START
+
+// endpoint options: END
+
+== Examples
+
+You'll need to provide a connectionFactory to the ActiveMQ Component, to have the following examples working.
+
+=== Producer Example
+
+[source,java]
+--------------------------------------------------------------------------------
+from("timer:mytimer?period=5000")
+        .setBody(constant("HELLO from Camel!"))
+        .to("activemq:queue:HELLO.WORLD");
+--------------------------------------------------------------------------------
+
+=== Consumer Example
+
+[source,java]
+--------------------------------------------------------------------------------
+from("activemq:queue:HELLO.WORLD")
+        .log("Received a message - ${body}");
+--------------------------------------------------------------------------------
+
+
+
+include::spring-boot:partial$starter.adoc[]
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
new file mode 100644
index 00000000000..996b20a8886
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
@@ -0,0 +1,283 @@
+/*
+ * 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.activemq;
+
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.activemq.Service;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.jms.JmsComponent;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.component.jms.JmsEndpoint;
+import org.apache.camel.component.jms.QueueBrowseStrategy;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.PropertiesHelper;
+import org.apache.camel.util.URISupport;
+import org.springframework.jms.connection.SingleConnectionFactory;
+import org.springframework.jms.core.JmsTemplate;
+
+/**
+ * The ActiveMQ Component.
+ */
+@Component("activemq")
+public class ActiveMQComponent extends JmsComponent {
+    private final CopyOnWriteArrayList<SingleConnectionFactory> singleConnectionFactoryList = new CopyOnWriteArrayList<>();
+    private final CopyOnWriteArrayList<Service> pooledConnectionFactoryServiceList = new CopyOnWriteArrayList<>();
+
+    public ActiveMQComponent() {
+    }
+
+    public ActiveMQComponent(CamelContext context) {
+        super(context);
+    }
+
+    public ActiveMQComponent(ActiveMQConfiguration configuration) {
+        setConfiguration(configuration);
+    }
+
+    /**
+     * Creates an <a href="http://camel.apache.org/activemq.html">ActiveMQ Component</a>
+     *
+     * @return the created component
+     */
+    public static ActiveMQComponent activeMQComponent() {
+        return new ActiveMQComponent();
+    }
+
+    /**
+     * Creates an <a href="http://camel.apache.org/activemq.html">ActiveMQ Component</a> connecting to the given
+     * <a href="http://activemq.apache.org/configuring-transports.html">broker URL</a>
+     *
+     * @param  brokerURL the URL to connect to
+     * @return           the created component
+     */
+    public static ActiveMQComponent activeMQComponent(String brokerURL) {
+        ActiveMQComponent answer = new ActiveMQComponent();
+        if (answer.getConfiguration() instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) answer.getConfiguration()).setBrokerURL(brokerURL);
+        }
+
+        return answer;
+    }
+
+    public String getBrokerURL() {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            return ((ActiveMQConfiguration) getConfiguration()).getBrokerURL();
+        }
+        return null;
+    }
+
+    /**
+     * Sets the broker URL to use to connect to ActiveMQ. If none configured then localhost:61616 is used by default
+     * (however can be overridden by configuration from environment variables)
+     */
+    @Metadata(label = "common")
+    public void setBrokerURL(String brokerURL) {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) getConfiguration()).setBrokerURL(brokerURL);
+        }
+    }
+
+    /**
+     * Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended
+     * practice to send Java serialized objects over network. Setting this to true can expose security risks, so use
+     * this with care.
+     */
+    @Metadata(defaultValue = "false", label = "advanced")
+    public void setTrustAllPackages(boolean trustAllPackages) {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) getConfiguration()).setTrustAllPackages(trustAllPackages);
+        }
+    }
+
+    public boolean isTrustAllPackages() {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            return ((ActiveMQConfiguration) getConfiguration()).isTrustAllPackages();
+        }
+        return false;
+    }
+
+    /**
+     * Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ
+     * from outside of a message consuming thread, pooling will be used rather than the default with the Spring
+     * {@link JmsTemplate} which will create a new connection, session, producer for each message then close them all
+     * down again.
+     * <p/>
+     * The default value is true.
+     */
+    @Metadata(defaultValue = "true", label = "common")
+    public void setUsePooledConnection(boolean usePooledConnection) {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) getConfiguration()).setUsePooledConnection(usePooledConnection);
+        }
+    }
+
+    public boolean isUsePooledConnection() {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            return ((ActiveMQConfiguration) getConfiguration()).isUsePooledConnection();
+        }
+        return true;
+    }
+
+    /**
+     * Enables or disables whether a Spring {@link SingleConnectionFactory} will be used so that when messages are sent
+     * to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the
+     * Spring {@link JmsTemplate} which will create a new connection, session, producer for each message then close them
+     * all down again.
+     * <p/>
+     * The default value is false and a pooled connection is used by default.
+     */
+    @Metadata(defaultValue = "false", label = "common")
+    public void setUseSingleConnection(boolean useSingleConnection) {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) getConfiguration()).setUseSingleConnection(useSingleConnection);
+        }
+    }
+
+    public boolean isUseSingleConnection() {
+        if (getConfiguration() instanceof ActiveMQConfiguration) {
+            return ((ActiveMQConfiguration) getConfiguration()).isUseSingleConnection();
+        }
+        return false;
+    }
+
+    @Override
+    protected void setProperties(Endpoint bean, Map<String, Object> parameters) throws Exception {
+        Object useSingleConnection = parameters.remove("useSingleConnection");
+        if (useSingleConnection != null) {
+            ((ActiveMQConfiguration) ((JmsEndpoint) bean).getConfiguration())
+                    .setUseSingleConnection(
+                            PropertyConfigurerSupport.property(getCamelContext(), boolean.class, useSingleConnection));
+        }
+        Object usePooledConnection = parameters.remove("usePooledConnection");
+        if (usePooledConnection != null) {
+            ((ActiveMQConfiguration) ((JmsEndpoint) bean).getConfiguration())
+                    .setUsePooledConnection(
+                            PropertyConfigurerSupport.property(getCamelContext(), boolean.class, usePooledConnection));
+        }
+        super.setProperties(bean, parameters);
+    }
+
+    protected void addPooledConnectionFactoryService(Service pooledConnectionFactoryService) {
+        pooledConnectionFactoryServiceList.add(pooledConnectionFactoryService);
+    }
+
+    protected void addSingleConnectionFactory(SingleConnectionFactory singleConnectionFactory) {
+        singleConnectionFactoryList.add(singleConnectionFactory);
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    protected String convertPathToActualDestination(String path, Map<String, Object> parameters) {
+        // support ActiveMQ destination options using the destination. prefix
+        // http://activemq.apache.org/destination-options.html
+        Map options = PropertiesHelper.extractProperties(parameters, "destination.");
+
+        String query = URISupport.createQueryString(options);
+
+        // if we have destination options then append them to the destination
+        // name
+        if (ObjectHelper.isNotEmpty(query)) {
+            return path + "?" + query;
+        } else {
+            return path;
+        }
+    }
+
+    @Override
+    protected void doInit() throws Exception {
+        super.doInit();
+
+        // use OriginalDestinationPropagateStrategy by default if no custom
+        // strategy has been set
+        if (getMessageCreatedStrategy() == null) {
+            setMessageCreatedStrategy(new OriginalDestinationPropagateStrategy());
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        for (Service s : pooledConnectionFactoryServiceList) {
+            try {
+                s.stop();
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+        pooledConnectionFactoryServiceList.clear();
+
+        for (SingleConnectionFactory s : singleConnectionFactoryList) {
+            try {
+                s.destroy();
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+        singleConnectionFactoryList.clear();
+
+        super.doStop();
+    }
+
+    /**
+     * Configuration of ActiveMQ
+     */
+    @Override
+    public void setConfiguration(JmsConfiguration configuration) {
+        if (configuration instanceof ActiveMQConfiguration) {
+            ((ActiveMQConfiguration) configuration).setActiveMQComponent(this);
+        }
+        super.setConfiguration(configuration);
+    }
+
+    @Override
+    protected JmsConfiguration createConfiguration() {
+        ActiveMQConfiguration answer = new ActiveMQConfiguration();
+        answer.setActiveMQComponent(this);
+        return answer;
+    }
+
+    @Override
+    protected JmsEndpoint createTemporaryTopicEndpoint(
+            String uri, JmsComponent component, String subject, JmsConfiguration configuration) {
+        return new ActiveMQTemporaryTopicEndpoint(uri, component, subject, configuration);
+    }
+
+    @Override
+    protected JmsEndpoint createTopicEndpoint(
+            String uri, JmsComponent component, String subject, JmsConfiguration configuration) {
+        return new ActiveMQEndpoint(uri, component, subject, true, configuration);
+    }
+
+    @Override
+    protected JmsEndpoint createTemporaryQueueEndpoint(
+            String uri, JmsComponent component, String subject, JmsConfiguration configuration,
+            QueueBrowseStrategy queueBrowseStrategy) {
+        return new ActiveMQTemporaryQueueEndpoint(uri, component, subject, configuration, queueBrowseStrategy);
+    }
+
+    @Override
+    protected JmsEndpoint createQueueEndpoint(
+            String uri, JmsComponent component, String subject, JmsConfiguration configuration,
+            QueueBrowseStrategy queueBrowseStrategy) {
+        return new ActiveMQQueueEndpoint(uri, component, subject, configuration, queueBrowseStrategy);
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
new file mode 100644
index 00000000000..8d7cd2213bf
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
@@ -0,0 +1,220 @@
+/*
+ * 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.activemq;
+
+import java.lang.reflect.Constructor;
+
+import jakarta.jms.ConnectionFactory;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.Service;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.springframework.jms.connection.CachingConnectionFactory;
+import org.springframework.jms.connection.DelegatingConnectionFactory;
+import org.springframework.jms.connection.JmsTransactionManager;
+import org.springframework.jms.connection.SingleConnectionFactory;
+import org.springframework.jms.core.JmsTemplate;
+import org.springframework.transaction.PlatformTransactionManager;
+
+public class ActiveMQConfiguration extends JmsConfiguration {
+    private ActiveMQComponent activeMQComponent;
+    private String brokerURL = ActiveMQConnectionFactory.DEFAULT_BROKER_URL;
+    private volatile boolean customBrokerURL;
+    private boolean useSingleConnection;
+    private boolean usePooledConnection = true;
+    private boolean trustAllPackages;
+
+    public ActiveMQConfiguration() {
+    }
+
+    public String getBrokerURL() {
+        return brokerURL;
+    }
+
+    /**
+     * Sets the broker URL to use to connect to ActiveMQ broker.
+     */
+    public void setBrokerURL(String brokerURL) {
+        this.brokerURL = brokerURL;
+        this.customBrokerURL = true;
+    }
+
+    public boolean isUseSingleConnection() {
+        return useSingleConnection;
+    }
+
+    /**
+     * @deprecated - use JmsConfiguration#getUsername()
+     * @see        JmsConfiguration#getUsername()
+     */
+    @Deprecated
+    public String getUserName() {
+        return getUsername();
+    }
+
+    /**
+     * @deprecated - use JmsConfiguration#setUsername(String)
+     * @see        JmsConfiguration#setUsername(String)
+     */
+    @Deprecated
+    public void setUserName(String userName) {
+        setUsername(userName);
+    }
+
+    /**
+     * Enables or disables whether a Spring {@link SingleConnectionFactory} will be used so that when messages are sent
+     * to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the
+     * Spring {@link JmsTemplate} which will create a new connection, session, producer for each message then close them
+     * all down again.
+     * <p/>
+     * The default value is false and a pooled connection is used by default.
+     */
+    public void setUseSingleConnection(boolean useSingleConnection) {
+        this.useSingleConnection = useSingleConnection;
+    }
+
+    public boolean isUsePooledConnection() {
+        return usePooledConnection;
+    }
+
+    /**
+     * Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ
+     * from outside of a message consuming thread, pooling will be used rather than the default with the Spring
+     * {@link JmsTemplate} which will create a new connection, session, producer for each message then close them all
+     * down again.
+     * <p/>
+     * The default value is true.
+     */
+    public void setUsePooledConnection(boolean usePooledConnection) {
+        this.usePooledConnection = usePooledConnection;
+    }
+
+    public boolean isTrustAllPackages() {
+        return trustAllPackages;
+    }
+
+    /**
+     * ObjectMessage objects depend on Java serialization of marshal/unmarshal object payload. This process is generally
+     * considered unsafe as malicious payload can exploit the host system. That's why starting with versions 5.12.2 and
+     * 5.13.0, ActiveMQ enforces users to explicitly whitelist packages that can be exchanged using ObjectMessages.
+     * <br/>
+     * This option can be set to <tt>true</tt> to trust all packages (eg whitelist is *).
+     * <p/>
+     * See more details at: http://activemq.apache.org/objectmessage.html
+     */
+    public void setTrustAllPackages(boolean trustAllPackages) {
+        this.trustAllPackages = trustAllPackages;
+    }
+
+    /**
+     * Factory method to create a default transaction manager if one is not specified
+     */
+    @Override
+    protected PlatformTransactionManager createTransactionManager() {
+        JmsTransactionManager answer = new JmsTransactionManager(getOrCreateConnectionFactory());
+        answer.afterPropertiesSet();
+        return answer;
+    }
+
+    protected void setActiveMQComponent(ActiveMQComponent activeMQComponent) {
+        this.activeMQComponent = activeMQComponent;
+    }
+
+    @Override
+    public void setConnectionFactory(ConnectionFactory connectionFactory) {
+        ActiveMQConnectionFactory acf = null;
+
+        ConnectionFactory target = connectionFactory;
+        if (target instanceof CachingConnectionFactory) {
+            CachingConnectionFactory ccf = (CachingConnectionFactory) target;
+            target = ccf.getTargetConnectionFactory();
+        }
+        if (target instanceof DelegatingConnectionFactory) {
+            DelegatingConnectionFactory dcf = (DelegatingConnectionFactory) target;
+            target = dcf.getTargetConnectionFactory();
+        }
+        if (target instanceof ActiveMQConnectionFactory) {
+            acf = (ActiveMQConnectionFactory) target;
+        }
+
+        if (acf != null) {
+            if (customBrokerURL) {
+                // okay a custom broker url was configured which we want to ensure
+                // the real target connection factory knows about
+                acf.setBrokerURL(brokerURL);
+            } else {
+                // its the opposite the target has the brokerURL which we want to set on this
+                setBrokerURL(acf.getBrokerURL());
+            }
+        }
+
+        super.setConnectionFactory(connectionFactory);
+    }
+
+    @Override
+    protected ConnectionFactory createConnectionFactory() {
+        org.apache.activemq.ActiveMQConnectionFactory answer
+                = new org.apache.activemq.ActiveMQConnectionFactory();
+        answer.setTrustAllPackages(trustAllPackages);
+        if (getUsername() != null) {
+            answer.setUserName(getUsername());
+        }
+        if (getPassword() != null) {
+            answer.setPassword(getPassword());
+        }
+        answer.setBrokerURL(getBrokerURL());
+        if (isUseSingleConnection()) {
+            SingleConnectionFactory scf = new SingleConnectionFactory(answer);
+            if (activeMQComponent != null) {
+                activeMQComponent.addSingleConnectionFactory(scf);
+            }
+            return scf;
+        } else if (isUsePooledConnection()) {
+            ConnectionFactory pcf = createPooledConnectionFactory(answer);
+            if (activeMQComponent != null) {
+                activeMQComponent.addPooledConnectionFactoryService((Service) pcf);
+            }
+            return pcf;
+        } else {
+            return answer;
+        }
+    }
+
+    protected ConnectionFactory createPooledConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
+        try {
+            Class type = loadClass("org.apache.activemq.pool.PooledConnectionFactory", getClass().getClassLoader());
+            Constructor constructor = type.getConstructor(org.apache.activemq.ActiveMQConnectionFactory.class);
+            return (ConnectionFactory) constructor.newInstance(connectionFactory);
+        } catch (Exception e) {
+            throw new RuntimeCamelException("Failed to instantiate PooledConnectionFactory: " + e, e);
+        }
+    }
+
+    public static Class<?> loadClass(String name, ClassLoader loader) throws ClassNotFoundException {
+        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+        if (contextClassLoader != null) {
+            try {
+                return contextClassLoader.loadClass(name);
+            } catch (ClassNotFoundException e) {
+                return loader.loadClass(name);
+            }
+        } else {
+            return loader.loadClass(name);
+        }
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
new file mode 100644
index 00000000000..bf57ea9c4e2
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
@@ -0,0 +1,73 @@
+/*
+ * 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.activemq;
+
+import java.util.Map;
+
+import org.apache.camel.Category;
+import org.apache.camel.component.jms.JmsBinding;
+import org.apache.camel.component.jms.JmsComponent;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.component.jms.JmsEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+
+/**
+ * Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component.
+ */
+@UriEndpoint(firstVersion = "1.0.0", extendsScheme = "jms", scheme = "activemq", title = "ActiveMQ",
+        syntax = "activemq:destinationType:destinationName",
+        category = { Category.MESSAGING })
+public class ActiveMQEndpoint extends JmsEndpoint {
+
+    @UriParam(multiValue = true, prefix = "destination.", label = "consumer,advanced")
+    private Map<String, String> destinationOptions;
+
+    public ActiveMQEndpoint() {
+    }
+
+    public ActiveMQEndpoint(String uri, JmsComponent component, String destinationName, boolean pubSubDomain,
+                            JmsConfiguration configuration) {
+        super(uri, component, destinationName, pubSubDomain, configuration);
+    }
+
+    public ActiveMQEndpoint(String endpointUri, JmsBinding binding, JmsConfiguration configuration, String destinationName,
+                            boolean pubSubDomain) {
+        super(endpointUri, binding, configuration, destinationName, pubSubDomain);
+    }
+
+    public ActiveMQEndpoint(String endpointUri, String destinationName, boolean pubSubDomain) {
+        super(endpointUri, destinationName, pubSubDomain);
+    }
+
+    public ActiveMQEndpoint(String endpointUri, String destinationName) {
+        super(endpointUri, destinationName);
+    }
+
+    public Map<String, String> getDestinationOptions() {
+        return destinationOptions;
+    }
+
+    /**
+     * Destination Options are a way to provide extended configuration options to a JMS consumer without having to
+     * extend the JMS API. The options are encoded using URL query syntax in the destination name that the consumer is
+     * created on. See more details at https://activemq.apache.org/destination-options.
+     */
+    public void setDestinationOptions(Map<String, String> destinationOptions) {
+        this.destinationOptions = destinationOptions;
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
new file mode 100644
index 00000000000..a40f7d6457b
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
@@ -0,0 +1,101 @@
+/*
+ * 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.activemq;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.api.management.ManagedAttribute;
+import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.component.jms.DefaultQueueBrowseStrategy;
+import org.apache.camel.component.jms.JmsBrowsableEndpoint;
+import org.apache.camel.component.jms.JmsComponent;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.component.jms.QueueBrowseStrategy;
+import org.apache.camel.spi.BrowsableEndpoint;
+import org.springframework.jms.core.JmsOperations;
+
+/**
+ * An endpoint for a JMS Queue which is also browsable
+ */
+@ManagedResource(description = "Managed JMS Queue Endpoint")
+public class ActiveMQQueueEndpoint extends ActiveMQEndpoint implements JmsBrowsableEndpoint, BrowsableEndpoint {
+    private int maximumBrowseSize = -1;
+    private final QueueBrowseStrategy queueBrowseStrategy;
+
+    public ActiveMQQueueEndpoint(String uri, JmsComponent component, String destination,
+                                 JmsConfiguration configuration) {
+        this(uri, component, destination, configuration, null);
+        setDestinationType("queue");
+    }
+
+    public ActiveMQQueueEndpoint(String uri, JmsComponent component, String destination,
+                                 JmsConfiguration configuration, QueueBrowseStrategy queueBrowseStrategy) {
+        super(uri, component, destination, false, configuration);
+        setDestinationType("queue");
+        if (queueBrowseStrategy == null) {
+            this.queueBrowseStrategy = createQueueBrowseStrategy();
+        } else {
+            this.queueBrowseStrategy = queueBrowseStrategy;
+        }
+    }
+
+    public ActiveMQQueueEndpoint(String endpointUri, String destination, QueueBrowseStrategy queueBrowseStrategy) {
+        super(endpointUri, destination, false);
+        setDestinationType("queue");
+        if (queueBrowseStrategy == null) {
+            this.queueBrowseStrategy = createQueueBrowseStrategy();
+        } else {
+            this.queueBrowseStrategy = queueBrowseStrategy;
+        }
+    }
+
+    public ActiveMQQueueEndpoint(String endpointUri, String destination) {
+        super(endpointUri, destination, false);
+        setDestinationType("queue");
+        queueBrowseStrategy = createQueueBrowseStrategy();
+    }
+
+    @ManagedAttribute
+    public int getMaximumBrowseSize() {
+        return maximumBrowseSize;
+    }
+
+    /**
+     * If a number is set > 0 then this limits the number of messages that are returned when browsing the queue
+     */
+    @ManagedAttribute
+    public void setMaximumBrowseSize(int maximumBrowseSize) {
+        this.maximumBrowseSize = maximumBrowseSize;
+    }
+
+    @Override
+    public List<Exchange> getExchanges() {
+        if (queueBrowseStrategy == null) {
+            return Collections.emptyList();
+        }
+        String queue = getDestinationName();
+        JmsOperations template = getConfiguration().createInOnlyTemplate(this, false, queue);
+        return queueBrowseStrategy.browse(template, queue, this);
+    }
+
+    protected QueueBrowseStrategy createQueueBrowseStrategy() {
+        return new DefaultQueueBrowseStrategy();
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
new file mode 100644
index 00000000000..418e6468c41
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
@@ -0,0 +1,25 @@
+/*
+ * 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.activemq;
+
+import org.apache.camel.component.jms.JmsSendDynamicAware;
+import org.apache.camel.spi.annotations.SendDynamic;
+
+@SendDynamic("activemq")
+public class ActiveMQSendDynamicAware extends JmsSendDynamicAware {
+
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
new file mode 100644
index 00000000000..c8862ceb82b
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
@@ -0,0 +1,39 @@
+/*
+ * 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.activemq;
+
+import org.apache.camel.component.jms.JmsComponent;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.component.jms.JmsTemporaryQueueEndpoint;
+import org.apache.camel.component.jms.QueueBrowseStrategy;
+
+public class ActiveMQTemporaryQueueEndpoint extends JmsTemporaryQueueEndpoint {
+
+    public ActiveMQTemporaryQueueEndpoint(String uri, JmsComponent component, String destination,
+                                          JmsConfiguration configuration) {
+        super(uri, component, destination, configuration);
+    }
+
+    public ActiveMQTemporaryQueueEndpoint(String uri, JmsComponent component, String destination,
+                                          JmsConfiguration configuration, QueueBrowseStrategy queueBrowseStrategy) {
+        super(uri, component, destination, configuration, queueBrowseStrategy);
+    }
+
+    public ActiveMQTemporaryQueueEndpoint(String endpointUri, String destination) {
+        super(endpointUri, destination);
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
new file mode 100644
index 00000000000..0f6bfd1fa7b
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
@@ -0,0 +1,33 @@
+/*
+ * 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.activemq;
+
+import org.apache.camel.component.jms.JmsComponent;
+import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.component.jms.JmsTemporaryTopicEndpoint;
+
+public class ActiveMQTemporaryTopicEndpoint extends JmsTemporaryTopicEndpoint {
+
+    public ActiveMQTemporaryTopicEndpoint(String uri, JmsComponent component, String destination,
+                                          JmsConfiguration configuration) {
+        super(uri, component, destination, configuration);
+    }
+
+    public ActiveMQTemporaryTopicEndpoint(String endpointUri, String destination) {
+        super(endpointUri, destination);
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
new file mode 100644
index 00000000000..a28674ad210
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
@@ -0,0 +1,56 @@
+/*
+ * 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.activemq;
+
+import jakarta.jms.Message;
+import jakarta.jms.Session;
+
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQMessage;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.jms.JmsMessage;
+import org.apache.camel.component.jms.MessageCreatedStrategy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A strategy to enrich JMS message with their original destination if the Camel route originates from a JMS
+ * destination.
+ */
+public class OriginalDestinationPropagateStrategy implements MessageCreatedStrategy {
+
+    private static final transient Logger LOG = LoggerFactory.getLogger(OriginalDestinationPropagateStrategy.class);
+
+    @Override
+    public void onMessageCreated(Message message, Session session, Exchange exchange, Throwable cause) {
+        if (exchange.getIn() instanceof JmsMessage) {
+            JmsMessage msg = exchange.getIn(JmsMessage.class);
+            Message jms = msg.getJmsMessage();
+            if (jms != null && jms instanceof ActiveMQMessage && message instanceof ActiveMQMessage) {
+                ActiveMQMessage amq = (ActiveMQMessage) jms;
+                if (amq.getOriginalDestination() == null) {
+                    ActiveMQDestination from = amq.getDestination();
+                    if (from != null) {
+                        LOG.trace("Setting OriginalDestination: {} on {}", from, message);
+                        ((ActiveMQMessage) message).setOriginalDestination(from);
+                    }
+                }
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
new file mode 100644
index 00000000000..a2b5bf87e42
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
@@ -0,0 +1,38 @@
+/*
+ * 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.activemq.converter;
+
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.camel.Converter;
+
+@Converter(generateLoader = true)
+public class ActiveMQConverter {
+
+    /**
+     * Converts a URL in ActiveMQ syntax to a destination such as to support "queue://foo.bar" or 'topic://bar.whatnot".
+     * Things default to queues if no scheme. This allows ActiveMQ destinations to be passed around as Strings and
+     * converted back again.
+     *
+     * @param  name is the name of the queue or the full URI using prefixes queue:// or topic://
+     * @return      the ActiveMQ destination
+     */
+    @Converter
+    public ActiveMQDestination toDestination(String name) {
+        return ActiveMQDestination.createDestination(name, ActiveMQDestination.QUEUE_TYPE);
+    }
+
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
new file mode 100644
index 00000000000..3795d950758
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
@@ -0,0 +1,97 @@
+/*
+ * 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.activemq.converter;
+
+import java.io.Serializable;
+
+import jakarta.jms.JMSException;
+import jakarta.jms.Message;
+import jakarta.jms.MessageListener;
+
+import org.apache.activemq.command.ActiveMQMessage;
+import org.apache.activemq.command.ActiveMQObjectMessage;
+import org.apache.activemq.command.ActiveMQTextMessage;
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.component.jms.JmsBinding;
+
+@Converter(generateLoader = true)
+public class ActiveMQMessageConverter {
+    private JmsBinding binding = new JmsBinding();
+
+    /**
+     * Converts the inbound message exchange to an ActiveMQ JMS message
+     *
+     * @return the ActiveMQ message
+     */
+    @Converter
+    public ActiveMQMessage toMessage(Exchange exchange) throws JMSException {
+        ActiveMQMessage message = createActiveMQMessage(exchange);
+        getBinding().appendJmsProperties(message, exchange);
+        return message;
+    }
+
+    /**
+     * Allows a JMS {@link MessageListener} to be converted to a Camel {@link Processor} so that we can provide better
+     * <a href="">Bean Integration</a> so that we can use any JMS MessageListener in in Camel as a bean
+     *
+     * @param  listener the JMS message listener
+     * @return          a newly created Camel Processor which when invoked will invoke
+     *                  {@link MessageListener#onMessage(Message)}
+     */
+    @Converter
+    public Processor toProcessor(final MessageListener listener) {
+        return new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                Message message = toMessage(exchange);
+                listener.onMessage(message);
+            }
+
+            @Override
+            public String toString() {
+                return "Processor of MessageListener: " + listener;
+            }
+        };
+    }
+
+    private static ActiveMQMessage createActiveMQMessage(Exchange exchange) throws JMSException {
+        Object body = exchange.getIn().getBody();
+        if (body instanceof String) {
+            ActiveMQTextMessage answer = new ActiveMQTextMessage();
+            answer.setText((String) body);
+            return answer;
+        } else if (body instanceof Serializable) {
+            ActiveMQObjectMessage answer = new ActiveMQObjectMessage();
+            answer.setObject((Serializable) body);
+            return answer;
+        } else {
+            return new ActiveMQMessage();
+        }
+
+    }
+
+    // Properties
+    // -------------------------------------------------------------------------
+    public JmsBinding getBinding() {
+        return binding;
+    }
+
+    public void setBinding(JmsBinding binding) {
+        this.binding = binding;
+    }
+}
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/package.html b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/package.html
new file mode 100644
index 00000000000..a1c8201ede9
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/package.html
@@ -0,0 +1,30 @@
+<!--
+
+    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.
+
+-->
+<html>
+<head>
+</head>
+<body>
+
+Defines the <a href="http://camel.apache.org/type-converter.html">Type Converters</a> for working
+with JMS and ActiveMQ with <a href="http://camel.apache.org/">Camel</a>
+<a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration Patterns</a>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/package.html b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/package.html
new file mode 100644
index 00000000000..96fcdcbeb27
--- /dev/null
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/package.html
@@ -0,0 +1,31 @@
+<!--
+
+    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.
+
+-->
+<html>
+<head>
+</head>
+<body>
+
+Defines the <a href="http://camel.apache.org/activemq.html">ActiveMQ Component</a> for
+<a href="http://camel.apache.org">Camel</a> to provide great
+<a href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration Patterns</a>
+integration for ActiveMQ users.
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/components/camel-activemq/src/test/resources/log4j2-test.properties b/components/camel-activemq/src/test/resources/log4j2-test.properties
new file mode 100644
index 00000000000..b147f8b8207
--- /dev/null
+++ b/components/camel-activemq/src/test/resources/log4j2-test.properties
@@ -0,0 +1,28 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+appender.out.type = File
+appender.out.name = out
+appender.out.fileName = target/camel-activemq-test.log
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+rootLogger.level = INFO
+rootLogger.appenderRef.out.ref = out
diff --git a/components/pom.xml b/components/pom.xml
index 47f2883f5d5..56b8b7b701a 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -74,6 +74,7 @@
         <module>camel-service</module>
 
         <!-- regular modules in alphabetic order -->
+        <module>camel-activemq</module>
         <module>camel-amqp</module>
         <module>camel-arangodb</module>
         <module>camel-as2</module>
diff --git a/parent/pom.xml b/parent/pom.xml
index 03b66f1d6e7..6a2a9b566d6 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -50,6 +50,7 @@
         <checkstyle.failOnViolation>false</checkstyle.failOnViolation>
         <!-- dependency versions -->
         <abdera-version>1.1.3</abdera-version>
+        <activemq-version>5.18.1</activemq-version>
         <activemq-artemis-version>2.29.0</activemq-artemis-version>
         <angus-mail-version>2.0.2</angus-mail-version>
         <apacheds-version>2.0.0.AM26</apacheds-version>


[camel] 05/06: CAMEL-19429: fixed checkstyle

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 49f7629c55627b96682592d0feb5b39e4b65e0b3
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Jun 19 13:44:56 2023 +0200

    CAMEL-19429: fixed checkstyle
---
 catalog/camel-allcomponents/pom.xml                                 | 5 +++++
 components/camel-activemq/src/main/docs/activemq-component.adoc     | 3 ++-
 .../java/org/apache/camel/component/activemq/ActiveMQComponent.java | 2 +-
 .../org/apache/camel/component/activemq/ActiveMQConfiguration.java  | 2 +-
 .../java/org/apache/camel/component/activemq/ActiveMQEndpoint.java  | 6 +++---
 .../org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java  | 2 +-
 .../apache/camel/component/activemq/ActiveMQSendDynamicAware.java   | 2 +-
 .../camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java    | 2 +-
 .../camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java    | 2 +-
 .../camel/component/activemq/converter/ActiveMQConverter.java       | 2 +-
 .../component/activemq/converter/ActiveMQMessageConverter.java      | 2 +-
 .../java/org/apache/camel/component/activemq/ActiveMQITSupport.java | 1 -
 parent/pom.xml                                                      | 6 ++++++
 13 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/catalog/camel-allcomponents/pom.xml b/catalog/camel-allcomponents/pom.xml
index d61a7171b51..7d1aabf1a4e 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -33,6 +33,11 @@
     <description>Depends on all components to ensure correct build ordering</description>
 
 	<dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-activemq</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-amqp</artifactId>
diff --git a/components/camel-activemq/src/main/docs/activemq-component.adoc b/components/camel-activemq/src/main/docs/activemq-component.adoc
index fbf591dbc65..59c379801ae 100644
--- a/components/camel-activemq/src/main/docs/activemq-component.adoc
+++ b/components/camel-activemq/src/main/docs/activemq-component.adoc
@@ -5,6 +5,7 @@
 :description: Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component.
 :since: 1.0
 :supportlevel: Stable
+:tabs-sync-option:
 :component-header: Both producer and consumer are supported
 //Manually maintained attributes
 :camel-spring-boot-name: activemq
@@ -86,4 +87,4 @@ from("activemq:queue:HELLO.WORLD")
 
 
 
-include::spring-boot:partial$starter.adoc[]
\ No newline at end of file
+include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
index 996b20a8886..322ae1d6317 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQComponent.java
@@ -280,4 +280,4 @@ public class ActiveMQComponent extends JmsComponent {
             QueueBrowseStrategy queueBrowseStrategy) {
         return new ActiveMQQueueEndpoint(uri, component, subject, configuration, queueBrowseStrategy);
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
index 8d7cd2213bf..a464efae91d 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQConfiguration.java
@@ -217,4 +217,4 @@ public class ActiveMQConfiguration extends JmsConfiguration {
             return loader.loadClass(name);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
index bf57ea9c4e2..1ba72b7fd65 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
@@ -30,8 +30,8 @@ import org.apache.camel.spi.UriParam;
  * Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component.
  */
 @UriEndpoint(firstVersion = "1.0.0", extendsScheme = "jms", scheme = "activemq", title = "ActiveMQ",
-        syntax = "activemq:destinationType:destinationName",
-        category = { Category.MESSAGING })
+             syntax = "activemq:destinationType:destinationName",
+             category = { Category.MESSAGING })
 public class ActiveMQEndpoint extends JmsEndpoint {
 
     @UriParam(multiValue = true, prefix = "destination.", label = "consumer,advanced")
@@ -70,4 +70,4 @@ public class ActiveMQEndpoint extends JmsEndpoint {
     public void setDestinationOptions(Map<String, String> destinationOptions) {
         this.destinationOptions = destinationOptions;
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
index a40f7d6457b..e2dea54ad70 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQQueueEndpoint.java
@@ -98,4 +98,4 @@ public class ActiveMQQueueEndpoint extends ActiveMQEndpoint implements JmsBrowsa
         return new DefaultQueueBrowseStrategy();
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
index 418e6468c41..cac94126325 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQSendDynamicAware.java
@@ -22,4 +22,4 @@ import org.apache.camel.spi.annotations.SendDynamic;
 @SendDynamic("activemq")
 public class ActiveMQSendDynamicAware extends JmsSendDynamicAware {
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
index c8862ceb82b..84839dfc4cc 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryQueueEndpoint.java
@@ -36,4 +36,4 @@ public class ActiveMQTemporaryQueueEndpoint extends JmsTemporaryQueueEndpoint {
     public ActiveMQTemporaryQueueEndpoint(String endpointUri, String destination) {
         super(endpointUri, destination);
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
index 0f6bfd1fa7b..353421840d7 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQTemporaryTopicEndpoint.java
@@ -30,4 +30,4 @@ public class ActiveMQTemporaryTopicEndpoint extends JmsTemporaryTopicEndpoint {
     public ActiveMQTemporaryTopicEndpoint(String endpointUri, String destination) {
         super(endpointUri, destination);
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
index a2b5bf87e42..49630a80038 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQConverter.java
@@ -35,4 +35,4 @@ public class ActiveMQConverter {
         return ActiveMQDestination.createDestination(name, ActiveMQDestination.QUEUE_TYPE);
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
index 3795d950758..935258edd98 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverter.java
@@ -94,4 +94,4 @@ public class ActiveMQMessageConverter {
     public void setBinding(JmsBinding binding) {
         this.binding = binding;
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
index d0e1f8b2254..918051ab20f 100644
--- a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
+++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
@@ -40,7 +40,6 @@ public abstract class ActiveMQITSupport implements ConfigurableContext, Configur
     @RegisterExtension
     protected static CamelContextExtension contextExtension = new DefaultCamelContextExtension();
 
-
     public static MessagingLocalContainerService<ArtemisContainer> createLocalService() {
         ArtemisContainer container = new ArtemisContainer();
 
diff --git a/parent/pom.xml b/parent/pom.xml
index 6a2a9b566d6..5f6dbad0f48 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -667,6 +667,12 @@
 
             <!-- NOTE: auto-generated list of components when building camel catalog -->
             <!-- camel components: START -->
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-activemq</artifactId>
+                <version>${project.version}</version>
+                <type>jar</type>
+            </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-amqp</artifactId>


[camel] 03/06: CAMEL-19429: removed unnecessary use o transient variables

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7d5447b1427f9a4595fade9c3aa86c74f326c3b1
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Jun 19 13:34:27 2023 +0200

    CAMEL-19429: removed unnecessary use o transient variables
---
 .../component/activemq/OriginalDestinationPropagateStrategy.java      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
index a28674ad210..0fce72d422b 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
  */
 public class OriginalDestinationPropagateStrategy implements MessageCreatedStrategy {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(OriginalDestinationPropagateStrategy.class);
+    private static final Logger LOG = LoggerFactory.getLogger(OriginalDestinationPropagateStrategy.class);
 
     @Override
     public void onMessageCreated(Message message, Session session, Exchange exchange, Throwable cause) {
@@ -53,4 +53,4 @@ public class OriginalDestinationPropagateStrategy implements MessageCreatedStrat
         }
     }
 
-}
\ No newline at end of file
+}


[camel] 02/06: CAMEL-19429: added an initial set of integration tests

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 4f07a871cf5e0e621d7c38cf43f2c83e783fe787
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Jun 19 13:25:44 2023 +0200

    CAMEL-19429: added an initial set of integration tests
---
 components/camel-activemq/pom.xml                  |  23 +++-
 .../component/activemq/ActiveMQITSupport.java      |  65 +++++++++++
 .../camel/component/activemq/ActiveMQRouteIT.java  | 121 +++++++++++++++++++++
 .../camel/component/activemq/ActiveMQToDIT.java    |  68 ++++++++++++
 .../activemq/ActiveMQToDSendDynamicIT.java         |  70 ++++++++++++
 5 files changed, 345 insertions(+), 2 deletions(-)

diff --git a/components/camel-activemq/pom.xml b/components/camel-activemq/pom.xml
index 43c3654bd57..94d3c1554d3 100644
--- a/components/camel-activemq/pom.xml
+++ b/components/camel-activemq/pom.xml
@@ -50,9 +50,28 @@
 
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-junit5</artifactId>
+            <artifactId>camel-test-infra-core</artifactId>
+            <version>${project.version}</version>
             <scope>test</scope>
+            <type>test-jar</type>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-artemis</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-messaging-common</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+
     </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
new file mode 100644
index 00000000000..d0e1f8b2254
--- /dev/null
+++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQITSupport.java
@@ -0,0 +1,65 @@
+/*
+ * 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.activemq;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.camel.test.infra.artemis.services.ArtemisContainer;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
+import org.apache.camel.test.infra.core.api.ConfigurableContext;
+import org.apache.camel.test.infra.core.api.ConfigurableRoute;
+import org.apache.camel.test.infra.messaging.services.MessagingLocalContainerService;
+import org.apache.camel.test.infra.messaging.services.MessagingService;
+import org.apache.camel.test.infra.messaging.services.MessagingServiceFactory;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+public abstract class ActiveMQITSupport implements ConfigurableContext, ConfigurableRoute {
+    @Order(1)
+    @RegisterExtension
+    protected static MessagingService service = MessagingServiceFactory.builder()
+            .addLocalMapping(ActiveMQITSupport::createLocalService)
+            .build();
+
+    @Order(2)
+    @RegisterExtension
+    protected static CamelContextExtension contextExtension = new DefaultCamelContextExtension();
+
+
+    public static MessagingLocalContainerService<ArtemisContainer> createLocalService() {
+        ArtemisContainer container = new ArtemisContainer();
+
+        return new MessagingLocalContainerService<>(container, c -> container.defaultEndpoint());
+    }
+
+    /* We don't want topic advisories here: they may cause publication issues (i.e.:
+     * jakarta.jms.InvalidDestinationException: Cannot publish to a deleted Destination) with
+     * spring JMS. So, we disable them ...
+     */
+
+    public static ActiveMQComponent activeMQComponent(String uri) {
+        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(uri);
+
+        connectionFactory.setWatchTopicAdvisories(false);
+
+        ActiveMQConfiguration activeMQConfiguration = new ActiveMQConfiguration();
+        activeMQConfiguration.setConnectionFactory(connectionFactory);
+
+        return new ActiveMQComponent(activeMQConfiguration);
+    }
+}
diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQRouteIT.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQRouteIT.java
new file mode 100644
index 00000000000..52e389a38f2
--- /dev/null
+++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQRouteIT.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.activemq;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.core.annotations.ContextFixture;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ActiveMQRouteIT extends ActiveMQITSupport {
+
+    private ProducerTemplate template;
+
+    private MockEndpoint resultEndpoint;
+    private String expectedBody = "Hello there!";
+
+    @BeforeEach
+    void setupTemplate() {
+        template = contextExtension.getProducerTemplate();
+        resultEndpoint = contextExtension.getMockEndpoint("mock:result");
+    }
+
+    @Test
+    public void testJmsQueue() throws Exception {
+        resultEndpoint.expectedMessageCount(1);
+        resultEndpoint.message(0).header("cheese").isEqualTo(123);
+
+        template.sendBodyAndHeader("activemq:queue:ping", expectedBody, "cheese", 123);
+        resultEndpoint.assertIsSatisfied();
+    }
+
+    @Test
+    public void testRequestReply() {
+        String response = template.requestBody("activemq:queue:inOut", expectedBody, String.class);
+        assertEquals("response", response);
+    }
+
+    @Test
+    public void testJmsTopic() throws Exception {
+        resultEndpoint.expectedMessageCount(2);
+        resultEndpoint.message(0).header("cheese").isEqualTo(123);
+        template.sendBodyAndHeader("activemq:topic:ping", expectedBody, "cheese", 123);
+        resultEndpoint.assertIsSatisfied();
+    }
+
+    @Test
+    public void testPrefixWildcard() throws Exception {
+        resultEndpoint.expectedMessageCount(1);
+        template.sendBody("activemq:wildcard.foo.bar", expectedBody);
+        resultEndpoint.assertIsSatisfied();
+    }
+
+    @Test
+    public void testIncludeDestination() throws Exception {
+        resultEndpoint.expectedMessageCount(1);
+        resultEndpoint.message(0).header("JMSDestination").isEqualTo("queue://ping");
+        template.sendBody("activemq:queue:ping", expectedBody);
+        resultEndpoint.assertIsSatisfied();
+    }
+
+    @ContextFixture
+    public void configureContext(CamelContext context) {
+
+        context.addComponent("activemq", activeMQComponent(service.defaultEndpoint()));
+    }
+
+    @RouteFixture
+    public void createRouteBuilder(CamelContext context) throws Exception {
+        context.addRoutes(createRouteBuilder());
+    }
+
+    private static RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("activemq:queue:ping")
+                        .to("log:routing")
+                        .to("mock:result");
+
+                from("activemq:queue:inOut")
+                        .setBody()
+                        .constant("response");
+
+                from("activemq:topic:ping")
+                        .to("log:routing")
+                        .to("mock:result");
+
+                from("activemq:topic:ping")
+                        .to("log:routing")
+                        .to("mock:result");
+
+                from("activemq:queue:wildcard.#")
+                        .to("log:routing")
+                        .to("mock:result");
+
+                from("activemq:queue:uriEndpoint")
+                        .to("log:routing")
+                        .to("mock:result");
+            }
+        };
+    }
+}
diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDIT.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDIT.java
new file mode 100644
index 00000000000..59745177391
--- /dev/null
+++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDIT.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.activemq;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.core.annotations.ContextFixture;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class ActiveMQToDIT extends ActiveMQITSupport {
+    private ProducerTemplate template;
+
+    @Test
+    public void testToD() throws Exception {
+        contextExtension.getMockEndpoint("mock:bar").expectedBodiesReceived("Hello bar");
+        contextExtension.getMockEndpoint("mock:beer").expectedBodiesReceived("Hello beer");
+
+        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "bar");
+        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "beer");
+
+        MockEndpoint.assertIsSatisfied(contextExtension.getContext());
+    }
+
+    @BeforeEach
+    void setupTemplate() {
+        template = contextExtension.getProducerTemplate();
+    }
+
+    @ContextFixture
+    public void configureContext(CamelContext camelContext) {
+        camelContext.addComponent("activemq", activeMQComponent(service.defaultEndpoint()));
+    }
+
+    @RouteFixture
+    public void createRouteBuilder(CamelContext context) throws Exception {
+        context.addRoutes(createRouteBuilder());
+    }
+
+    private RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                // route message dynamic using toD
+                from("direct:start").toD("activemq:queue:${header.where}");
+
+                from("activemq:queue:bar").to("mock:bar");
+                from("activemq:queue:beer").to("mock:beer");
+            }
+        };
+    }
+}
diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDSendDynamicIT.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDSendDynamicIT.java
new file mode 100644
index 00000000000..7509817c474
--- /dev/null
+++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQToDSendDynamicIT.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.activemq;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.infra.core.annotations.ContextFixture;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ActiveMQToDSendDynamicIT extends ActiveMQITSupport {
+    private ProducerTemplate template;
+    private ConsumerTemplate consumer;
+
+    @Test
+    public void testToD() {
+        template.sendBodyAndHeader("direct:start", "Hello bar", "where", "bar");
+        template.sendBodyAndHeader("direct:start", "Hello beer", "where", "beer");
+
+        // The messages should be in the queues
+        String out = consumer.receiveBody("activemq:queue:bar", 2000, String.class);
+        assertEquals("Hello bar", out);
+        out = consumer.receiveBody("activemq:queue:beer", 2000, String.class);
+        assertEquals("Hello beer", out);
+    }
+
+    @BeforeEach
+    void setupTemplate() {
+        template = contextExtension.getProducerTemplate();
+        consumer = contextExtension.getConsumerTemplate();
+    }
+
+    @ContextFixture
+    public void configureContext(CamelContext camelContext) {
+        camelContext.addComponent("activemq", activeMQComponent(service.defaultEndpoint()));
+    }
+
+    @RouteFixture
+    public void createRouteBuilder(CamelContext context) throws Exception {
+        context.addRoutes(createRouteBuilder());
+    }
+
+    private RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                // route message dynamic using toD
+                from("direct:start").toD("activemq:queue:${header.where}");
+            }
+        };
+    }
+}


[camel] 04/06: CAMEL-19429: removed unnecessary null check

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3f144ffb52328c2ab439fc00a08913f0f203cf3f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Jun 19 13:34:51 2023 +0200

    CAMEL-19429: removed unnecessary null check
---
 .../camel/component/activemq/OriginalDestinationPropagateStrategy.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
index 0fce72d422b..bbdc9892990 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/OriginalDestinationPropagateStrategy.java
@@ -40,7 +40,7 @@ public class OriginalDestinationPropagateStrategy implements MessageCreatedStrat
         if (exchange.getIn() instanceof JmsMessage) {
             JmsMessage msg = exchange.getIn(JmsMessage.class);
             Message jms = msg.getJmsMessage();
-            if (jms != null && jms instanceof ActiveMQMessage && message instanceof ActiveMQMessage) {
+            if (jms instanceof ActiveMQMessage && message instanceof ActiveMQMessage) {
                 ActiveMQMessage amq = (ActiveMQMessage) jms;
                 if (amq.getOriginalDestination() == null) {
                     ActiveMQDestination from = amq.getDestination();


[camel] 06/06: CAMEL-19429: added auto-generated files

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 48197c03a08f301d480220c96b211969aa691341
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Jun 19 13:45:23 2023 +0200

    CAMEL-19429: added auto-generated files
---
 .../activemq/ActiveMQComponentConfigurer.java      |  67 ++++++
 .../activemq/ActiveMQEndpointConfigurer.java       |  58 +++++
 .../activemq/ActiveMQEndpointUriFactory.java       | 172 ++++++++++++++
 .../converter/ActiveMQConverterLoader.java         |  60 +++++
 .../converter/ActiveMQMessageConverterLoader.java  |  62 +++++
 .../services/org/apache/camel/TypeConverterLoader  |   3 +
 .../services/org/apache/camel/component.properties |   7 +
 .../services/org/apache/camel/component/activemq   |   2 +
 .../org/apache/camel/configurer/activemq-component |   2 +
 .../org/apache/camel/configurer/activemq-endpoint  |   2 +
 .../org/apache/camel/send-dynamic/activemq         |   2 +
 .../org/apache/camel/urifactory/activemq-endpoint  |   2 +
 .../apache/camel/component/activemq/activemq.json  | 249 +++++++++++++++++++++
 13 files changed, 688 insertions(+)

diff --git a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQComponentConfigurer.java b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQComponentConfigurer.java
new file mode 100644
index 00000000000..4cfdaaf658e
--- /dev/null
+++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQComponentConfigurer.java
@@ -0,0 +1,67 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.activemq;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.jms.JmsComponentConfigurer;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class ActiveMQComponentConfigurer extends JmsComponentConfigurer implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        ActiveMQComponent target = (ActiveMQComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "brokerurl":
+        case "brokerURL": target.setBrokerURL(property(camelContext, java.lang.String.class, value)); return true;
+        case "trustallpackages":
+        case "trustAllPackages": target.setTrustAllPackages(property(camelContext, boolean.class, value)); return true;
+        case "usepooledconnection":
+        case "usePooledConnection": target.setUsePooledConnection(property(camelContext, boolean.class, value)); return true;
+        case "usesingleconnection":
+        case "useSingleConnection": target.setUseSingleConnection(property(camelContext, boolean.class, value)); return true;
+        default: return super.configure(camelContext, obj, name, value, ignoreCase);
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "brokerurl":
+        case "brokerURL": return java.lang.String.class;
+        case "trustallpackages":
+        case "trustAllPackages": return boolean.class;
+        case "usepooledconnection":
+        case "usePooledConnection": return boolean.class;
+        case "usesingleconnection":
+        case "useSingleConnection": return boolean.class;
+        default: return super.getOptionType(name, ignoreCase);
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        ActiveMQComponent target = (ActiveMQComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "brokerurl":
+        case "brokerURL": return target.getBrokerURL();
+        case "trustallpackages":
+        case "trustAllPackages": return target.isTrustAllPackages();
+        case "usepooledconnection":
+        case "usePooledConnection": return target.isUsePooledConnection();
+        case "usesingleconnection":
+        case "useSingleConnection": return target.isUseSingleConnection();
+        default: return super.getOptionValue(obj, name, ignoreCase);
+        }
+    }
+}
+
diff --git a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointConfigurer.java b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointConfigurer.java
new file mode 100644
index 00000000000..7f560ddaa91
--- /dev/null
+++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointConfigurer.java
@@ -0,0 +1,58 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.activemq;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.jms.JmsEndpointConfigurer;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class ActiveMQEndpointConfigurer extends JmsEndpointConfigurer implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        ActiveMQEndpoint target = (ActiveMQEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "destinationoptions":
+        case "destinationOptions": target.setDestinationOptions(property(camelContext, java.util.Map.class, value)); return true;
+        default: return super.configure(camelContext, obj, name, value, ignoreCase);
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "destinationoptions":
+        case "destinationOptions": return java.util.Map.class;
+        default: return super.getOptionType(name, ignoreCase);
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        ActiveMQEndpoint target = (ActiveMQEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "destinationoptions":
+        case "destinationOptions": return target.getDestinationOptions();
+        default: return super.getOptionValue(obj, name, ignoreCase);
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "destinationoptions":
+        case "destinationOptions": return java.lang.String.class;
+        default: return super.getCollectionValueType(target, name, ignoreCase);
+        }
+    }
+}
+
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
new file mode 100644
index 00000000000..6ff86439982
--- /dev/null
+++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/ActiveMQEndpointUriFactory.java
@@ -0,0 +1,172 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.activemq;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class ActiveMQEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":destinationType:destinationName";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(99);
+        props.add("acceptMessagesWhileStopping");
+        props.add("acknowledgementModeName");
+        props.add("allowAdditionalHeaders");
+        props.add("allowNullBody");
+        props.add("allowReplyManagerQuickStop");
+        props.add("allowSerializedHeaders");
+        props.add("alwaysCopyMessage");
+        props.add("artemisConsumerPriority");
+        props.add("artemisStreamingEnabled");
+        props.add("asyncConsumer");
+        props.add("asyncStartListener");
+        props.add("asyncStopListener");
+        props.add("autoStartup");
+        props.add("cacheLevel");
+        props.add("cacheLevelName");
+        props.add("clientId");
+        props.add("concurrentConsumers");
+        props.add("connectionFactory");
+        props.add("consumerType");
+        props.add("correlationProperty");
+        props.add("defaultTaskExecutorType");
+        props.add("deliveryDelay");
+        props.add("deliveryMode");
+        props.add("deliveryPersistent");
+        props.add("destinationName");
+        props.add("destinationOptions");
+        props.add("destinationResolver");
+        props.add("destinationType");
+        props.add("disableReplyTo");
+        props.add("disableTimeToLive");
+        props.add("durableSubscriptionName");
+        props.add("eagerLoadingOfProperties");
+        props.add("eagerPoisonBody");
+        props.add("errorHandler");
+        props.add("errorHandlerLogStackTrace");
+        props.add("errorHandlerLoggingLevel");
+        props.add("exceptionHandler");
+        props.add("exceptionListener");
+        props.add("exchangePattern");
+        props.add("explicitQosEnabled");
+        props.add("exposeListenerSession");
+        props.add("forceSendOriginalMessage");
+        props.add("formatDateHeadersToIso8601");
+        props.add("headerFilterStrategy");
+        props.add("idleConsumerLimit");
+        props.add("idleTaskExecutionLimit");
+        props.add("includeAllJMSXProperties");
+        props.add("includeSentJMSMessageID");
+        props.add("jmsKeyFormatStrategy");
+        props.add("jmsMessageType");
+        props.add("lazyCreateTransactionManager");
+        props.add("lazyStartProducer");
+        props.add("mapJmsMessage");
+        props.add("maxConcurrentConsumers");
+        props.add("maxMessagesPerTask");
+        props.add("messageConverter");
+        props.add("messageCreatedStrategy");
+        props.add("messageIdEnabled");
+        props.add("messageListenerContainerFactory");
+        props.add("messageTimestampEnabled");
+        props.add("password");
+        props.add("preserveMessageQos");
+        props.add("priority");
+        props.add("pubSubNoLocal");
+        props.add("receiveTimeout");
+        props.add("recoveryInterval");
+        props.add("replyTo");
+        props.add("replyToCacheLevelName");
+        props.add("replyToConcurrentConsumers");
+        props.add("replyToConsumerType");
+        props.add("replyToDeliveryPersistent");
+        props.add("replyToDestinationSelectorName");
+        props.add("replyToMaxConcurrentConsumers");
+        props.add("replyToOnTimeoutMaxConcurrentConsumers");
+        props.add("replyToOverride");
+        props.add("replyToSameDestinationAllowed");
+        props.add("replyToType");
+        props.add("requestTimeout");
+        props.add("requestTimeoutCheckerInterval");
+        props.add("selector");
+        props.add("streamMessageTypeEnabled");
+        props.add("subscriptionDurable");
+        props.add("subscriptionName");
+        props.add("subscriptionShared");
+        props.add("synchronous");
+        props.add("taskExecutor");
+        props.add("testConnectionOnStartup");
+        props.add("timeToLive");
+        props.add("transacted");
+        props.add("transactedInOut");
+        props.add("transactionManager");
+        props.add("transactionName");
+        props.add("transactionTimeout");
+        props.add("transferException");
+        props.add("transferExchange");
+        props.add("useMessageIDAsCorrelationID");
+        props.add("username");
+        props.add("waitForProvisionCorrelationToBeUpdatedCounter");
+        props.add("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(2);
+        secretProps.add("password");
+        secretProps.add("username");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+        Set<String> prefixes = new HashSet<>(1);
+        prefixes.add("destination.");
+        MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "activemq".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "destinationType", "queue", false, copy);
+        uri = buildPathParameter(syntax, uri, "destinationName", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQConverterLoader.java b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQConverterLoader.java
new file mode 100644
index 00000000000..c2f1e1d531e
--- /dev/null
+++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQConverterLoader.java
@@ -0,0 +1,60 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.activemq.converter;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.DeferredContextBinding;
+import org.apache.camel.Exchange;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.TypeConverterLoaderException;
+import org.apache.camel.spi.TypeConverterLoader;
+import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.support.SimpleTypeConverter;
+import org.apache.camel.support.TypeConverterSupport;
+import org.apache.camel.util.DoubleMap;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+@DeferredContextBinding
+public final class ActiveMQConverterLoader implements TypeConverterLoader, CamelContextAware {
+
+    private CamelContext camelContext;
+
+    public ActiveMQConverterLoader() {
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void load(TypeConverterRegistry registry) throws TypeConverterLoaderException {
+        registerConverters(registry);
+    }
+
+    private void registerConverters(TypeConverterRegistry registry) {
+        addTypeConverter(registry, org.apache.activemq.command.ActiveMQDestination.class, java.lang.String.class, false,
+            (type, exchange, value) -> getActiveMQConverter().toDestination((java.lang.String) value));
+    }
+
+    private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { 
+        registry.addTypeConverter(toType, fromType, new SimpleTypeConverter(allowNull, method));
+    }
+
+    private volatile org.apache.camel.component.activemq.converter.ActiveMQConverter activeMQConverter;
+    private org.apache.camel.component.activemq.converter.ActiveMQConverter getActiveMQConverter() {
+        if (activeMQConverter == null) {
+            activeMQConverter = new org.apache.camel.component.activemq.converter.ActiveMQConverter();
+            CamelContextAware.trySetCamelContext(activeMQConverter, camelContext);
+        }
+        return activeMQConverter;
+    }
+}
diff --git a/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverterLoader.java b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverterLoader.java
new file mode 100644
index 00000000000..dc8352e038e
--- /dev/null
+++ b/components/camel-activemq/src/generated/java/org/apache/camel/component/activemq/converter/ActiveMQMessageConverterLoader.java
@@ -0,0 +1,62 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.activemq.converter;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.DeferredContextBinding;
+import org.apache.camel.Exchange;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.TypeConverterLoaderException;
+import org.apache.camel.spi.TypeConverterLoader;
+import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.support.SimpleTypeConverter;
+import org.apache.camel.support.TypeConverterSupport;
+import org.apache.camel.util.DoubleMap;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+@DeferredContextBinding
+public final class ActiveMQMessageConverterLoader implements TypeConverterLoader, CamelContextAware {
+
+    private CamelContext camelContext;
+
+    public ActiveMQMessageConverterLoader() {
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void load(TypeConverterRegistry registry) throws TypeConverterLoaderException {
+        registerConverters(registry);
+    }
+
+    private void registerConverters(TypeConverterRegistry registry) {
+        addTypeConverter(registry, org.apache.activemq.command.ActiveMQMessage.class, org.apache.camel.Exchange.class, false,
+            (type, exchange, value) -> getActiveMQMessageConverter().toMessage((org.apache.camel.Exchange) value));
+        addTypeConverter(registry, org.apache.camel.Processor.class, jakarta.jms.MessageListener.class, false,
+            (type, exchange, value) -> getActiveMQMessageConverter().toProcessor((jakarta.jms.MessageListener) value));
+    }
+
+    private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { 
+        registry.addTypeConverter(toType, fromType, new SimpleTypeConverter(allowNull, method));
+    }
+
+    private volatile org.apache.camel.component.activemq.converter.ActiveMQMessageConverter activeMQMessageConverter;
+    private org.apache.camel.component.activemq.converter.ActiveMQMessageConverter getActiveMQMessageConverter() {
+        if (activeMQMessageConverter == null) {
+            activeMQMessageConverter = new org.apache.camel.component.activemq.converter.ActiveMQMessageConverter();
+            CamelContextAware.trySetCamelContext(activeMQMessageConverter, camelContext);
+        }
+        return activeMQMessageConverter;
+    }
+}
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
new file mode 100644
index 00000000000..948effbd4a1
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
@@ -0,0 +1,3 @@
+# Generated by camel build tools - do NOT edit this file!
+org.apache.camel.component.activemq.converter.ActiveMQConverterLoader
+org.apache.camel.component.activemq.converter.ActiveMQMessageConverterLoader
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 00000000000..516e1b53342
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=activemq
+groupId=org.apache.camel
+artifactId=camel-activemq
+version=4.0.0-SNAPSHOT
+projectName=Camel :: ActiveMQ
+projectDescription=ActiveMQ component for Camel
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component/activemq b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component/activemq
new file mode 100644
index 00000000000..f9059d5ed4f
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/component/activemq
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.activemq.ActiveMQComponent
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-component b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-component
new file mode 100644
index 00000000000..685a18df6cf
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.activemq.ActiveMQComponentConfigurer
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-endpoint b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-endpoint
new file mode 100644
index 00000000000..bd5cfea3789
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/configurer/activemq-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.activemq.ActiveMQEndpointConfigurer
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/send-dynamic/activemq b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/send-dynamic/activemq
new file mode 100644
index 00000000000..904f34c8e91
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/send-dynamic/activemq
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.activemq.ActiveMQSendDynamicAware
diff --git a/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/urifactory/activemq-endpoint b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/urifactory/activemq-endpoint
new file mode 100644
index 00000000000..1b3694f5468
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/META-INF/services/org/apache/camel/urifactory/activemq-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.activemq.ActiveMQEndpointUriFactory
diff --git a/components/camel-activemq/src/generated/resources/org/apache/camel/component/activemq/activemq.json b/components/camel-activemq/src/generated/resources/org/apache/camel/component/activemq/activemq.json
new file mode 100644
index 00000000000..4e2e512fe8c
--- /dev/null
+++ b/components/camel-activemq/src/generated/resources/org/apache/camel/component/activemq/activemq.json
@@ -0,0 +1,249 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "activemq",
+    "title": "ActiveMQ",
+    "description": "Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component.",
+    "deprecated": false,
+    "firstVersion": "1.0.0",
+    "label": "messaging",
+    "javaType": "org.apache.camel.component.activemq.ActiveMQComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-activemq",
+    "version": "4.0.0-SNAPSHOT",
+    "scheme": "activemq",
+    "extendsScheme": "jms",
+    "syntax": "activemq:destinationType:destinationName",
+    "async": true,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "brokerURL": { "index": 0, "kind": "property", "displayName": "Broker URL", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the broker URL to use to connect to ActiveMQ. If none configured then localhost:61616 is used by default (however can be overridden by configuration from environment variables)" },
+    "clientId": { "index": 1, "kind": "property", "displayName": "Client Id", "group": "common", "label": "", "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 the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connecti [...]
+    "connectionFactory": { "index": 2, "kind": "property", "displayName": "Connection Factory", "group": "common", "label": "", "required": false, "type": "object", "javaType": "jakarta.jms.ConnectionFactory", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The connection factory to be use. A connection factory must be configured either on the componen [...]
+    "disableReplyTo": { "index": 3, "kind": "property", "displayName": "Disable Reply To", "group": "common", "label": "", "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 Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a r [...]
+    "durableSubscriptionName": { "index": 4, "kind": "property", "displayName": "Durable Subscription Name", "group": "common", "label": "", "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 durable subscriber name for specifying durable topic subscriptions. The clientId option must [...]
+    "jmsMessageType": { "index": 5, "kind": "property", "displayName": "Jms Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.JmsMessageType", "enum": [ "Bytes", "Map", "Object", "Stream", "Text" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows you to force the use o [...]
+    "replyTo": { "index": 6, "kind": "property", "displayName": "Reply To", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Provides an explicit ReplyTo destination (overrides any incoming value of Message.getJMSReplyTo() in consumer)." },
+    "testConnectionOnStartup": { "index": 7, "kind": "property", "displayName": "Test Connection On Startup", "group": "common", "label": "", "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 test the connection on startup. This ensures that when Came [...]
+    "usePooledConnection": { "index": 8, "kind": "property", "displayName": "Use Pooled Connection", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": true, "description": "Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be use [...]
+    "useSingleConnection": { "index": 9, "kind": "property", "displayName": "Use Single Connection", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": false, "description": "Enables or disables whether a Spring SingleConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling wil [...]
+    "acknowledgementModeName": { "index": 10, "kind": "property", "displayName": "Acknowledgement Mode Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "SESSION_TRANSACTED", "CLIENT_ACKNOWLEDGE", "AUTO_ACKNOWLEDGE", "DUPS_OK_ACKNOWLEDGE" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "AUTO_ACKNOWLEDGE", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "conf [...]
+    "artemisConsumerPriority": { "index": 11, "kind": "property", "displayName": "Artemis Consumer Priority", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Consumer priorities allow you to ensure that high priority consumers receive messages while they  [...]
+    "asyncConsumer": { "index": 12, "kind": "property", "displayName": "Async Consumer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsu [...]
+    "autoStartup": { "index": 13, "kind": "property", "displayName": "Auto Startup", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether the consumer container should auto-startup." },
+    "cacheLevel": { "index": 14, "kind": "property", "displayName": "Cache Level", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details." },
+    "cacheLevelName": { "index": 15, "kind": "property", "displayName": "Cache Level Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "CACHE_AUTO", "CACHE_CONNECTION", "CACHE_CONSUMER", "CACHE_NONE", "CACHE_SESSION" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "CACHE_AUTO", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configurat [...]
+    "concurrentConsumers": { "index": 16, "kind": "property", "displayName": "Concurrent Consumers", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the default number of concurrent consumers when consuming from JMS (not for r [...]
+    "maxConcurrentConsumers": { "index": 17, "kind": "property", "displayName": "Max Concurrent Consumers", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent consumers when consuming from JMS (not for request\/repl [...]
+    "replyToDeliveryPersistent": { "index": 18, "kind": "property", "displayName": "Reply To Delivery Persistent", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use persistent delivery by default for replies." },
+    "selector": { "index": 19, "kind": "property", "displayName": "Selector", "group": "consumer", "label": "consumer", "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 the JMS selector to use" },
+    "subscriptionDurable": { "index": 20, "kind": "property", "displayName": "Subscription Durable", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set whether to make the subscription durable. The durable subscription name to  [...]
+    "subscriptionName": { "index": 21, "kind": "property", "displayName": "Subscription Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a s [...]
+    "subscriptionShared": { "index": 22, "kind": "property", "displayName": "Subscription Shared", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set whether to make the subscription shared. The shared subscription name to be u [...]
+    "acceptMessagesWhileStopping": { "index": 23, "kind": "property", "displayName": "Accept Messages While Stopping", "group": "consumer (advanced)", "label": "consumer,advanced", "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 the consumer accept mes [...]
+    "allowReplyManagerQuickStop": { "index": 24, "kind": "property", "displayName": "Allow Reply Manager Quick Stop", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether the DefaultMessageListenerContaine [...]
+    "consumerType": { "index": 25, "kind": "property", "displayName": "Consumer Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ConsumerType", "enum": [ "Simple", "Default", "Custom" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Default", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "descri [...]
+    "defaultTaskExecutorType": { "index": 26, "kind": "property", "displayName": "Default Task Executor Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.DefaultTaskExecutorType", "enum": [ "ThreadPool", "SimpleAsync" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", " [...]
+    "eagerLoadingOfProperties": { "index": 27, "kind": "property", "displayName": "Eager Loading Of Properties", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Enables eager loading of JMS properties and pay [...]
+    "eagerPoisonBody": { "index": 28, "kind": "property", "displayName": "Eager Poison Body", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Poison JMS message due to ${exception.message}", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If eagerLoading [...]
+    "exposeListenerSession": { "index": 29, "kind": "property", "displayName": "Expose Listener Session", "group": "consumer (advanced)", "label": "consumer,advanced", "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 the listener session should be expos [...]
+    "replyToConsumerType": { "index": 30, "kind": "property", "displayName": "Reply To Consumer Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ConsumerType", "enum": [ "Simple", "Default", "Custom" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Default", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configu [...]
+    "replyToSameDestinationAllowed": { "index": 31, "kind": "property", "displayName": "Reply To Same Destination Allowed", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether a JMS consumer is allowed to [...]
+    "taskExecutor": { "index": 32, "kind": "property", "displayName": "Task Executor", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.core.task.TaskExecutor", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows you to specify a custom task executor for consuming mes [...]
+    "deliveryDelay": { "index": 33, "kind": "property", "displayName": "Delivery Delay", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker." },
+    "deliveryMode": { "index": 34, "kind": "property", "displayName": "Delivery Mode", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "enum": [ "1", "2" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the delivery mode to be used. Possible values are those defined by jakarta [...]
+    "deliveryPersistent": { "index": 35, "kind": "property", "displayName": "Delivery Persistent", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether persistent delivery is used by default." },
+    "explicitQosEnabled": { "index": 36, "kind": "property", "displayName": "Explicit Qos Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set if the deliveryMode, priority or timeToLive qualities of service [...]
+    "formatDateHeadersToIso8601": { "index": 37, "kind": "property", "displayName": "Format Date Headers To Iso8601", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether JMS date properties should be formatted according [...]
+    "lazyStartProducer": { "index": 38, "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 fai [...]
+    "preserveMessageQos": { "index": 39, "kind": "property", "displayName": "Preserve Message Qos", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set to true, if you want to send message using the QoS settings specified on the [...]
+    "priority": { "index": 40, "kind": "property", "displayName": "Priority", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "enum": [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": 4, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Values greater than 1 specify the message priority wh [...]
+    "replyToConcurrentConsumers": { "index": 41, "kind": "property", "displayName": "Reply To Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the default number of concurrent consumers when doing request [...]
+    "replyToMaxConcurrentConsumers": { "index": 42, "kind": "property", "displayName": "Reply To Max Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent consumers when using request\/reply over [...]
+    "replyToOnTimeoutMaxConcurrentConsumers": { "index": 43, "kind": "property", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent c [...]
+    "replyToOverride": { "index": 44, "kind": "property", "displayName": "Reply To Override", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo.  [...]
+    "replyToType": { "index": 45, "kind": "property", "displayName": "Reply To Type", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ReplyToType", "enum": [ "Temporary", "Shared", "Exclusive" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows for explicitly specifying wh [...]
+    "requestTimeout": { "index": 46, "kind": "property", "displayName": "Request Timeout", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "20000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout for waiting for a reply when using the InOut Exchange Pattern (in millisecond [...]
+    "timeToLive": { "index": 47, "kind": "property", "displayName": "Time To Live", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "When sending messages, specifies the time-to-live of the message (in milliseconds)." },
+    "allowAdditionalHeaders": { "index": 48, "kind": "property", "displayName": "Allow Additional Headers", "group": "producer (advanced)", "label": "producer,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": "This option is used to allow additional headers which may have valu [...]
+    "allowNullBody": { "index": 49, "kind": "property", "displayName": "Allow Null Body", "group": "producer (advanced)", "label": "producer,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": "Whether to allow sending messages with no body. If this option is false [...]
+    "alwaysCopyMessage": { "index": 50, "kind": "property", "displayName": "Always Copy Message", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will always make a JMS message copy of the mess [...]
+    "correlationProperty": { "index": 51, "kind": "property", "displayName": "Correlation Property", "group": "producer (advanced)", "label": "producer,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": "When using InOut exchange pattern use this JMS property instead of JMSCorr [...]
+    "disableTimeToLive": { "index": 52, "kind": "property", "displayName": "Disable Time To Live", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Use this option to force disabling time to live. For example  [...]
+    "forceSendOriginalMessage": { "index": 53, "kind": "property", "displayName": "Force Send Original Message", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "When using mapJmsMessage=false Camel will creat [...]
+    "includeSentJMSMessageID": { "index": 54, "kind": "property", "displayName": "Include Sent JMSMessage ID", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Only applicable when sending to JMS destination u [...]
+    "replyToCacheLevelName": { "index": 55, "kind": "property", "displayName": "Reply To Cache Level Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "CACHE_AUTO", "CACHE_CONNECTION", "CACHE_CONSUMER", "CACHE_NONE", "CACHE_SESSION" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "conf [...]
+    "replyToDestinationSelectorName": { "index": 56, "kind": "property", "displayName": "Reply To Destination Selector Name", "group": "producer (advanced)", "label": "producer,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": "Sets the JMS Selector using the fixed name to be  [...]
+    "streamMessageTypeEnabled": { "index": 57, "kind": "property", "displayName": "Stream Message Type Enabled", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether StreamMessage type is enabled or n [...]
+    "allowAutoWiredConnectionFactory": { "index": 58, "kind": "property", "displayName": "Allow Auto Wired Connection Factory", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then i [...]
+    "allowAutoWiredDestinationResolver": { "index": 59, "kind": "property", "displayName": "Allow Auto Wired Destination Resolver", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is fo [...]
+    "allowSerializedHeaders": { "index": 60, "kind": "property", "displayName": "Allow Serialized Headers", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Controls whether or not to include serialized headers. Applies only when [...]
+    "artemisStreamingEnabled": { "index": 61, "kind": "property", "displayName": "Artemis Streaming Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether optimizing for Apache Artemis streaming mode. This can reduce  [...]
+    "asyncStartListener": { "index": 62, "kind": "property", "displayName": "Async Start Listener", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to startup the JmsConsumer message listener asynchronously, when startin [...]
+    "asyncStopListener": { "index": 63, "kind": "property", "displayName": "Async Stop Listener", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to stop the JmsConsumer message listener asynchronously, when stopping a r [...]
+    "autowiredEnabled": { "index": 64, "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  [...]
+    "configuration": { "index": 65, "kind": "property", "displayName": "Configuration", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.JmsConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To use a shared JMS configuration" },
+    "destinationResolver": { "index": 66, "kind": "property", "displayName": "Destination Resolver", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.jms.support.destination.DestinationResolver", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "A pluggable org.springframework.jms.support.des [...]
+    "errorHandler": { "index": 67, "kind": "property", "displayName": "Error Handler", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.util.ErrorHandler", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught [...]
+    "exceptionListener": { "index": 68, "kind": "property", "displayName": "Exception Listener", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "jakarta.jms.ExceptionListener", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the JMS Exception Listener that is to be notified of any underlying JMS exc [...]
+    "idleConsumerLimit": { "index": 69, "kind": "property", "displayName": "Idle Consumer Limit", "group": "advanced", "label": "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": "Specify the limit for the number of consumers that are allowed to be idle at any given time." },
+    "idleTaskExecutionLimit": { "index": 70, "kind": "property", "displayName": "Idle Task Execution Limit", "group": "advanced", "label": "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": "Specifies the limit for idle executions of a receive task, not having received  [...]
+    "includeAllJMSXProperties": { "index": 71, "kind": "property", "displayName": "Include All JMSXProperties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to include all JMSXxxx properties when mapping from JMS to C [...]
+    "jmsKeyFormatStrategy": { "index": 72, "kind": "property", "displayName": "Jms Key Format Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.JmsKeyFormatStrategy", "enum": [ "default", "passthrough" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Pluggable strateg [...]
+    "mapJmsMessage": { "index": 73, "kind": "property", "displayName": "Map Jms Message", "group": "advanced", "label": "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": "Specifies whether Camel should auto map the received JMS message to a suited payload type,  [...]
+    "maxMessagesPerTask": { "index": 74, "kind": "property", "displayName": "Max Messages Per Task", "group": "advanced", "label": "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 number of messages per task. -1 is unlimited. If you use a range for concurrent co [...]
+    "messageConverter": { "index": 75, "kind": "property", "displayName": "Message Converter", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.jms.support.converter.MessageConverter", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "To use a custom Spring org.springframework.jms.support.con [...]
+    "messageCreatedStrategy": { "index": 76, "kind": "property", "displayName": "Message Created Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.MessageCreatedStrategy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "To use the given MessageCreatedStrategy which are  [...]
+    "messageIdEnabled": { "index": 77, "kind": "property", "displayName": "Message Id Enabled", "group": "advanced", "label": "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": "When sending, specifies whether message IDs should be added. This is just an hint to  [...]
+    "messageListenerContainerFactory": { "index": 78, "kind": "property", "displayName": "Message Listener Container Factory", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.MessageListenerContainerFactory", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Registry ID of the Mes [...]
+    "messageTimestampEnabled": { "index": 79, "kind": "property", "displayName": "Message Timestamp Enabled", "group": "advanced", "label": "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": "Specifies whether timestamps should be enabled by default on sending me [...]
+    "pubSubNoLocal": { "index": 80, "kind": "property", "displayName": "Pub Sub No Local", "group": "advanced", "label": "advanced", "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 inhibit the delivery of messages published by its own connection." },
+    "queueBrowseStrategy": { "index": 81, "kind": "property", "displayName": "Queue Browse Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.QueueBrowseStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom QueueBrowseStrategy when browsing queues" },
+    "receiveTimeout": { "index": 82, "kind": "property", "displayName": "Receive Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout for receiving messages (in milliseconds)." },
+    "recoveryInterval": { "index": 83, "kind": "property", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being refr [...]
+    "requestTimeoutCheckerInterval": { "index": 84, "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", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Configures how often Camel should check for timed out Exch [...]
+    "synchronous": { "index": 85, "kind": "property", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" },
+    "transferException": { "index": 86, "kind": "property", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange failed [...]
+    "transferExchange": { "index": 87, "kind": "property", "displayName": "Transfer Exchange", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "You can transfer the exchange over the wire instead of just the body and headers. The [...]
+    "trustAllPackages": { "index": 88, "kind": "property", "displayName": "Trust All Packages", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": false, "description": "Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended practice to send Java serialized objects over network. Setting [...]
+    "useMessageIDAsCorrelationID": { "index": 89, "kind": "property", "displayName": "Use Message IDAs Correlation ID", "group": "advanced", "label": "advanced", "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 JMSMessageID should always be used as JMSC [...]
+    "waitForProvisionCorrelationToBeUpdatedCounter": { "index": 90, "kind": "property", "displayName": "Wait For Provision Correlation To Be Updated Counter", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 50, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Number of times to wait for  [...]
+    "waitForProvisionCorrelationToBeUpdatedThreadSleepingTime": { "index": 91, "kind": "property", "displayName": "Wait For Provision Correlation 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":  [...]
+    "headerFilterStrategy": { "index": 92, "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": 93, "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": "configur [...]
+    "errorHandlerLogStackTrace": { "index": 94, "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 stacktraces should be logged or  [...]
+    "password": { "index": 95, "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": 96, "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": 97, "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": 98, "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 m [...]
+    "lazyCreateTransactionManager": { "index": 99, "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 JmsTr [...]
+    "transactionManager": { "index": 100, "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 mana [...]
+    "transactionName": { "index": 101, "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": 102, "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 t [...]
+  },
+  "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" },
+    "CamelJmsDestinationName": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the queue or topic to use as destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_DESTINATION_NAME" },
+    "JMSXGroupID": { "index": 2, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS group ID.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_X_GROUP_ID" },
+    "JMSMessageID": { "index": 3, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS unique message ID.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_MESSAGE_ID" },
+    "JMSCorrelationID": { "index": 4, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS correlation ID.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_CORRELATION_ID" },
+    "JMSCorrelationIDAsBytes": { "index": 5, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS correlation ID as bytes.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_CORRELATION_ID_AS_BYTES" },
+    "JMSDeliveryMode": { "index": 6, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS delivery mode.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_DELIVERY_MODE" },
+    "JMSDestination": { "index": 7, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_DESTINATION" },
+    "JMSExpiration": { "index": 8, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS expiration.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_EXPIRATION" },
+    "JMSPriority": { "index": 9, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS priority (with 0 as the lowest priority and 9 as the highest).", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_PRIORITY" },
+    "JMSRedelivered": { "index": 10, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Is the JMS message redelivered.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_REDELIVERED" },
+    "JMSTimestamp": { "index": 11, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS timestamp.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_TIMESTAMP" },
+    "JMSReplyTo": { "index": 12, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "jakarta.jms.Destination", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS reply-to destination.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_REPLY_TO" },
+    "JMSType": { "index": 13, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The JMS type.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_TYPE" },
+    "JMSXUserID": { "index": 14, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The XUser id.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_HEADER_XUSER_ID" },
+    "CamelJmsMessageType": { "index": 15, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "org.apache.camel.component.jms.JmsMessageType", "enum": [ "Bytes", "Map", "Object", "Stream", "Text", "Blob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The message type.", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_MESSAGE_TYPE" },
+    "CamelJmsRequestTimeout": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "20_000", "description": "The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds).", "constantName": "org.apache.camel.component.jms.JmsConstants#JMS_REQUEST_TIMEOUT" }
+  },
+  "properties": {
+    "destinationType": { "index": 0, "kind": "path", "displayName": "Destination Type", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "queue", "topic", "temp-queue", "temp-topic" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "queue", "description": "The kind of destination to use" },
+    "destinationName": { "index": 1, "kind": "path", "displayName": "Destination Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of the queue or topic to use as destination" },
+    "clientId": { "index": 2, "kind": "parameter", "displayName": "Client Id", "group": "common", "label": "", "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 the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connect [...]
+    "connectionFactory": { "index": 3, "kind": "parameter", "displayName": "Connection Factory", "group": "common", "label": "", "required": false, "type": "object", "javaType": "jakarta.jms.ConnectionFactory", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The connection factory to be use. A connection factory must be configured either on the compone [...]
+    "disableReplyTo": { "index": 4, "kind": "parameter", "displayName": "Disable Reply To", "group": "common", "label": "", "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 Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a  [...]
+    "durableSubscriptionName": { "index": 5, "kind": "parameter", "displayName": "Durable Subscription Name", "group": "common", "label": "", "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 durable subscriber name for specifying durable topic subscriptions. The clientId option mus [...]
+    "jmsMessageType": { "index": 6, "kind": "parameter", "displayName": "Jms Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.JmsMessageType", "enum": [ "Bytes", "Map", "Object", "Stream", "Text" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows you to force the use  [...]
+    "replyTo": { "index": 7, "kind": "parameter", "displayName": "Reply To", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Provides an explicit ReplyTo destination (overrides any incoming value of Message.getJMSReplyTo() in consumer)." },
+    "testConnectionOnStartup": { "index": 8, "kind": "parameter", "displayName": "Test Connection On Startup", "group": "common", "label": "", "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 test the connection on startup. This ensures that when Cam [...]
+    "acknowledgementModeName": { "index": 9, "kind": "parameter", "displayName": "Acknowledgement Mode Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "SESSION_TRANSACTED", "CLIENT_ACKNOWLEDGE", "AUTO_ACKNOWLEDGE", "DUPS_OK_ACKNOWLEDGE" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "AUTO_ACKNOWLEDGE", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "conf [...]
+    "artemisConsumerPriority": { "index": 10, "kind": "parameter", "displayName": "Artemis Consumer Priority", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Consumer priorities allow you to ensure that high priority consumers receive messages while they [...]
+    "asyncConsumer": { "index": 11, "kind": "parameter", "displayName": "Async Consumer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsCons [...]
+    "autoStartup": { "index": 12, "kind": "parameter", "displayName": "Auto Startup", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether the consumer container should auto-startup." },
+    "cacheLevel": { "index": 13, "kind": "parameter", "displayName": "Cache Level", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details." },
+    "cacheLevelName": { "index": 14, "kind": "parameter", "displayName": "Cache Level Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "CACHE_AUTO", "CACHE_CONNECTION", "CACHE_CONSUMER", "CACHE_NONE", "CACHE_SESSION" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "CACHE_AUTO", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configura [...]
+    "concurrentConsumers": { "index": 15, "kind": "parameter", "displayName": "Concurrent Consumers", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the default number of concurrent consumers when consuming from JMS (not for  [...]
+    "maxConcurrentConsumers": { "index": 16, "kind": "parameter", "displayName": "Max Concurrent Consumers", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent consumers when consuming from JMS (not for request\/rep [...]
+    "replyToDeliveryPersistent": { "index": 17, "kind": "parameter", "displayName": "Reply To Delivery Persistent", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use persistent delivery by default for replies." },
+    "selector": { "index": 18, "kind": "parameter", "displayName": "Selector", "group": "consumer", "label": "consumer", "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 the JMS selector to use" },
+    "subscriptionDurable": { "index": 19, "kind": "parameter", "displayName": "Subscription Durable", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set whether to make the subscription durable. The durable subscription name to [...]
+    "subscriptionName": { "index": 20, "kind": "parameter", "displayName": "Subscription Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a  [...]
+    "subscriptionShared": { "index": 21, "kind": "parameter", "displayName": "Subscription Shared", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set whether to make the subscription shared. The shared subscription name to be  [...]
+    "acceptMessagesWhileStopping": { "index": 22, "kind": "parameter", "displayName": "Accept Messages While Stopping", "group": "consumer (advanced)", "label": "consumer,advanced", "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 the consumer accept me [...]
+    "allowReplyManagerQuickStop": { "index": 23, "kind": "parameter", "displayName": "Allow Reply Manager Quick Stop", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether the DefaultMessageListenerContain [...]
+    "consumerType": { "index": 24, "kind": "parameter", "displayName": "Consumer Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ConsumerType", "enum": [ "Simple", "Default", "Custom" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Default", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "descr [...]
+    "defaultTaskExecutorType": { "index": 25, "kind": "parameter", "displayName": "Default Task Executor Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.DefaultTaskExecutorType", "enum": [ "ThreadPool", "SimpleAsync" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration",  [...]
+    "destinationOptions": { "index": 26, "kind": "parameter", "displayName": "Destination Options", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.String>", "prefix": "destination.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "Destination Options are a way to provide extended configuration options to a JMS consumer without having to  [...]
+    "eagerLoadingOfProperties": { "index": 27, "kind": "parameter", "displayName": "Eager Loading Of Properties", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Enables eager loading of JMS properties and pa [...]
+    "eagerPoisonBody": { "index": 28, "kind": "parameter", "displayName": "Eager Poison Body", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Poison JMS message due to ${exception.message}", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If eagerLoadin [...]
+    "exceptionHandler": { "index": 29, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 30, "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." },
+    "exposeListenerSession": { "index": 31, "kind": "parameter", "displayName": "Expose Listener Session", "group": "consumer (advanced)", "label": "consumer,advanced", "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 the listener session should be expo [...]
+    "replyToConsumerType": { "index": 32, "kind": "parameter", "displayName": "Reply To Consumer Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ConsumerType", "enum": [ "Simple", "Default", "Custom" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Default", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "config [...]
+    "replyToSameDestinationAllowed": { "index": 33, "kind": "parameter", "displayName": "Reply To Same Destination Allowed", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether a JMS consumer is allowed t [...]
+    "taskExecutor": { "index": 34, "kind": "parameter", "displayName": "Task Executor", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.core.task.TaskExecutor", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows you to specify a custom task executor for consuming me [...]
+    "deliveryDelay": { "index": 35, "kind": "parameter", "displayName": "Delivery Delay", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker." },
+    "deliveryMode": { "index": 36, "kind": "parameter", "displayName": "Delivery Mode", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "enum": [ "1", "2" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the delivery mode to be used. Possible values are those defined by jakart [...]
+    "deliveryPersistent": { "index": 37, "kind": "parameter", "displayName": "Delivery Persistent", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether persistent delivery is used by default." },
+    "explicitQosEnabled": { "index": 38, "kind": "parameter", "displayName": "Explicit Qos Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set if the deliveryMode, priority or timeToLive qualities of servic [...]
+    "formatDateHeadersToIso8601": { "index": 39, "kind": "parameter", "displayName": "Format Date Headers To Iso8601", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether JMS date properties should be formatted accordin [...]
+    "preserveMessageQos": { "index": 40, "kind": "parameter", "displayName": "Preserve Message Qos", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Set to true, if you want to send message using the QoS settings specified on th [...]
+    "priority": { "index": 41, "kind": "parameter", "displayName": "Priority", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "enum": [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": 4, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Values greater than 1 specify the message priority w [...]
+    "replyToConcurrentConsumers": { "index": 42, "kind": "parameter", "displayName": "Reply To Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the default number of concurrent consumers when doing reques [...]
+    "replyToMaxConcurrentConsumers": { "index": 43, "kind": "parameter", "displayName": "Reply To Max Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent consumers when using request\/reply ove [...]
+    "replyToOnTimeoutMaxConcurrentConsumers": { "index": 44, "kind": "parameter", "displayName": "Reply To On Timeout Max Concurrent Consumers", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of concurrent  [...]
+    "replyToOverride": { "index": 45, "kind": "parameter", "displayName": "Reply To Override", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. [...]
+    "replyToType": { "index": 46, "kind": "parameter", "displayName": "Reply To Type", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.ReplyToType", "enum": [ "Temporary", "Shared", "Exclusive" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Allows for explicitly specifying w [...]
+    "requestTimeout": { "index": 47, "kind": "parameter", "displayName": "Request Timeout", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "20000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout for waiting for a reply when using the InOut Exchange Pattern (in millisecon [...]
+    "timeToLive": { "index": 48, "kind": "parameter", "displayName": "Time To Live", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "When sending messages, specifies the time-to-live of the message (in milliseconds)." },
+    "allowAdditionalHeaders": { "index": 49, "kind": "parameter", "displayName": "Allow Additional Headers", "group": "producer (advanced)", "label": "producer,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": "This option is used to allow additional headers which may have val [...]
+    "allowNullBody": { "index": 50, "kind": "parameter", "displayName": "Allow Null Body", "group": "producer (advanced)", "label": "producer,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": "Whether to allow sending messages with no body. If this option is fals [...]
+    "alwaysCopyMessage": { "index": 51, "kind": "parameter", "displayName": "Always Copy Message", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will always make a JMS message copy of the mes [...]
+    "correlationProperty": { "index": 52, "kind": "parameter", "displayName": "Correlation Property", "group": "producer (advanced)", "label": "producer,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": "When using InOut exchange pattern use this JMS property instead of JMSCor [...]
+    "disableTimeToLive": { "index": 53, "kind": "parameter", "displayName": "Disable Time To Live", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Use this option to force disabling time to live. For example [...]
+    "forceSendOriginalMessage": { "index": 54, "kind": "parameter", "displayName": "Force Send Original Message", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "When using mapJmsMessage=false Camel will crea [...]
+    "includeSentJMSMessageID": { "index": 55, "kind": "parameter", "displayName": "Include Sent JMSMessage ID", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Only applicable when sending to JMS destination  [...]
+    "lazyStartProducer": { "index": 56, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
+    "replyToCacheLevelName": { "index": 57, "kind": "parameter", "displayName": "Reply To Cache Level Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "CACHE_AUTO", "CACHE_CONNECTION", "CACHE_CONSUMER", "CACHE_NONE", "CACHE_SESSION" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "con [...]
+    "replyToDestinationSelectorName": { "index": 58, "kind": "parameter", "displayName": "Reply To Destination Selector Name", "group": "producer (advanced)", "label": "producer,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": "Sets the JMS Selector using the fixed name to be [...]
+    "streamMessageTypeEnabled": { "index": 59, "kind": "parameter", "displayName": "Stream Message Type Enabled", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether StreamMessage type is enabled or  [...]
+    "allowSerializedHeaders": { "index": 60, "kind": "parameter", "displayName": "Allow Serialized Headers", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Controls whether or not to include serialized headers. Applies only whe [...]
+    "artemisStreamingEnabled": { "index": 61, "kind": "parameter", "displayName": "Artemis Streaming Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether optimizing for Apache Artemis streaming mode. This can reduce [...]
+    "asyncStartListener": { "index": 62, "kind": "parameter", "displayName": "Async Start Listener", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to startup the JmsConsumer message listener asynchronously, when starti [...]
+    "asyncStopListener": { "index": 63, "kind": "parameter", "displayName": "Async Stop Listener", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to stop the JmsConsumer message listener asynchronously, when stopping a  [...]
+    "destinationResolver": { "index": 64, "kind": "parameter", "displayName": "Destination Resolver", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.jms.support.destination.DestinationResolver", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "A pluggable org.springframework.jms.support.de [...]
+    "errorHandler": { "index": 65, "kind": "parameter", "displayName": "Error Handler", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.util.ErrorHandler", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaugh [...]
+    "exceptionListener": { "index": 66, "kind": "parameter", "displayName": "Exception Listener", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "jakarta.jms.ExceptionListener", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the JMS Exception Listener that is to be notified of any underlying JMS ex [...]
+    "headerFilterStrategy": { "index": 67, "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." },
+    "idleConsumerLimit": { "index": 68, "kind": "parameter", "displayName": "Idle Consumer Limit", "group": "advanced", "label": "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": "Specify the limit for the number of consumers that are allowed to be idle at any given time." },
+    "idleTaskExecutionLimit": { "index": 69, "kind": "parameter", "displayName": "Idle Task Execution Limit", "group": "advanced", "label": "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": "Specifies the limit for idle executions of a receive task, not having received [...]
+    "includeAllJMSXProperties": { "index": 70, "kind": "parameter", "displayName": "Include All JMSXProperties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Whether to include all JMSXxxx properties when mapping from JMS to  [...]
+    "jmsKeyFormatStrategy": { "index": 71, "kind": "parameter", "displayName": "Jms Key Format Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.JmsKeyFormatStrategy", "enum": [ "default", "passthrough" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Pluggable strate [...]
+    "mapJmsMessage": { "index": 72, "kind": "parameter", "displayName": "Map Jms Message", "group": "advanced", "label": "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": "Specifies whether Camel should auto map the received JMS message to a suited payload type, [...]
+    "maxMessagesPerTask": { "index": 73, "kind": "parameter", "displayName": "Max Messages Per Task", "group": "advanced", "label": "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 number of messages per task. -1 is unlimited. If you use a range for concurrent c [...]
+    "messageConverter": { "index": 74, "kind": "parameter", "displayName": "Message Converter", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.springframework.jms.support.converter.MessageConverter", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "To use a custom Spring org.springframework.jms.support.co [...]
+    "messageCreatedStrategy": { "index": 75, "kind": "parameter", "displayName": "Message Created Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.MessageCreatedStrategy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "To use the given MessageCreatedStrategy which are [...]
+    "messageIdEnabled": { "index": 76, "kind": "parameter", "displayName": "Message Id Enabled", "group": "advanced", "label": "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": "When sending, specifies whether message IDs should be added. This is just an hint to [...]
+    "messageListenerContainerFactory": { "index": 77, "kind": "parameter", "displayName": "Message Listener Container Factory", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jms.MessageListenerContainerFactory", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Registry ID of the Me [...]
+    "messageTimestampEnabled": { "index": 78, "kind": "parameter", "displayName": "Message Timestamp Enabled", "group": "advanced", "label": "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": "Specifies whether timestamps should be enabled by default on sending m [...]
+    "pubSubNoLocal": { "index": 79, "kind": "parameter", "displayName": "Pub Sub No Local", "group": "advanced", "label": "advanced", "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 inhibit the delivery of messages published by its own connection." },
+    "receiveTimeout": { "index": 80, "kind": "parameter", "displayName": "Receive Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The timeout for receiving messages (in milliseconds)." },
+    "recoveryInterval": { "index": 81, "kind": "parameter", "displayName": "Recovery Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies the interval between recovery attempts, i.e. when a connection is being ref [...]
+    "requestTimeoutCheckerInterval": { "index": 82, "kind": "parameter", "displayName": "Request Timeout Checker Interval", "group": "advanced", "label": "advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1000", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Configures how often Camel should check for timed out Exc [...]
+    "synchronous": { "index": 83, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" },
+    "transferException": { "index": 84, "kind": "parameter", "displayName": "Transfer Exception", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If enabled and you are using Request Reply messaging (InOut) and an Exchange faile [...]
+    "transferExchange": { "index": 85, "kind": "parameter", "displayName": "Transfer Exchange", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "You can transfer the exchange over the wire instead of just the body and headers. Th [...]
+    "useMessageIDAsCorrelationID": { "index": 86, "kind": "parameter", "displayName": "Use Message IDAs Correlation ID", "group": "advanced", "label": "advanced", "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 JMSMessageID should always be used as JMS [...]
+    "waitForProvisionCorrelationToBeUpdatedCounter": { "index": 87, "kind": "parameter", "displayName": "Wait For Provision Correlation To Be Updated Counter", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 50, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Number of times to wait for [...]
+    "waitForProvisionCorrelationToBeUpdatedThreadSleepingTime": { "index": 88, "kind": "parameter", "displayName": "Wait For Provision Correlation 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": [...]
+    "errorHandlerLoggingLevel": { "index": 89, "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": "configu [...]
+    "errorHandlerLogStackTrace": { "index": 90, "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 stacktraces should be logged or [...]
+    "password": { "index": 91, "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": 92, "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": 93, "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": 94, "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  [...]
+    "lazyCreateTransactionManager": { "index": 95, "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 JmsT [...]
+    "transactionManager": { "index": 96, "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 mana [...]
+    "transactionName": { "index": 97, "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": 98, "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 t [...]
+  }
+}