Repository: openmeetings
Updated Branches:
  refs/heads/master b4ed57b98 -> 3f0e571ba


[OPENMEETINGS-1644] StreamClient is simplified, video start is more stable


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

Branch: refs/heads/master
Commit: 3f0e571baab49cdcf2a829aea3759aaae0d0f82c
Parents: b4ed57b
Author: Maxim Solodovnik <[email protected]>
Authored: Tue Aug 8 11:46:00 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Tue Aug 8 11:46:00 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/core/remote/MobileService.java |  7 ++--
 .../core/remote/RecordingService.java           |  9 ++---
 .../core/remote/ScopeApplicationAdapter.java    | 29 +++++++--------
 .../core/session/SessionManager.java            |  3 +-
 .../openmeetings/core/util/RoomHelper.java      |  2 +-
 .../openmeetings/db/entity/basic/Client.java    | 20 +++++------
 .../openmeetings/db/entity/basic/IClient.java   |  6 ++++
 .../db/entity/room/StreamClient.java            | 38 ++++++--------------
 .../web/admin/connection/ConnectionsPanel.java  |  2 +-
 .../openmeetings/web/app/Application.java       |  4 +--
 .../openmeetings/web/room/RoomBroadcaster.java  |  6 ++--
 .../apache/openmeetings/web/room/RoomPanel.java |  6 ++--
 .../web/room/sidebar/RoomSidebar.java           |  9 +----
 13 files changed, 61 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
