Repository: openmeetings
Updated Branches:
  refs/heads/master 381838de8 -> ce85e43d1


[OPENMEETINGS-1715] room exit for mobile client is fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/ce85e43d
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/ce85e43d
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/ce85e43d

Branch: refs/heads/master
Commit: ce85e43d1c45b95ea94425d28c37abcb6a1aa464
Parents: 381838d
Author: Maxim Solodovnik <[email protected]>
Authored: Fri Sep 29 14:18:47 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Fri Sep 29 14:18:47 2017 +0700

----------------------------------------------------------------------
 .../core/remote/ScopeApplicationAdapter.java    |  4 +-
 .../org/apache/openmeetings/IApplication.java   |  2 +-
 .../db/entity/room/StreamClient.java            |  6 ++
 .../openmeetings/web/app/Application.java       | 58 ++++++++++----------
 .../openmeetings/web/common/MainPanel.java      |  2 +-
 5 files changed, 39 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index a985e0b..21faa87 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -380,7 +380,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                }
        }
 
-       public void roomLeaveByScope(Client c, Long roomId) {
+       public void 
roomLeaveByScope(org.apache.openmeetings.db.entity.basic.IClient c, Long 
roomId) {
                StreamClient rcl = sessionManager.get(c.getUid());
                IScope scope = getChildScope(String.valueOf(roomId));
                _log.debug("[roomLeaveByScope] {} {} {} {}", c.getUid(), 
roomId, rcl, scope);
@@ -434,7 +434,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        _log.debug("currentScope " + scope);
 
                        if (Client.Type.mobile == client.getType() || 
Client.Type.sip == client.getType()) {
-                               getApp().exit(client.getUid());
+                               getApp().exit(client);
                        }
                        sessionManager.remove(client.getUid());
                } catch (Exception err) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java 
b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
index 865854b..0ae584a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
@@ -52,10 +52,10 @@ public interface IApplication {
        String getOmInvitationLink(Invitation i);
        String urlForActivatePage(PageParameters pp);
        void invalidateClient(Long userId, String sessionId);
-       void exit(String uid);
        void setXFrameOptions(String xFrameOptions);
        void setContentSecurityPolicy(String contentSecurityPolicy);
 
+       void exit(IClient c);
        IClient update(IClient c);
 
        // web client

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java
index cd3bd99..a423489 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java
@@ -45,6 +45,7 @@ public class StreamClient implements IClient {
        private int userport;
        private Date roomEnter = null;
        private String broadcastId = null;
+       @SuppressWarnings("unused") private String broadCastID = null; 
//required for mobile only
        private String login = "";
        private Long userId = null;
        private String firstname = "";
@@ -203,6 +204,11 @@ public class StreamClient implements IClient {
 
        public void setBroadcastId(String broadcastId) {
                this.broadcastId = broadcastId;
+               this.broadCastID = broadcastId;
+       }
+
+       public String getBroadCastID() {
+               return broadCastID;
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 42fb8ea..a188fa7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -395,32 +395,24 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                get().getUidBySid().put(c.getSid(), c.getUid());
        }
 
-       public static void exitRoom(Client c) {
-               Room room = c.getRoom();
+       public static void exitRoom(IClient c) {
+               Long roomId = c.getRoomId();
                removeUserFromRoom(c);
-               if (room != null) {
-                       sendRoom(new RoomMessage(room.getId(), c.getUserId(), 
RoomMessage.Type.roomExit));
+               if (roomId != null) {
+                       sendRoom(new RoomMessage(roomId, c.getUserId(), 
RoomMessage.Type.roomExit));
                        getBean(ConferenceLogDao.class).add(
                                        ConferenceLog.Type.roomLeave
-                                       , c.getUserId(), "0", room.getId()
+                                       , c.getUserId(), "0", roomId
                                        , c.getRemoteAddress()
-                                       , "" + room);
+                                       , String.valueOf(roomId));
                }
        }
 
        @Override
-       public void exit(String uid) {
-               if (uid != null) {
-                       exit(getOnlineUsers().get(uid));
-               }
-       }
-
-       private static void exit(Client c) {
+       public void exit(IClient c) {
                if (c != null) {
-                       if (c.getRoom() != null) {
-                               exitRoom(c);
-                       }
-                       log.debug("Removing online client: {}, room: {}", 
c.getUid(), c.getRoom());
+                       exitRoom(c);
+                       log.debug("Removing online client: {}, roomId: {}", 
c.getUid(), c.getRoomId());
                        get().getOnlineUsers().remove(c.getUid());
                        get().getUidBySid().remove(c.getSid());
                }
@@ -623,22 +615,30 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                return c;
        }
 
-       public static Client removeUserFromRoom(Client c) {
-               Room room = c.getRoom();
-               log.debug("Removing online room client: {}, room: {}", 
c.getUid(), room);
-               if (room != null) {
+       public static IClient removeUserFromRoom(IClient _c) {
+               Long roomId = _c.getRoomId();
+               log.debug("Removing online room client: {}, room: {}", 
_c.getUid(), roomId);
+               if (roomId != null) {
                        Map<Long, Set<String>> rooms = get().getRooms();
-                       Set<String> clients = rooms.get(room.getId());
+                       Set<String> clients = rooms.get(roomId);
                        if (clients != null) {
-                               clients.remove(c.getUid());
-                               rooms.put(room.getId(), clients);
+                               clients.remove(_c.getUid());
+                               rooms.put(roomId, clients);
+                       }
+                       if (_c instanceof StreamClient) {
+                               StreamClient sc = (StreamClient)_c;
+                               if (Client.Type.mobile != sc.getType() && 
Client.Type.sip != sc.getType()) {
+                                       
getBean(ScopeApplicationAdapter.class).roomLeaveByScope(_c, roomId);
+                               }
+                       }
+                       if (_c instanceof Client) {
+                               Client c = (Client)_c;
+                               c.setRoom(null);
+                               c.clear();
+                               update(c);
                        }
-                       
getBean(ScopeApplicationAdapter.class).roomLeaveByScope(c, room.getId());
-                       c.setRoom(null);
-                       c.clear();
-                       update(c);
                }
-               return c;
+               return _c;
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 605e6e2..e86a2ea 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -178,7 +178,7 @@ public class MainPanel extends Panel {
                                //no chance to stop pingTimer here :(
                                if (uid != null) {
                                        
log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", 
uid, msg.getSessionId(), msg.getKey());
-                                       Application.get().exit(uid);
+                                       Application.get().exit(getClient());
                                        uid = null;
                                }
                        }

Reply via email to