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 eb5b6ab9219 CAMEL-11780: camel-amqp improve option handling (#16125)
eb5b6ab9219 is described below
commit eb5b6ab9219f42382562ac76ea4b3d059fb966c8
Author: Jono Morris <[email protected]>
AuthorDate: Thu Oct 31 08:14:49 2024 +1300
CAMEL-11780: camel-amqp improve option handling (#16125)
* CAMEL-11780 initialize if any option provided
* CAMEL-11780 generated changes
---
.../org/apache/camel/catalog/components/amqp.json | 8 +--
.../component/amqp/AMQPComponentConfigurer.java | 16 ++---
.../org/apache/camel/component/amqp/amqp.json | 8 +--
.../camel-amqp/src/main/docs/amqp-component.adoc | 11 +++-
.../apache/camel/component/amqp/AMQPComponent.java | 54 +++++++--------
.../camel/component/amqp/AMQPConfigTest.java | 76 +++++++++++++++++++++-
.../component/dsl/AmqpComponentBuilderFactory.java | 26 +++-----
7 files changed, 130 insertions(+), 69 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json
index 29d7998d6db..301b1fbabd7 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/amqp.json
@@ -28,18 +28,18 @@
"connectionFactory": { "index": 1, "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": 2, "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": 3, "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 [...]
- "host": { "index": 4, "kind": "property", "displayName": "Host", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "localhost", "description": "The host name or IP address of the
computer that hosts the AMQP Broker." },
+ "host": { "index": 4, "kind": "property", "displayName": "Host", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"description": "The host name or IP address of the computer that hosts the AMQP
Broker." },
"includeAmqpAnnotations": { "index": 5, "kind": "property", "displayName":
"Include AMQP Annotations", "group": "common", "label": "", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
false, "description": "Whether to include AMQP annotations when mapping from
AMQP to Camel Message. Setting this to true maps AMQP message annotations that
contain a JMS_AMQP_MA_ prefix to messag [...]
"jmsMessageType": { "index": 6, "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 [...]
"keyStoreLocation": { "index": 7, "kind": "property", "displayName": "Key
Store Location", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The SSL keystore location." },
"keyStoreType": { "index": 8, "kind": "property", "displayName": "Key
Store Type", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "JKS", "description": "The SSL keystore
type." },
- "port": { "index": 9, "kind": "property", "displayName": "Port", "group":
"common", "label": "", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5672,
"description": "The port number on which the AMPQ Broker listens." },
+ "port": { "index": 9, "kind": "property", "displayName": "Port", "group":
"common", "label": "", "required": false, "type": "integer", "javaType":
"java.lang.Integer", "deprecated": false, "autowired": false, "secret": false,
"description": "The port number on which the AMPQ Broker listens." },
"replyTo": { "index": 10, "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": 11, "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 Cam [...]
"trustStoreLocation": { "index": 12, "kind": "property", "displayName":
"Trust Store Location", "group": "common", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "The SSL truststore
location." },
"trustStoreType": { "index": 13, "kind": "property", "displayName": "Trust
Store Type", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "JKS", "description": "The SSL
truststore type." },
- "useSsl": { "index": 14, "kind": "property", "displayName": "Use Ssl",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Whether to enable SSL when
connecting to the AMQP Broker." },
- "useTopicPrefix": { "index": 15, "kind": "property", "displayName": "Use
Topic Prefix", "group": "common", "label": "", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "description": "Whether to configure
topics with a topic:\/\/ prefix." },
+ "useSsl": { "index": 14, "kind": "property", "displayName": "Use Ssl",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false,
"secret": false, "description": "Whether to enable SSL when connecting to the
AMQP Broker." },
+ "useTopicPrefix": { "index": 15, "kind": "property", "displayName": "Use
Topic Prefix", "group": "common", "label": "", "required": false, "type":
"boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired":
false, "secret": false, "description": "Whether to configure topics with a
topic:\/\/ prefix." },
"acknowledgementModeName": { "index": 16, "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": 17, "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": 18, "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 [...]
diff --git
a/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPComponentConfigurer.java
b/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPComponentConfigurer.java
index a05416e70c5..9f6202050c6 100644
---
a/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPComponentConfigurer.java
+++
b/components/camel-amqp/src/generated/java/org/apache/camel/component/amqp/AMQPComponentConfigurer.java
@@ -32,7 +32,7 @@ public class AMQPComponentConfigurer extends
JmsComponentConfigurer implements G
case "keyStorePassword":
target.setKeyStorePassword(property(camelContext, java.lang.String.class,
value)); return true;
case "keystoretype":
case "keyStoreType": target.setKeyStoreType(property(camelContext,
java.lang.String.class, value)); return true;
- case "port": target.setPort(property(camelContext, int.class, value));
return true;
+ case "port": target.setPort(property(camelContext,
java.lang.Integer.class, value)); return true;
case "truststorelocation":
case "trustStoreLocation":
target.setTrustStoreLocation(property(camelContext, java.lang.String.class,
value)); return true;
case "truststorepassword":
@@ -40,9 +40,9 @@ public class AMQPComponentConfigurer extends
JmsComponentConfigurer implements G
case "truststoretype":
case "trustStoreType": target.setTrustStoreType(property(camelContext,
java.lang.String.class, value)); return true;
case "usessl":
- case "useSsl": target.setUseSsl(property(camelContext, boolean.class,
value)); return true;
+ case "useSsl": target.setUseSsl(property(camelContext,
java.lang.Boolean.class, value)); return true;
case "usetopicprefix":
- case "useTopicPrefix": target.setUseTopicPrefix(property(camelContext,
boolean.class, value)); return true;
+ case "useTopicPrefix": target.setUseTopicPrefix(property(camelContext,
java.lang.Boolean.class, value)); return true;
default: return super.configure(camelContext, obj, name, value,
ignoreCase);
}
}
@@ -59,7 +59,7 @@ public class AMQPComponentConfigurer extends
JmsComponentConfigurer implements G
case "keyStorePassword": return java.lang.String.class;
case "keystoretype":
case "keyStoreType": return java.lang.String.class;
- case "port": return int.class;
+ case "port": return java.lang.Integer.class;
case "truststorelocation":
case "trustStoreLocation": return java.lang.String.class;
case "truststorepassword":
@@ -67,9 +67,9 @@ public class AMQPComponentConfigurer extends
JmsComponentConfigurer implements G
case "truststoretype":
case "trustStoreType": return java.lang.String.class;
case "usessl":
- case "useSsl": return boolean.class;
+ case "useSsl": return java.lang.Boolean.class;
case "usetopicprefix":
- case "useTopicPrefix": return boolean.class;
+ case "useTopicPrefix": return java.lang.Boolean.class;
default: return super.getOptionType(name, ignoreCase);
}
}
@@ -95,9 +95,9 @@ public class AMQPComponentConfigurer extends
JmsComponentConfigurer implements G
case "truststoretype":
case "trustStoreType": return target.getTrustStoreType();
case "usessl":
- case "useSsl": return target.isUseSsl();
+ case "useSsl": return target.getUseSsl();
case "usetopicprefix":
- case "useTopicPrefix": return target.isUseTopicPrefix();
+ case "useTopicPrefix": return target.getUseTopicPrefix();
default: return super.getOptionValue(obj, name, ignoreCase);
}
}
diff --git
a/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json
b/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json
index 29d7998d6db..301b1fbabd7 100644
---
a/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json
+++
b/components/camel-amqp/src/generated/resources/META-INF/org/apache/camel/component/amqp/amqp.json
@@ -28,18 +28,18 @@
"connectionFactory": { "index": 1, "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": 2, "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": 3, "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 [...]
- "host": { "index": 4, "kind": "property", "displayName": "Host", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "localhost", "description": "The host name or IP address of the
computer that hosts the AMQP Broker." },
+ "host": { "index": 4, "kind": "property", "displayName": "Host", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"description": "The host name or IP address of the computer that hosts the AMQP
Broker." },
"includeAmqpAnnotations": { "index": 5, "kind": "property", "displayName":
"Include AMQP Annotations", "group": "common", "label": "", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
false, "description": "Whether to include AMQP annotations when mapping from
AMQP to Camel Message. Setting this to true maps AMQP message annotations that
contain a JMS_AMQP_MA_ prefix to messag [...]
"jmsMessageType": { "index": 6, "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 [...]
"keyStoreLocation": { "index": 7, "kind": "property", "displayName": "Key
Store Location", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The SSL keystore location." },
"keyStoreType": { "index": 8, "kind": "property", "displayName": "Key
Store Type", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "JKS", "description": "The SSL keystore
type." },
- "port": { "index": 9, "kind": "property", "displayName": "Port", "group":
"common", "label": "", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5672,
"description": "The port number on which the AMPQ Broker listens." },
+ "port": { "index": 9, "kind": "property", "displayName": "Port", "group":
"common", "label": "", "required": false, "type": "integer", "javaType":
"java.lang.Integer", "deprecated": false, "autowired": false, "secret": false,
"description": "The port number on which the AMPQ Broker listens." },
"replyTo": { "index": 10, "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": 11, "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 Cam [...]
"trustStoreLocation": { "index": 12, "kind": "property", "displayName":
"Trust Store Location", "group": "common", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "The SSL truststore
location." },
"trustStoreType": { "index": 13, "kind": "property", "displayName": "Trust
Store Type", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "JKS", "description": "The SSL
truststore type." },
- "useSsl": { "index": 14, "kind": "property", "displayName": "Use Ssl",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Whether to enable SSL when
connecting to the AMQP Broker." },
- "useTopicPrefix": { "index": 15, "kind": "property", "displayName": "Use
Topic Prefix", "group": "common", "label": "", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "description": "Whether to configure
topics with a topic:\/\/ prefix." },
+ "useSsl": { "index": 14, "kind": "property", "displayName": "Use Ssl",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false,
"secret": false, "description": "Whether to enable SSL when connecting to the
AMQP Broker." },
+ "useTopicPrefix": { "index": 15, "kind": "property", "displayName": "Use
Topic Prefix", "group": "common", "label": "", "required": false, "type":
"boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired":
false, "secret": false, "description": "Whether to configure topics with a
topic:\/\/ prefix." },
"acknowledgementModeName": { "index": 16, "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": 17, "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": 18, "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 [...]
diff --git a/components/camel-amqp/src/main/docs/amqp-component.adoc
b/components/camel-amqp/src/main/docs/amqp-component.adoc
index c87d6f5fc13..759d8276e2b 100644
--- a/components/camel-amqp/src/main/docs/amqp-component.adoc
+++ b/components/camel-amqp/src/main/docs/amqp-component.adoc
@@ -83,12 +83,13 @@ AMQPComponent amqp =
AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp =
AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
----
-Alternatively, configure the AMQP Component using the available options for
SSL, authentication,
-and AMQP Broker host/port.
+Alternatively, the AMQP Component can be initialized by providing one or more
of the available options for
+configuring SSL, authentication, and AMQP Broker host and port.
*SSL configuration*
-The component can be configured to connect to an AMQP broker using SSL, for
example:
+The component can be configured to connect to an AMQP broker using SSL by
setting the
+`useSsl` option and providing keystore and truststore details, for example:
[source,java]
----
@@ -124,6 +125,10 @@ amqpComponent.setHost("remoteHost");
amqpComponent.setPort(5555);
----
+If `host` or `port` options have not been provided and the component is
initialized using one or more of the other available
+options the host on the AMQP JMSConnectionFactory URI is set to 'localhost' if
not provided, and the port is set to '5672'
+if not provided.
+
*Spring AMQP connection details auto-configuration*
[source,java]
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 9c4c61fca7b..a8302e018ee 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
@@ -40,15 +40,14 @@ public class AMQPComponent extends JmsComponent {
public static final String AMQP_DEFAULT_HOST = "localhost";
public static final int AMQP_DEFAULT_PORT = 5672;
- @Metadata(defaultValue = "localhost",
- description = "The host name or IP address of the computer that
hosts the AMQP Broker.")
- private String host = AMQP_DEFAULT_HOST;
- @Metadata(defaultValue = "5672", description = "The port number on which
the AMPQ Broker listens.")
- private int port = AMQP_DEFAULT_PORT;
- @Metadata(defaultValue = "true", description = "Whether to configure
topics with a `topic://` prefix.")
- private boolean useTopicPrefix = true;
+ @Metadata(description = "The host name or IP address of the computer that
hosts the AMQP Broker.")
+ private String host;
+ @Metadata(description = "The port number on which the AMPQ Broker
listens.")
+ private Integer port;
+ @Metadata(description = "Whether to configure topics with a `topic://`
prefix.")
+ private Boolean useTopicPrefix;
@Metadata(description = "Whether to enable SSL when connecting to the AMQP
Broker.")
- private boolean useSsl;
+ private Boolean useSsl;
@Metadata(description = "The SSL keystore location.")
private String keyStoreLocation;
@Metadata(defaultValue = "JKS", description = "The SSL keystore type.")
@@ -98,21 +97,22 @@ public class AMQPComponent extends JmsComponent {
@Override
protected void doInit() throws Exception {
- if (useConfig()) {
+ if (host != null || port != null || getUsername() != null ||
getPassword() != null || useTopicPrefix != null
+ || useSsl != null) {
StringBuilder sb = new StringBuilder();
- sb.append(useSsl ? "amqps://" : "amqp://");
- sb.append(host).append(":").append(port);
- if (isUseSsl()) {
-
sb.append("?transport.trustStoreLocation=").append(trustStoreLocation);
+ sb.append(useSsl == Boolean.TRUE ? "amqps://" : "amqp://");
+ sb.append(host == null ? AMQP_DEFAULT_HOST :
host).append(":").append(port == null ? AMQP_DEFAULT_PORT : port);
+ if (useSsl == Boolean.TRUE) {
+
sb.append("?transport.trustStoreLocation=").append(trustStoreLocation == null ?
"" : trustStoreLocation);
sb.append("&transport.trustStoreType=").append(trustStoreType);
-
sb.append("&transport.trustStorePassword=").append(trustStorePassword);
-
sb.append("&transport.keyStoreLocation=").append(keyStoreLocation);
+
sb.append("&transport.trustStorePassword=").append(trustStorePassword == null ?
"" : trustStorePassword);
+
sb.append("&transport.keyStoreLocation=").append(keyStoreLocation == null ? ""
: keyStoreLocation);
sb.append("&transport.keyStoreType=").append(keyStoreType);
-
sb.append("&transport.keyStorePassword=").append(keyStorePassword);
+
sb.append("&transport.keyStorePassword=").append(keyStorePassword == null ? ""
: keyStorePassword);
}
JmsConnectionFactory connectionFactory
= new JmsConnectionFactory(getUsername(), getPassword(),
sb.toString());
- if (useTopicPrefix) {
+ if (useTopicPrefix != Boolean.FALSE) {
connectionFactory.setTopicPrefix("topic://");
}
getConfiguration().setConnectionFactory(connectionFactory);
@@ -132,14 +132,6 @@ public class AMQPComponent extends JmsComponent {
super.doInit();
}
- private boolean useConfig() {
- if (!host.equals(AMQP_DEFAULT_HOST) || port != AMQP_DEFAULT_PORT ||
getUsername() != null ||
- getPassword() != null || !useTopicPrefix || useSsl) {
- return true;
- }
- return false;
- }
-
@Override
protected Endpoint createEndpoint(String uri, String remaining,
Map<String, Object> parameters) throws Exception {
JmsEndpoint endpoint = (JmsEndpoint) super.createEndpoint(uri,
remaining, parameters);
@@ -197,27 +189,27 @@ public class AMQPComponent extends JmsComponent {
this.host = host;
}
- public int getPort() {
+ public Integer getPort() {
return port;
}
- public void setPort(int port) {
+ public void setPort(Integer port) {
this.port = port;
}
- public boolean isUseTopicPrefix() {
+ public Boolean getUseTopicPrefix() {
return useTopicPrefix;
}
- public void setUseTopicPrefix(boolean useTopicPrefix) {
+ public void setUseTopicPrefix(Boolean useTopicPrefix) {
this.useTopicPrefix = useTopicPrefix;
}
- public boolean isUseSsl() {
+ public Boolean getUseSsl() {
return useSsl;
}
- public void setUseSsl(boolean useSsl) {
+ public void setUseSsl(Boolean useSsl) {
this.useSsl = useSsl;
}
diff --git
a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPConfigTest.java
b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPConfigTest.java
index 72c22556502..eefdce6f904 100644
---
a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPConfigTest.java
+++
b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPConfigTest.java
@@ -26,6 +26,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import static org.apache.camel.component.amqp.AMQPComponent.amqpComponent;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -49,8 +50,12 @@ public class AMQPConfigTest {
@Test
public void testConfiguredComponent() {
AMQPComponent customizedComponent =
contextExtension.getContext().getComponent("amqp-configured",
AMQPComponent.class);
- assertTrue(customizedComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
+ assertEquals("remotehost", customizedComponent.getHost());
+ assertEquals(5556, customizedComponent.getPort());
+ assertEquals("camel", customizedComponent.getUsername());
+ assertEquals("rider", customizedComponent.getPassword());
+ assertTrue(customizedComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
JmsConnectionFactory connectionFactory = (JmsConnectionFactory)
customizedComponent.getConnectionFactory();
assertEquals("camel", connectionFactory.getUsername());
assertEquals("rider", connectionFactory.getPassword());
@@ -61,8 +66,15 @@ public class AMQPConfigTest {
@Test
public void testConfiguredSslComponent() {
AMQPComponent customizedComponent =
contextExtension.getContext().getComponent("amqps-configured",
AMQPComponent.class);
- assertTrue(customizedComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
+ assertTrue(customizedComponent.getUseSsl());
+ assertEquals("server-ca-truststore.p12",
customizedComponent.getTrustStoreLocation());
+ assertEquals("securepass",
customizedComponent.getTrustStorePassword());
+ assertEquals("PKCS12", customizedComponent.getTrustStoreType());
+ assertEquals("server-keystore.p12",
customizedComponent.getKeyStoreLocation());
+ assertEquals("securepass", customizedComponent.getKeyStorePassword());
+ assertEquals("PKCS12", customizedComponent.getKeyStoreType());
+ assertTrue(customizedComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
JmsConnectionFactory connectionFactory = (JmsConnectionFactory)
customizedComponent.getConnectionFactory();
assertNull(connectionFactory.getUsername());
assertNull(connectionFactory.getPassword());
@@ -72,6 +84,54 @@ public class AMQPConfigTest {
assertEquals("topic://", connectionFactory.getTopicPrefix());
}
+ @Test
+ public void testEnabledSslComponent() {
+ AMQPComponent amqpSslEnabledComponent
+ = contextExtension.getContext().getComponent("amqps-enabled",
AMQPComponent.class);
+ assertTrue(amqpSslEnabledComponent.getUseSsl());
+ assertNull(amqpSslEnabledComponent.getTrustStoreLocation());
+ assertNull(amqpSslEnabledComponent.getTrustStorePassword());
+ assertEquals("JKS", amqpSslEnabledComponent.getTrustStoreType());
+ assertNull(amqpSslEnabledComponent.getKeyStoreLocation());
+ assertNull(amqpSslEnabledComponent.getKeyStorePassword());
+ assertEquals("JKS", amqpSslEnabledComponent.getKeyStoreType());
+
+ assertTrue(amqpSslEnabledComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
+ JmsConnectionFactory connectionFactory = (JmsConnectionFactory)
amqpSslEnabledComponent.getConnectionFactory();
+ assertNull(connectionFactory.getUsername());
+ assertNull(connectionFactory.getPassword());
+ assertEquals(
+
"amqps://localhost:5672?transport.trustStoreLocation=&transport.trustStoreType=JKS&transport.trustStorePassword=&transport.keyStoreLocation=&transport.keyStoreType=JKS&transport.keyStorePassword=",
+ connectionFactory.getRemoteURI());
+ assertEquals("topic://", connectionFactory.getTopicPrefix());
+ }
+
+ @Test
+ public void testComponentPort() {
+ AMQPComponent amqpComponent =
contextExtension.getContext().getComponent("amqp-portonly",
AMQPComponent.class);
+ assertEquals(5556, amqpComponent.getPort());
+
+ assertTrue(amqpComponent.getConnectionFactory() instanceof
JmsConnectionFactory);
+ JmsConnectionFactory connectionFactory = (JmsConnectionFactory)
amqpComponent.getConnectionFactory();
+ assertNull(connectionFactory.getUsername());
+ assertNull(connectionFactory.getPassword());
+ assertEquals("amqp://localhost:5556",
connectionFactory.getRemoteURI());
+ assertEquals("topic://", connectionFactory.getTopicPrefix());
+ }
+
+ @Test
+ public void testNoTopicPrefix() {
+ AMQPComponent component =
contextExtension.getContext().getComponent("amqp-notopicprefix",
AMQPComponent.class);
+ assertFalse(component.getUseTopicPrefix());
+
+ assertTrue(component.getConnectionFactory() instanceof
JmsConnectionFactory);
+ JmsConnectionFactory connectionFactory = (JmsConnectionFactory)
component.getConnectionFactory();
+ assertNull(connectionFactory.getUsername());
+ assertNull(connectionFactory.getPassword());
+ assertEquals("amqp://localhost:5672",
connectionFactory.getRemoteURI());
+ assertNull(connectionFactory.getTopicPrefix());
+ }
+
@ContextFixture
public void configureContext(CamelContext context) {
context.addComponent("amqp", amqpComponent("amqp://remotehost:5556"));
@@ -92,5 +152,17 @@ public class AMQPConfigTest {
amqpSslComponent.setKeyStorePassword("securepass");
amqpSslComponent.setKeyStoreType("PKCS12");
context.addComponent("amqps-configured", amqpSslComponent);
+
+ AMQPComponent amqpSslEnabledComponent = new AMQPComponent();
+ amqpSslEnabledComponent.setUseSsl(true);
+ context.addComponent("amqps-enabled", amqpSslEnabledComponent);
+
+ AMQPComponent amqpPortOnlyComponent = new AMQPComponent();
+ amqpPortOnlyComponent.setPort(5556);
+ context.addComponent("amqp-portonly", amqpPortOnlyComponent);
+
+ AMQPComponent amqpNoTopicPrefix = new AMQPComponent();
+ amqpNoTopicPrefix.setUseTopicPrefix(false);
+ context.addComponent("amqp-notopicprefix", amqpNoTopicPrefix);
}
}
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java
index 2aa90ba090d..5dd24219338 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AmqpComponentBuilderFactory.java
@@ -125,14 +125,12 @@ public interface AmqpComponentBuilderFactory {
return this;
}
-
/**
* The host name or IP address of the computer that hosts the AMQP
* Broker.
*
* The option is a: <code>java.lang.String</code> type.
*
- * Default: localhost
* Group: common
*
* @param host the value to set
@@ -215,19 +213,17 @@ public interface AmqpComponentBuilderFactory {
return this;
}
-
/**
* The port number on which the AMPQ Broker listens.
*
- * The option is a: <code>int</code> type.
+ * The option is a: <code>java.lang.Integer</code> type.
*
- * Default: 5672
* Group: common
*
* @param port the value to set
* @return the dsl builder
*/
- default AmqpComponentBuilder port(int port) {
+ default AmqpComponentBuilder port(java.lang.Integer port) {
doSetProperty("port", port);
return this;
}
@@ -301,36 +297,32 @@ public interface AmqpComponentBuilderFactory {
return this;
}
-
/**
* Whether to enable SSL when connecting to the AMQP Broker.
*
- * The option is a: <code>boolean</code> type.
+ * The option is a: <code>java.lang.Boolean</code> type.
*
- * Default: false
* Group: common
*
* @param useSsl the value to set
* @return the dsl builder
*/
- default AmqpComponentBuilder useSsl(boolean useSsl) {
+ default AmqpComponentBuilder useSsl(java.lang.Boolean useSsl) {
doSetProperty("useSsl", useSsl);
return this;
}
-
/**
* Whether to configure topics with a topic:// prefix.
*
- * The option is a: <code>boolean</code> type.
+ * The option is a: <code>java.lang.Boolean</code> type.
*
- * Default: true
* Group: common
*
* @param useTopicPrefix the value to set
* @return the dsl builder
*/
- default AmqpComponentBuilder useTopicPrefix(boolean useTopicPrefix) {
+ default AmqpComponentBuilder useTopicPrefix(java.lang.Boolean
useTopicPrefix) {
doSetProperty("useTopicPrefix", useTopicPrefix);
return this;
}
@@ -2402,13 +2394,13 @@ public interface AmqpComponentBuilderFactory {
case "jmsMessageType": getOrCreateConfiguration((AMQPComponent)
component).setJmsMessageType((org.apache.camel.component.jms.JmsMessageType)
value); return true;
case "keyStoreLocation": ((AMQPComponent)
component).setKeyStoreLocation((java.lang.String) value); return true;
case "keyStoreType": ((AMQPComponent)
component).setKeyStoreType((java.lang.String) value); return true;
- case "port": ((AMQPComponent) component).setPort((int) value);
return true;
+ case "port": ((AMQPComponent)
component).setPort((java.lang.Integer) value); return true;
case "replyTo": getOrCreateConfiguration((AMQPComponent)
component).setReplyTo((java.lang.String) value); return true;
case "testConnectionOnStartup":
getOrCreateConfiguration((AMQPComponent)
component).setTestConnectionOnStartup((boolean) value); return true;
case "trustStoreLocation": ((AMQPComponent)
component).setTrustStoreLocation((java.lang.String) value); return true;
case "trustStoreType": ((AMQPComponent)
component).setTrustStoreType((java.lang.String) value); return true;
- case "useSsl": ((AMQPComponent) component).setUseSsl((boolean)
value); return true;
- case "useTopicPrefix": ((AMQPComponent)
component).setUseTopicPrefix((boolean) value); return true;
+ case "useSsl": ((AMQPComponent)
component).setUseSsl((java.lang.Boolean) value); return true;
+ case "useTopicPrefix": ((AMQPComponent)
component).setUseTopicPrefix((java.lang.Boolean) value); return true;
case "acknowledgementModeName":
getOrCreateConfiguration((AMQPComponent)
component).setAcknowledgementModeName((java.lang.String) value); return true;
case "artemisConsumerPriority":
getOrCreateConfiguration((AMQPComponent)
component).setArtemisConsumerPriority((int) value); return true;
case "asyncConsumer": getOrCreateConfiguration((AMQPComponent)
component).setAsyncConsumer((boolean) value); return true;