CAMEL-11642 - Broker Credentials should be set from endpoint
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9c7a8f30 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9c7a8f30 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9c7a8f30 Branch: refs/heads/master Commit: 9c7a8f308ce845aab89b0e08cce3ab7babf08cfa Parents: fe79516 Author: Fabrizio Spataro <fabrizio.spat...@bizmate.it> Authored: Mon Aug 7 10:07:27 2017 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Mon Aug 7 10:27:40 2017 +0200 ---------------------------------------------------------------------- .../src/main/docs/paho-component.adoc | 4 +-- .../camel/component/paho/PahoComponent.java | 2 +- .../camel/component/paho/PahoEndpoint.java | 34 ++++++++++++++++++++ .../camel/component/paho/PahoComponentTest.java | 12 +++++++ 4 files changed, 49 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9c7a8f30/components/camel-paho/src/main/docs/paho-component.adoc ---------------------------------------------------------------------- diff --git a/components/camel-paho/src/main/docs/paho-component.adoc b/components/camel-paho/src/main/docs/paho-component.adoc index 2c20f19..84083ee 100644 --- a/components/camel-paho/src/main/docs/paho-component.adoc +++ b/components/camel-paho/src/main/docs/paho-component.adoc @@ -127,13 +127,13 @@ The Paho component supports 4 options which are listed below. | **brokerUrl** (common) | The URL of the MQTT broker. | | String | **clientId** (common) | MQTT client identifier. | | String | **connectOptions** (advanced) | Client connection options | | MqttConnectOptions +| **userName** (common) | UserName used for authentication again the MQTT broker. | | String +| **password** (common) | Password used for authentication again the MQTT broker. | | String | **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean |======================================================================= // component options: END - - // endpoint options: START The Paho endpoint is configured using URI syntax: http://git-wip-us.apache.org/repos/asf/camel/blob/9c7a8f30/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoComponent.java b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoComponent.java index 1a8e4a5..47cb4fe 100644 --- a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoComponent.java +++ b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoComponent.java @@ -32,7 +32,7 @@ public class PahoComponent extends UriEndpointComponent { private String clientId; @Metadata(label = "advanced") private MqttConnectOptions connectOptions; - + public PahoComponent() { super(PahoEndpoint.class); } http://git-wip-us.apache.org/repos/asf/camel/blob/9c7a8f30/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java index 16af7d1..3416ea8 100644 --- a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java +++ b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java @@ -63,6 +63,11 @@ public class PahoEndpoint extends DefaultEndpoint { private String filePersistenceDirectory; @UriParam(defaultValue = "true") private boolean autoReconnect = true; + @UriParam @Metadata(secret = true) + private String userName; + @UriParam @Metadata(secret = true) + private String password; + // Collaboration members @UriParam @@ -140,6 +145,11 @@ public class PahoEndpoint extends DefaultEndpoint { MqttConnectOptions options = new MqttConnectOptions(); options.setAutomaticReconnect(autoReconnect); + + if(!"".equals(userName) && !"".equals(password)) { + options.setUserName(userName); + options.setPassword(password.toCharArray()); + } return options; } @@ -271,4 +281,28 @@ public class PahoEndpoint extends DefaultEndpoint { this.autoReconnect = autoReconnect; } + public String getUserName() { + return userName; + } + + /** + * Username to be used for authentication against the MQTT broker + * @param userName + */ + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + /** + * Password to be used for authentication against the MQTT broker + * @param password + */ + public void setPassword(String password) { + this.password = password; + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/9c7a8f30/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java ---------------------------------------------------------------------- diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java index 27f0ed8..f7de2c7 100644 --- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java +++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java @@ -211,4 +211,16 @@ public class PahoComponentTest extends CamelTestSupport { testCustomizedPahoMock.assertIsSatisfied(); } + @Test + public void shouldNotSendMessageAuthIsNotValid() throws InterruptedException { + // Given + mock.expectedMessageCount(0); + + // When + template.sendBody("paho:someRandomQueue?brokerUrl=tcp://localhost:" + mqttPort+"&userName=test&password=test", "msg"); + + // Then + mock.assertIsSatisfied(); + } + }