index edfb987..6aea081 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
@@ -49,6 +49,7 @@ import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.StreamClient;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
@@ -213,7 +214,7 @@ public class MobileService {
 
        public StreamClient create(User u, Sessiondata sd) {
                StreamClient c = new StreamClient();
-               c.setMobile(true);
+               c.setType(StreamClient.Type.mobile);
                c.setOwnerSid(sd.getSessionId());
                c.setUid(UUID.randomUUID().toString());
                return create(c, u);
@@ -263,7 +264,7 @@ public class MobileService {
                for (IConnection conn : 
current.getScope().getClientConnections()) {
                        if (conn != null && conn instanceof 
IServiceCapableConnection) {
                                StreamClient c = 
sessionManager.get(IClientUtil.getId(conn.getClient()));
-                               if (!Strings.isEmpty(c.getAvsettings()) && 
!c.isSharing()) {
+                               if (!Strings.isEmpty(c.getAvsettings()) && 
Client.Type.sharing != c.getType()) {
                                        //TODO duplicates !!!!!!!!!!!!!!
                                        Map<String, Object> map = new 
HashMap<>();
                                        add(map, "streamId", c.getId());
@@ -411,7 +412,7 @@ public class MobileService {
                        @Override
                        public boolean filter(IConnection conn) {
                                StreamClient rcl = 
sessionManager.get(IClientUtil.getId(conn.getClient()));
-                               return rcl.isSharing()
+                               return Client.Type.sharing == rcl.getType()
                                                || rcl.getRoomId() == null || 
!rcl.getRoomId().equals(roomId);
                        }
                }.start();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
index 5500ddc..965a11b 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
@@ -36,6 +36,7 @@ import 
org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData;
@@ -146,7 +147,7 @@ public class RecordingService implements 
IPendingServiceCallback {
                                                WebSocketHelper.sendRoom(new 
TextRoomMessage(roomId, ownerId, RoomMessage.Type.recordingStarted, 
client.getOwnerSid()));
 
                                                // If its the recording client 
we need another type of Meta Data
-                                               if (rcl.isSharing()) {
+                                               if (Client.Type.sharing == 
rcl.getType()) {
                                                        if 
(rcl.getRecordingId() != null && rcl.isSharingStarted()) {
                                                                String 
streamName_Screen = generateFileName(recordingId, rcl.getBroadCastId());
 
@@ -322,7 +323,7 @@ public class RecordingService implements 
IPendingServiceCallback {
                                                }
                                                log.debug("is this users still 
alive? stop it :" + rcl);
 
-                                               if (rcl.isSharing()) {
+                                               if (Client.Type.sharing == 
rcl.getType()) {
                                                        if 
(rcl.getRecordingId() != null && rcl.isSharingStarted()) {
                                                                // Stop FLV 
Recording
                                                                
stopRecordingShow(scope, rcl.getBroadCastId(), rcl.getMetaId());
@@ -379,7 +380,7 @@ public class RecordingService implements 
IPendingServiceCallback {
                        // rcl.getUserip(), false);
                        log.debug("### stopRecordingShowForClient: " + rcl);
 
-                       if (rcl.isSharing()) {
+                       if (Client.Type.sharing == rcl.getType()) {
                                if (rcl.getRecordingId() != null && 
rcl.isSharingStarted()) {
 
                                        // Stop FLV Recording
@@ -412,7 +413,7 @@ public class RecordingService implements 
IPendingServiceCallback {
                        Date now = new Date();
 
                        // If its the recording client we need another type of 
Meta Data
-                       if (rcl.isSharing()) {
+                       if (Client.Type.sharing == rcl.getType()) {
                                if (rcl.getRecordingId() != null && 
rcl.isSharingStarted()) {
                                        String streamName_Screen = 
generateFileName(recordingId, rcl.getBroadCastId().toString());
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 54c8b9c..7212137 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
@@ -225,12 +225,12 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        return rejectClient();
                }
                if (Boolean.TRUE.equals(connParams.get(MOBILE_PARAM))) {
-                       rcm.setMobile(true);
+                       rcm.setType(Client.Type.mobile);
                }
                rcm.setUid(Strings.isEmpty(uid) ? UUID.randomUUID().toString() 
: uid);
                rcm.setOwnerSid(ownerSid);
                if (sipDao.getUid() != null && 
sipDao.getUid().equals(rcm.getOwnerSid())) {
-                       rcm.setSipTransport(true);
+                       rcm.setType(Client.Type.sip);
                }
                rcm.setUserport(conn.getRemotePort());
                rcm.setUserip(conn.getRemoteAddress());
@@ -245,14 +245,14 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        rcm.setHeight(height.intValue());
                }
                if (map.containsKey("screenClient")) {
-                       rcm.setSharing(true);
+                       rcm.setType(Client.Type.sharing);
                }
                rcm = sessionManager.add(iapp.updateClient(rcm, false));
                if (rcm == null) {
                        _log.warn("Failed to create Client on room connect");
                        return false;
                }
-               IClientUtil.init(conn.getClient(), rcm.getUid(), 
rcm.isSharing());
+               IClientUtil.init(conn.getClient(), rcm.getUid(), 
Client.Type.sharing == rcm.getType());
 
                // Log the User
                conferenceLogDao.add(ConferenceLog.Type.clientConnect,
@@ -435,7 +435,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
        public void roomLeaveByScope(StreamClient client, IScope scope) {
                try {
                        _log.debug("[roomLeaveByScope] currentClient " + 
client);
-                       if (client.isSharing() && client.isSharingStarted()) {
+                       if (Client.Type.sharing == client.getType() && 
client.isSharingStarted()) {
                                sendSharingStoped(client);
                        }
                        if (client.isBroadcasting()) {
@@ -461,7 +461,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        // and room except the current disconnected cause it 
could throw an exception
                        _log.debug("currentScope " + scope);
 
-                       if (client.isMobile() || client.isSipTransport()) {
+                       if (Client.Type.mobile == client.getType() || 
Client.Type.sip == client.getType()) {
                                IApplication app = 
(IApplication)Application.get(wicketApplicationName);
                                app.exit(client.getUid());
                        }
@@ -491,10 +491,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        _log.debug("start streamPublishStart broadcast start: 
{}, CONN {}", streamName, current);
                        c.setBroadCastId(streamName);
 
-                       // In case its a screen sharing we start a new Video 
for that
-                       if (c.isSharing()) {
-                               c.setSharingStarted(true);
-                       } else if (!c.isMobile()) {
+                       if (Client.Type.sharing != c.getType() && 
Client.Type.mobile != c.getType()) {
                                c.setAvsettings("av");
                                c.setBroadcasting(true);
                                if (c.getWidth() == 0 || c.getHeight() == 0) {
@@ -502,7 +499,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                                        c.setHeight(240);
                                }
                        }
-                       if (c.isSipTransport()) {
+                       if (Client.Type.sip == c.getType()) {
                                IApplication iapp = 
(IApplication)Application.get(wicketApplicationName);
                                org.apache.openmeetings.db.entity.basic.Client 
cl = iapp.getOmOnlineClient(c.getUid());
                                String newNumber = 
getSipTransportLastname(c.getRoomId());
@@ -536,7 +533,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                                                _log.debug("RCL getIsRecording 
newStream SEND");
                                                
recordingService.addRecordingByStreamId(current, c, rcl.getRecordingId());
                                        }
-                                       if (rcl.isSharing()) {
+                                       if (Client.Type.sharing == 
rcl.getType()) {
                                                _log.debug("RCL getisSharing 
newStream SEND");
                                                return true;
                                        }
@@ -552,7 +549,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        JSONObject obj = new JSONObject()
                                        .put("ownerSid", c.getOwnerSid())
                                        .put("uid", c.getUid())
-                                       .put("screenShare", c.isSharing())
+                                       .put("type", c.getType())
                                        .put("streamId", 
current.getClient().getId())
                                        .put("streamName", streamName);
                        WebSocketHelper.sendRoom(new 
TextRoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.newStream, 
obj.toString(new NullStringer())));
@@ -603,8 +600,8 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        }
                        sessionManager.update(rcl);
                        // Notify all clients of the same scope (room)
-                       sendMessageToCurrentScope("closeStream", rcl, 
rcl.isMobile());
-                       if (rcl.isSharing()) {
+                       sendMessageToCurrentScope("closeStream", rcl, 
Client.Type.mobile == rcl.getType());
+                       if (Client.Type.sharing == rcl.getType()) {
                                sendSharingStoped(rcl);
                        }
                } catch (Exception e) {
@@ -710,7 +707,7 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                        @Override
                        public boolean filter(IConnection conn) {
                                StreamClient rcl = 
sessionManager.get(IClientUtil.getId(conn.getClient()));
-                               return rcl == null || rcl.isSharing()
+                               return rcl == null || Client.Type.sharing == 
rcl.getType()
                                                || rcl.getRoomId() == null || 
!rcl.getRoomId().equals(roomId) || userDao.get(rcl.getUserId()) == null;
                        }
                }.start();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
index c9546e6..528bc71 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
@@ -31,6 +31,7 @@ import java.util.stream.Collectors;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.StreamClient;
 import org.apache.wicket.Application;
 import org.red5.logging.Red5LoggerFactory;
@@ -90,7 +91,7 @@ public class SessionManager implements ISessionManager {
        @Override
        public List<StreamClient> listByRoom(Long roomId) {
                return list().stream()
-                               .filter(c -> roomId.equals(c.getRoomId()) && 
!c.isSharing())
+                               .filter(c -> roomId.equals(c.getRoomId()) && 
Client.Type.sharing != c.getType())
                                .collect(Collectors.toList());
        }
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
index 307823b..3cbea75 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
@@ -33,6 +33,6 @@ public class RoomHelper {
                                .put("broadcastId", sc.getBroadCastId())
                                .put("width", sc.getWidth())
                                .put("height", sc.getHeight())
-                               .put("screenShare", sc.isSharing());
+                               .put("type", sc.getType());
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index e1bca80..bb8907b 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -63,13 +63,13 @@ public class Client implements IClient {
                private final String streamId;
                private final String uid;
                private final String broadcastId;
-               private final boolean sharing;
+               private final Type type;
 
-               public Stream(String uid, String streamId, String broadcastId, 
boolean sharing) {
+               public Stream(String uid, String streamId, String broadcastId, 
Type type) {
                        this.streamId = streamId;
                        this.broadcastId = broadcastId;
                        this.uid = uid;
-                       this.sharing= sharing;
+                       this.type = type;
                }
 
                public String getStreamId() {
@@ -80,8 +80,8 @@ public class Client implements IClient {
                        return broadcastId;
                }
 
-               public boolean isSharing() {
-                       return sharing;
+               public Type getType() {
+                       return type;
                }
 
                public String getUid() {
@@ -115,7 +115,7 @@ public class Client implements IClient {
 
                @Override
                public String toString() {
-                       return "Stream [id=" + streamId + ", broadcastId=" + 
broadcastId + ", sharing=" + sharing + "]";
+                       return "Stream [id=" + streamId + ", broadcastId=" + 
broadcastId + ", type=" + type + "]";
                }
        }
        private final String sessionId;
@@ -284,7 +284,7 @@ public class Client implements IClient {
                                break;
                        case share:
                                for (Stream s : streams) {
-                                       if (s.isSharing()) {
+                                       if (Type.sharing == s.getType()) {
                                                streams.remove(s);
                                                break;
                                        }
@@ -295,15 +295,15 @@ public class Client implements IClient {
                return this;
        }
 
-       public void addStream(String uid, String streamId, String broadcastId, 
boolean sharing) {
-               streams.add(new Stream(uid, streamId, broadcastId, sharing));
+       public void addStream(String uid, String streamId, String broadcastId, 
Type type) {
+               streams.add(new Stream(uid, streamId, broadcastId, type));
        }
 
        public void removeStream(String broadcastId) {
                if (broadcastId == null) {
                        return;
                }
-               streams.remove(new Stream(null, null, broadcastId, false));
+               streams.remove(new Stream(null, null, broadcastId, Type.video));
        }
 
        public List<Stream> getStreams() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java
index 9d1cdc1..c471b9e 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java
@@ -28,6 +28,12 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity;
  *
  */
 public interface IClient extends IDataProviderEntity {
+       enum Type {
+               video
+               , sip
+               , mobile
+               , sharing
+       }
        String getUid();
        String getServerId();
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 635a8ee..1b6de62 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
@@ -57,8 +57,6 @@ public class StreamClient implements IClient {
        private String swfurl;
        private String tcUrl;
        private boolean nativeSsl = false;
-       private boolean mobile = false;
-       private boolean sharing = false;
        private boolean recordingStarted = false;
        private boolean sharingStarted = false;
        private boolean publishStarted = false;
@@ -70,9 +68,9 @@ public class StreamClient implements IClient {
        private Integer interviewPodId = null;
        private boolean allowRecording = true;
        private boolean micMuted = false;
-       private boolean sipTransport = false;
        private String serverId;
        private Long roomId;
+       private Type type = Type.video;
 
        public StreamClient() {}
 
@@ -299,22 +297,6 @@ public class StreamClient implements IClient {
                this.nativeSsl = nativeSsl;
        }
 
-       public boolean isMobile() {
-               return mobile;
-       }
-
-       public void setMobile(boolean mobile) {
-               this.mobile = mobile;
-       }
-
-       public boolean isSharing() {
-               return sharing;
-       }
-
-       public void setSharing(boolean sharing) {
-               this.sharing = sharing;
-       }
-
        public boolean isRecordingStarted() {
                return recordingStarted;
        }
@@ -403,14 +385,6 @@ public class StreamClient implements IClient {
                this.micMuted = micMuted;
        }
 
-       public boolean isSipTransport() {
-               return sipTransport;
-       }
-
-       public void setSipTransport(boolean sipTransport) {
-               this.sipTransport = sipTransport;
-       }
-
        @Override
        public String getServerId() {
                return serverId;
@@ -424,10 +398,18 @@ public class StreamClient implements IClient {
                return roomId;
        }
 
+       public Type getType() {
+               return type;
+       }
+
+       public void setType(Type type) {
+               this.type = type;
+       }
+
        @Override
        public String toString() {
                return "StreamClient [scope=" + scope + ", uid=" + uid + ", 
ownerSid=" + ownerSid + ", broadCastId="
-                               + broadCastId + ", username=" + username + ", 
userId=" + userId + ", avsettings=" + avsettings + ", sharing=" + sharing
+                               + broadCastId + ", username=" + username + ", 
userId=" + userId + ", avsettings=" + avsettings + ", type=" + type
                                + ", isBroadcasting=" + broadcasting + "]";
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
index edaf596..fa9e8c5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -107,7 +107,7 @@ public class ConnectionsPanel extends AdminPanel {
                                        item.add(new Label("login", 
c.getUsername()));
                                        item.add(new Label("since", 
c.getConnectedSince()));
                                        item.add(new Label("scope"));
-                                       confirm.setEnabled(!c.isSharing());
+                                       confirm.setEnabled(Client.Type.sharing 
!= c.getType());
                                } else {
                                        Client c = (Client)_c;
                                        item.add(new Label("id", ""));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 0035925..38d1189 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
@@ -424,7 +424,7 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                }
                Client client = getClientBySid(rcl.getOwnerSid());
                if (client == null) {
-                       if (rcl.isMobile()) {
+                       if (Client.Type.mobile == rcl.getType()) {
                                Sessiondata sd = 
getBean(SessiondataDao.class).check(rcl.getOwnerSid());
                                UserDao udao = getBean(UserDao.class);
                                User u = udao.get(sd.getUserId());
@@ -440,7 +440,7 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                                        WebSocketHelper.sendRoom(new 
RoomMessage(client.getRoomId(), client.getUserId(), 
RoomMessage.Type.roomEnter));
                                }
                                //FIXME TODO rights
-                       } else if (client == null && rcl.isSipTransport()) {
+                       } else if (client == null && Client.Type.sip == 
rcl.getType()) {
                                rcl.setUsername(SIP_USER_NAME);
                                rcl.setUserId(SIP_USER_ID);
                                //SipTransport enters the room

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
index 688a57d..e24f26c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
@@ -54,6 +54,9 @@ public class RoomBroadcaster {
                String uid = client.getUid();
                StreamClient rcl = 
Application.get().updateClient(getClient(uid), true);
                log.debug("-----------  sendUpdatedClient ");
+               // Notify all clients of the same scope (room)
+               update(client);
+               broadcast(client.getRoomId(), "clientUpdated", rcl);
 
                if (rcl == null) {
                        return;
@@ -61,8 +64,5 @@ public class RoomBroadcaster {
 
                // Put the mod-flag to true for this client
                getBean(ISessionManager.class).update(rcl);
-               // Notify all clients of the same scope (room)
-               broadcast(client.getRoomId(), "clientUpdated", rcl);
-               update(client);
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index c34b54e..1d5dca7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -404,7 +404,7 @@ public class RoomPanel extends BasePanel {
                                        case newStream:
                                        {
                                                JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
-                                               boolean share = 
obj.optBoolean("screenShare", false);
+                                               Client.Type type = 
Client.Type.valueOf(obj.getString("type"));
                                                String uid = 
obj.getString("uid");
                                                Client c = getOnlineClient(uid);
                                                if (c == null) {
@@ -423,7 +423,7 @@ public class RoomPanel extends BasePanel {
                                                        
handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
                                                }
                                                if 
(getClient().getSid().equals(c.getSid())) {
-                                                       c.addStream(uid, 
streamId, broadcastId, share);
+                                                       c.addStream(uid, 
streamId, broadcastId, type);
                                                }
                                        }
                                                break;
@@ -672,8 +672,8 @@ public class RoomPanel extends BasePanel {
        }
 
        public void broadcast(Client client) {
-               WebSocketHelper.sendRoom(new TextRoomMessage(getRoom().getId(), 
getUserId(), RoomMessage.Type.rightUpdated, client.getUid()));
                RoomBroadcaster.sendUpdatedClient(client);
+               WebSocketHelper.sendRoom(new TextRoomMessage(getRoom().getId(), 
getUserId(), RoomMessage.Type.rightUpdated, client.getUid()));
        }
 
        public Room getRoom() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 4be5ce0..a78a76e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -394,14 +394,11 @@ public class RoomSidebar extends Panel {
                if (c == null) {
                        return;
                }
-               boolean updated = false;
                if (!activityAllowed(c, a, room.getRoom()) && 
room.getClient().hasRight(Right.moderator)) {
                        if (a == Activity.broadcastA || a == 
Activity.broadcastAV) {
-                               updated = true;
                                c.allow(Room.Right.audio);
                        }
                        if (!room.getRoom().isAudioOnly() && (a == 
Activity.broadcastV || a == Activity.broadcastAV)) {
-                               updated = true;
                                c.allow(Room.Right.video);
                        }
                }
@@ -416,7 +413,6 @@ public class RoomSidebar extends Panel {
                                return;
                        }
                        Pod pod = c.getPod();
-                       updated = true;
                        
c.setPod(getRequest().getRequestParameters().getParameterValue(PARAM_POD).toOptionalInteger());
                        if (pod != null && pod != Pod.none && pod != 
c.getPod()) {
                                //pod has changed, no need to toggle
@@ -424,10 +420,7 @@ public class RoomSidebar extends Panel {
                        } else {
                                c.toggle(a);
                        }
-                       room.broadcast(c);
-               }
-               if (updated) {
-                       Application.update(c);
+                       room.broadcast(c); //will update client
                }
        }
 

Reply via email to