This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new c0188e246f1c CAMEL-24078: camel-jms/camel-amqp - Fix medium findings
from code review
c0188e246f1c is described below
commit c0188e246f1c9dc55751a4cb95ef3c3288181145
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jul 15 18:06:24 2026 +0200
CAMEL-24078: camel-jms/camel-amqp - Fix medium findings from code review
Fix four medium-severity findings from the camel-jms/camel-amqp code review:
- M3: Reset cached JmsHeaderFilterStrategy when includeAllJMSXProperties
changes via JMX, so the new value takes effect
- M4: Auto-set consumerType=Custom at component level when
messageListenerContainerFactory is set, matching endpoint behavior
- M6: Move initialized flag into prepareAndStartListenerContainer() to
prevent asyncStartListener=true from defeating autoStartup=false
- M9: Guard AMQP auto-created connectionFactory with null check to avoid
clobbering an explicitly configured factory
Closes #24737
Co-Authored-By: Claude Opus 4.6 <[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 145e7ab5693a..0106e96acdef 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
@@ -112,8 +112,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 218d513c38ad..c3821aaadce7 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