This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch fix/CAMEL-24078 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 087d3c0ff4935a101f79d102e3f5c0174131729c Author: Claus Ibsen <[email protected]> AuthorDate: Wed Jul 15 16:55:56 2026 +0200 CAMEL-24078: camel-jms/camel-amqp - Fix medium findings from code review - M3: endpoint-level includeAllJMSXProperties=true was silently ignored because the header filter strategy was set before URI options were applied. Reset cached strategy when includeAllJMSXProperties changes. - M4: component-level messageListenerContainerFactory was silently ignored because consumerType was not set to Custom. Align with endpoint-level setter behavior. - M6: asyncStartListener=true defeated autoStartup=false due to a race on the initialized flag. Move flag assignment into prepareAndStartListenerContainer(). - M9: setting username/password on AMQP component clobbered an explicitly configured connectionFactory. Guard factory creation with a null check. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../main/java/org/apache/camel/component/amqp/AMQPComponent.java | 5 +++-- .../src/main/java/org/apache/camel/component/jms/JmsComponent.java | 1 + .../src/main/java/org/apache/camel/component/jms/JmsConsumer.java | 6 +++--- .../src/main/java/org/apache/camel/component/jms/JmsEndpoint.java | 5 +++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java index fff7f6204dd2..b5c22d04bba7 100644 --- a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java +++ b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java @@ -110,8 +110,9 @@ public class AMQPComponent extends JmsComponent { connectionFactory.setTopicPrefix("topic://"); } getConfiguration().setConnectionFactory(connectionFactory); - } else if (host != null || port != null || getUsername() != null || getPassword() != null || useTopicPrefix != null - || useSsl != null) { + } else if (getConfiguration().getConnectionFactory() == null + && (host != null || port != null || getUsername() != null || getPassword() != null || useTopicPrefix != null + || useSsl != null)) { StringBuilder sb = new StringBuilder(); sb.append(useSsl == Boolean.TRUE ? "amqps://" : "amqp://"); sb.append(host == null ? AMQP_DEFAULT_HOST : host).append(":").append(port == null ? AMQP_DEFAULT_PORT : port); diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java index 397a282cef7c..e2447cc1dee9 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java @@ -998,6 +998,7 @@ public class JmsComponent extends HeaderFilterStrategyComponent { public void setMessageListenerContainerFactory(MessageListenerContainerFactory messageListenerContainerFactory) { configuration.setMessageListenerContainerFactory(messageListenerContainerFactory); + configuration.setConsumerType(ConsumerType.Custom); } public boolean isIncludeSentJMSMessageID() { diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConsumer.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConsumer.java index e906bb71f6e0..7be15c1e46d2 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConsumer.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConsumer.java @@ -171,9 +171,6 @@ public class JmsConsumer extends DefaultConsumer implements Suspendable { } else { prepareAndStartListenerContainer(); } - - // mark as initialized for the first time - initialized = true; } protected void prepareAndStartListenerContainer() { @@ -187,6 +184,9 @@ public class JmsConsumer extends DefaultConsumer implements Suspendable { } startListenerContainer(); } + + // mark as initialized after the auto-startup check + initialized = true; } protected void stopAndDestroyListenerContainer() { diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java index de8eecab077f..8c18b428ee57 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java @@ -1216,6 +1216,11 @@ public class JmsEndpoint extends DefaultEndpoint @ManagedAttribute public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) { configuration.setIncludeAllJMSXProperties(includeAllJMSXProperties); + // Reset the default header filter strategy so it gets re-created + // with the updated includeAllJMSXProperties value + if (this.headerFilterStrategy instanceof JmsHeaderFilterStrategy) { + this.headerFilterStrategy = null; + } } @ManagedAttribute
