You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/10 06:12:30 UTC

[camel] branch master updated: CAMEL-13848: Add room password to camel-xmpp. Thanks to Tapio Piironen for the patch.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7337198  CAMEL-13848: Add room password to camel-xmpp. Thanks to Tapio Piironen for the patch.
7337198 is described below

commit 7337198fccc417ccd7f4fd7c97616bf54b6c5487
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 10 08:12:14 2019 +0200

    CAMEL-13848: Add room password to camel-xmpp. Thanks to Tapio Piironen for the patch.
---
 .../camel-xmpp/src/main/docs/xmpp-component.adoc   |  3 +-
 .../apache/camel/component/xmpp/XmppEndpoint.java  | 13 +++++++++
 .../component/xmpp/XmppGroupChatProducer.java      | 12 ++++----
 .../endpoint/dsl/XmppEndpointBuilderFactory.java   | 33 ++++++++++++++++++++++
 4 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/components/camel-xmpp/src/main/docs/xmpp-component.adoc b/components/camel-xmpp/src/main/docs/xmpp-component.adoc
index b2b0e8a..895ec9d 100644
--- a/components/camel-xmpp/src/main/docs/xmpp-component.adoc
+++ b/components/camel-xmpp/src/main/docs/xmpp-component.adoc
@@ -73,7 +73,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (20 parameters):
+=== Query Parameters (21 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -98,6 +98,7 @@ with the following path and query parameters:
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 | *headerFilterStrategy* (filter) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
 | *password* (security) | Password for login |  | String
+| *roomPassword* (security) | Password for room |  | String
 | *user* (security) | User name (without server name). If not specified, anonymous login will be attempted. |  | String
 |===
 // endpoint options: END
diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
index 80bd835..a3d8259 100644
--- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
+++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
@@ -80,6 +80,8 @@ public class XmppEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
     private boolean createAccount;
     @UriParam(label = "common")
     private String room;
+    @UriParam(label = "security", secret = true)
+    private String roomPassword;
     @UriParam(label = "common")
     private String nickname;
     @UriParam(label = "common")
@@ -370,6 +372,17 @@ public class XmppEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
         this.room = room;
     }
 
+    /**
+     * Password for room
+     */
+    public void setRoomPassword(String roomPassword) {
+        this.roomPassword = roomPassword;
+    }
+
+    protected String getRoomPassword() {
+        return roomPassword;
+    }
+
     public String getParticipant() {
         // participant is optional so use user if not provided
         return participant != null ? participant : user;
diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
index ff5de56..6ed7716 100644
--- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
+++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
@@ -48,7 +48,6 @@ public class XmppGroupChatProducer extends DefaultProducer {
 
     @Override
     public void process(Exchange exchange) {
-
         if (connection == null) {
             try {
                 connection = endpoint.createConnection();
@@ -122,12 +121,15 @@ public class XmppGroupChatProducer extends DefaultProducer {
     protected synchronized void initializeChat() throws InterruptedException, SmackException, XMPPException, XmppStringprepException {
         if (chat == null) {
             room = endpoint.resolveRoom(connection);
+            String roomPassword = endpoint.getRoomPassword();
             MultiUserChatManager chatManager = MultiUserChatManager.getInstanceFor(connection);
             chat = chatManager.getMultiUserChat(JidCreate.entityBareFrom(room));
-            MucEnterConfiguration mucc = chat.getEnterConfigurationBuilder(Resourcepart.from(endpoint.getNickname()))
-                    .requestNoHistory()
-                    .build();
-            chat.join(mucc);
+            MucEnterConfiguration.Builder mucc = chat.getEnterConfigurationBuilder(Resourcepart.from(endpoint.getNickname()))
+                    .requestNoHistory();
+            if (roomPassword != null) {
+                mucc.withPassword(roomPassword);
+            }
+            chat.join(mucc.build());
             LOG.info("Joined room: {} as: {}", room, endpoint.getNickname());
         }
     }
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/XmppEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/XmppEndpointBuilderFactory.java
index 861c720..376a583 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/XmppEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/XmppEndpointBuilderFactory.java
@@ -296,6 +296,17 @@ public interface XmppEndpointBuilderFactory {
             return this;
         }
         /**
+         * Password for room.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default XmppEndpointConsumerBuilder roomPassword(String roomPassword) {
+            setProperty("roomPassword", roomPassword);
+            return this;
+        }
+        /**
          * User name (without server name). If not specified, anonymous login
          * will be attempted.
          * 
@@ -707,6 +718,17 @@ public interface XmppEndpointBuilderFactory {
             return this;
         }
         /**
+         * Password for room.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default XmppEndpointProducerBuilder roomPassword(String roomPassword) {
+            setProperty("roomPassword", roomPassword);
+            return this;
+        }
+        /**
          * User name (without server name). If not specified, anonymous login
          * will be attempted.
          * 
@@ -1021,6 +1043,17 @@ public interface XmppEndpointBuilderFactory {
             return this;
         }
         /**
+         * Password for room.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default XmppEndpointBuilder roomPassword(String roomPassword) {
+            setProperty("roomPassword", roomPassword);
+            return this;
+        }
+        /**
          * User name (without server name). If not specified, anonymous login
          * will be attempted.
          *