Author: solomax
Date: Thu Mar 31 13:27:59 2016
New Revision: 1737236

URL: http://svn.apache.org/viewvc?rev=1737236&view=rev
Log:
[OPENMEETINGS-1350] cluster is partially fixed

Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
    
openmeetings/application/branches/3.1.x/openmeetings-server/src/main/assembly/components/all.xml
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
    
openmeetings/application/trunk/openmeetings-server/src/main/assembly/components/all.xml
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Thu Mar 31 13:27:59 2016
@@ -140,6 +140,7 @@ public class ScopeApplicationAdapter ext
                        InitializationContainer.initComplete = true;
                        Version.logOMStarted();
                        recordingDao.resetProcessingStatus(); //we are starting 
so all processing recordings are now errors
+                       sessionManager.clearCache(); // 'sticky' clients should 
be cleaned up from DB 
                } catch (Exception err) {
                        log.error("[appStart]", err);
                }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
 Thu Mar 31 13:27:59 2016
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.core.session;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,7 +36,6 @@ import org.apache.openmeetings.db.dto.ba
 import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.Server;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -69,349 +70,258 @@ public class SessionManager implements I
                this.cache = cache;
        }
 
-       private ISessionManager sessionManager = new ISessionManager() {
-               
-               public synchronized Client addClientListItem(String streamId,
-                               String scopeName, Integer remotePort, String 
remoteAddress,
-                               String swfUrl, Server server) {
-                       try {
-
-                               // Store the Connection into a bean and add it 
to the HashMap
-                               Client rcm = new Client();
-                               rcm.setConnectedSince(new Date());
-                               rcm.setStreamid(streamId);
-                               rcm.setScope(scopeName);
-                               long random = System.currentTimeMillis() + new 
BigInteger(256, new Random()).longValue();
-                               
-                               
rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
-                                               
.createPassPhrase(String.valueOf(random).toString()));
-
-                               rcm.setServer(server);
-                               rcm.setUserport(remotePort);
-                               rcm.setUserip(remoteAddress);
-                               rcm.setSwfurl(swfUrl);
-                               rcm.setIsMod(false);
-                               rcm.setCanDraw(new Boolean(false));
-
-                               if (cache.containsKey(null, streamId)) {
-                                       log.error("Tried to add an existing 
Client " + streamId);
-                                       return null;
-                               }
-
-                               cache.put(rcm.getStreamid(), rcm);
-
-                               return rcm;
-                       } catch (Exception err) {
-                               log.error("[addClientListItem]", err);
-                       }
-                       return null;
-               }
-
-               public synchronized Collection<Client> getClients() {
-                       return cache.getClients();
-               }
-               
-               public synchronized Collection<Client> getClientsWithServer() {
-                       return cache.getClientsWithServer();
-               }
-
-               public synchronized Client getClientByStreamId(String streamId, 
Server server) {
-                       try {
-                               if (!cache.containsKey(server, streamId)) {
-                                       log.debug("Tried to get a non existing 
Client " + streamId + " server " + server);
-                                       return null;
-                               }
-                               return cache.get(server, streamId);
-                       } catch (Exception err) {
-                               log.error("[getClientByStreamId]", err);
-                       }
-                       return null;
-               }
-
-               public Client getClientByPublicSID(String publicSID, Server 
server) {
-                       try {
-                               List<Client> list = 
cache.getClientsByPublicSID(server, publicSID);
-                               return list == null || list.isEmpty() ? null : 
list.get(0);
-                       } catch (Exception err) {
-                               log.error("[getClientByPublicSID]", err);
-                       }
-                       return null;
-               }
-               
-               public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID) {
-                       try {
-                               for (Entry<Long,List<Client>> entry : 
cache.getClientsByPublicSID(publicSID).entrySet()) {
-                                       for (Client rcl : entry.getValue()) {
-                                               return new 
ClientSessionInfo(rcl, entry.getKey());
-                                       }
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientByPublicSIDAnyServer]", 
err);
-                       }
-                       return null;
-               }
-
-               public synchronized Client getClientByUserId(Long userId) {
-                       try {
-                               for (Client rcl : 
cache.getClientsByUserId(null, userId)) {
-                                       
-                                       if (rcl.isScreenClient()) {
-                                               continue;
-                                       }
-                                       
-                                       return rcl;
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientByUserId]", err);
-                       }
-                       return null;
-               }
-
-               public synchronized boolean updateAVClientByStreamId(String 
streamId, Client rcm, Server server) {
-                       try {
-                               // get the corresponding user session object 
and update the settings
-                               Client rclUsual = 
getClientByPublicSID(rcm.getPublicSID(), server);
-                               if (rclUsual != null) {
-                                       
rclUsual.setBroadCastID(rcm.getBroadCastID());
-                                       
rclUsual.setAvsettings(rcm.getAvsettings());
-                                       rclUsual.setVHeight(rcm.getVHeight());
-                                       rclUsual.setVWidth(rcm.getVWidth());
-                                       rclUsual.setVX(rcm.getVX());
-                                       rclUsual.setVY(rcm.getVY());
-                                       Client rclSaved = cache.get(server, 
rclUsual.getStreamid());
-                                       if (rclSaved != null) {
-                                               
cache.put(rclUsual.getStreamid(), rclUsual);
-                                       } else {
-                                               log.debug("Tried to update a 
non existing Client " + rclUsual.getStreamid());
-                                       }
-                               }
-
-                               updateClientByStreamId(streamId, rcm, false, 
server);
-                               return true;
-                       } catch (Exception err) {
-                               log.error("[updateAVClientByStreamId]", err);
-                       }
-                       return false;
-               }
-
-               public synchronized boolean updateClientByStreamId(String 
streamId,
-                               Client rcm, boolean updateRoomCount, Server 
server) {
-                       try {
-                               
-                               Client rclSaved = cache.get(server, streamId);
-                               
-                               if (rclSaved != null) {
-                                       cache.put(streamId, rcm);
-                                       return true;
-                               } else {
-                                       log.debug("Tried to update a non 
existing Client " + streamId);
-                               }
-                       } catch (Exception err) {
-                               log.error("[updateClientByStreamId]", err);
-                       }
-                       return false;
-               }
-
-               public synchronized boolean removeClient(String streamId, 
Server server) {
-                       try {
-                               if (cache.containsKey(server,streamId)) {
-                                       cache.remove(server,streamId);
-                                       return true;
-                               } else {
-                                       log.debug("Tried to remove a non 
existing Client " + streamId);
-                               }
-                       } catch (Exception err) {
-                               log.error("[removeClient]", err);
-                       }
-                       return false;
+       @Override
+       public void clearCache() {
+               cache.clear();
+       }
+       
+       public Client addClientListItem(String streamId, String scopeName,
+                       Integer remotePort, String remoteAddress, String 
swfUrl, Server server) {
+               if (server == null) {
+                       server = serverUtil.getCurrentServer();
                }
+               try {
 
-               public synchronized ArrayList<Client> getClientListByRoom(Long 
roomId) {
-                       ArrayList<Client> roomClientList = new 
ArrayList<Client>();
-                       try {
-
-                               for (Client rcl : 
cache.getClientsByRoomId(roomId)) {
-
-                                       if (rcl.isScreenClient()) {
-                                               continue;
-                                       }
-
-                                       // Only parse really those users out 
that are really a full session object
-                                       // and no pseudo session object like 
the audio/video or screen
-                                       // sharing connection
-                                       roomClientList.add(rcl);
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientListByRoom]", err);
-                       }
-                       return roomClientList;
-               }
-               
-               public synchronized Collection<Client> 
getClientListByRoomAll(Long roomId) {
-                       try {
-                               return cache.getClientsByRoomId(roomId);
-                       } catch (Exception err) {
-                               log.error("[getClientListByRoomAll]", err);
-                       }
-                       return null;
-               }
-
-               public synchronized List<Client> getCurrentModeratorByRoom(Long 
room_id) {
-                       List<Client> rclList = new LinkedList<Client>();
-                       List<Client> currentClients = 
this.getClientListByRoom(room_id);
-                       for (Client rcl : currentClients) {
-                               if (rcl.getIsMod()) {
-                                       rclList.add(rcl);
-                               }
-                       }
+                       // Store the Connection into a bean and add it to the 
HashMap
+                       Client rcm = new Client();
+                       rcm.setConnectedSince(new Date());
+                       rcm.setStreamid(streamId);
+                       rcm.setScope(scopeName);
+                       long random = System.currentTimeMillis() + new 
BigInteger(256, new Random()).longValue();
+                       
+                       rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
+                                       
.createPassPhrase(String.valueOf(random).toString()));
 
-                       return rclList;
-               }
+                       rcm.setServer(server);
+                       rcm.setUserport(remotePort);
+                       rcm.setUserip(remoteAddress);
+                       rcm.setSwfurl(swfUrl);
+                       rcm.setIsMod(false);
+                       rcm.setCanDraw(new Boolean(false));
 
-               // FIXME not sorted
-               public synchronized SearchResult<Client> getListByStartAndMax(
-                               int start, int max, String orderby, boolean 
asc) {
-                       SearchResult<Client> sResult = new 
SearchResult<Client>();
-                       sResult.setObjectName(Client.class.getName());
-                       sResult.setRecords(Long.valueOf(cache.size()));
-                       sResult.setResult(cache.getClientsWithServer());
-                       return sResult;
-               }
-
-               public long getRecordingCount(long roomId) {
-                       List<Client> currentClients = 
this.getClientListByRoom(roomId);
-                       int numberOfRecordingUsers = 0;
-                       for (Client rcl : currentClients) {
-                               if (rcl.isStartRecording()) {
-                                       numberOfRecordingUsers++;
-                               }
+                       if (cache.containsKey(null, streamId)) {
+                               log.error("Tried to add an existing Client " + 
streamId);
+                               return null;
                        }
-                       return numberOfRecordingUsers;
-               }
 
-               public long getPublishingCount(long roomId) {
-                       List<Client> currentClients = 
this.getClientListByRoom(roomId);
-                       int numberOfPublishingUsers = 0;
-                       for (Client rcl : currentClients) {
-                               if (rcl.isStreamPublishStarted()) {
-                                       numberOfPublishingUsers++;
-                               }
-                       }
-                       return numberOfPublishingUsers;
-               }
-               
-               public List<Long> getActiveRoomIdsByServer(Server server) {
-                       return cache.getRoomsIdsByServer(server);
-               }
-               
-               
-               public String getSessionStatistics() {
-                       return 
cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
-               }
+                       cache.put(rcm.getStreamid(), rcm);
 
-               public void sessionStart() {
-                       // TODO Auto-generated method stub
-                       
-               }
-               
-       };
-       
-       public Client addClientListItem(String streamId, String scopeName,
-                       Integer remotePort, String remoteAddress, String 
swfUrl, Server server) {
-               if (server == null) {
-                       server = serverUtil.getCurrentServer();
+                       return rcm;
+               } catch (Exception err) {
+                       log.error("[addClientListItem]", err);
                }
-               return sessionManager.addClientListItem(streamId, scopeName, 
remotePort, remoteAddress, swfUrl, server);
+               return null;
        }
 
        public Collection<Client> getClients() {
-               return sessionManager.getClients();
+               return cache.getClients();
        }
        
        public Collection<Client> getClientsWithServer() {
-               return sessionManager.getClientsWithServer();
+               return cache.getClientsWithServer();
        }
 
        public Client getClientByStreamId(String streamId, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.getClientByStreamId(streamId, server);
+               try {
+                       if (!cache.containsKey(server, streamId)) {
+                               log.debug("Tried to get a non existing Client " 
+ streamId + " server " + server);
+                               return null;
+                       }
+                       return cache.get(server, streamId);
+               } catch (Exception err) {
+                       log.error("[getClientByStreamId]", err);
+               }
+               return null;
        }
 
        public Client getClientByPublicSID(String publicSID, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.getClientByPublicSID(publicSID, server);
+               try {
+                       List<Client> list = cache.getClientsByPublicSID(server, 
publicSID);
+                       return list == null || list.isEmpty() ? null : 
list.get(0);
+               } catch (Exception err) {
+                       log.error("[getClientByPublicSID]", err);
+               }
+               return null;
        }
 
        public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID) {
-               return sessionManager.getClientByPublicSIDAnyServer(publicSID);
+               try {
+                       for (Entry<Long,List<Client>> entry : 
cache.getClientsByPublicSID(publicSID).entrySet()) {
+                               for (Client rcl : entry.getValue()) {
+                                       return new ClientSessionInfo(rcl, 
entry.getKey());
+                               }
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientByPublicSIDAnyServer]", err);
+               }
+               return null;
        }
 
        public Client getClientByUserId(Long userId) {
-               return sessionManager.getClientByUserId(userId);
+               try {
+                       for (Client rcl : cache.getClientsByUserId(null, 
userId)) {
+                               if (rcl.isScreenClient()) {
+                                       continue;
+                               }
+                               
+                               return rcl;
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientByUserId]", err);
+               }
+               return null;
        }
 
        public boolean updateAVClientByStreamId(String streamId, Client rcm, 
Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.updateAVClientByStreamId(streamId, rcm, 
server);
+               try {
+                       // get the corresponding user session object and update 
the settings
+                       Client rclUsual = 
getClientByPublicSID(rcm.getPublicSID(), server);
+                       if (rclUsual != null) {
+                               rclUsual.setBroadCastID(rcm.getBroadCastID());
+                               rclUsual.setAvsettings(rcm.getAvsettings());
+                               rclUsual.setVHeight(rcm.getVHeight());
+                               rclUsual.setVWidth(rcm.getVWidth());
+                               rclUsual.setVX(rcm.getVX());
+                               rclUsual.setVY(rcm.getVY());
+                               Client rclSaved = cache.get(server, 
rclUsual.getStreamid());
+                               if (rclSaved != null) {
+                                       cache.put(rclUsual.getStreamid(), 
rclUsual);
+                               } else {
+                                       log.debug("Tried to update a non 
existing Client " + rclUsual.getStreamid());
+                               }
+                       }
+
+                       updateClientByStreamId(streamId, rcm, false, server);
+                       return true;
+               } catch (Exception err) {
+                       log.error("[updateAVClientByStreamId]", err);
+               }
+               return false;
        }
 
-       public boolean updateClientByStreamId(String streamId, Client rcm,
-                       boolean updateRoomCount, Server server) {
+       public boolean updateClientByStreamId(String streamId, Client rcm, 
boolean updateRoomCount, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.updateClientByStreamId(streamId, rcm,
-                               updateRoomCount, server);
+               try {
+                       Client rclSaved = cache.get(server, streamId);
+                       
+                       if (rclSaved != null) {
+                               cache.put(streamId, rcm);
+                               return true;
+                       } else {
+                               log.debug("Tried to update a non existing 
Client " + streamId);
+                       }
+               } catch (Exception err) {
+                       log.error("[updateClientByStreamId]", err);
+               }
+               return false;
        }
 
        public boolean removeClient(String streamId, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.removeClient(streamId, server);
+               try {
+                       if (cache.containsKey(server,streamId)) {
+                               cache.remove(server,streamId);
+                               return true;
+                       } else {
+                               log.debug("Tried to remove a non existing 
Client " + streamId);
+                       }
+               } catch (Exception err) {
+                       log.error("[removeClient]", err);
+               }
+               return false;
        }
 
-       public List<Client> getClientListByRoom(Long room_id) {
-               return sessionManager.getClientListByRoom(room_id);
+       public List<Client> getClientListByRoom(Long roomId) {
+               List<Client> roomClientList = new ArrayList<>();
+               try {
+                       for (Client rcl : cache.getClientsByRoomId(roomId)) {
+                               if (rcl.isScreenClient()) {
+                                       continue;
+                               }
+
+                               // Only parse really those users out that are 
really a full session object
+                               // and no pseudo session object like the 
audio/video or screen
+                               // sharing connection
+                               roomClientList.add(rcl);
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientListByRoom]", err);
+               }
+               return roomClientList;
        }
 
-       public Collection<Client> getClientListByRoomAll(Long room_id) {
-               return sessionManager.getClientListByRoomAll(room_id);
+       public Collection<Client> getClientListByRoomAll(Long roomId) {
+               try {
+                       return cache.getClientsByRoomId(roomId);
+               } catch (Exception err) {
+                       log.error("[getClientListByRoomAll]", err);
+               }
+               return null;
        }
 
-       public List<Client> getCurrentModeratorByRoom(Long room_id) {
-               return sessionManager.getCurrentModeratorByRoom(room_id);
+       public List<Client> getCurrentModeratorByRoom(Long roomId) {
+               List<Client> rclList = new LinkedList<>();
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               for (Client rcl : currentClients) {
+                       if (rcl.getIsMod()) {
+                               rclList.add(rcl);
+                       }
+               }
+               return rclList;
        }
 
-       public SearchResult<Client> getListByStartAndMax(int start, int max,
-                       String orderby, boolean asc) {
-               return sessionManager.getListByStartAndMax(start, max, orderby, 
asc);
+       public SearchResult<Client> getListByStartAndMax(int start, int max, 
String orderby, boolean asc) {
+               SearchResult<Client> sResult = new SearchResult<>();
+               sResult.setObjectName(Client.class.getName());
+               sResult.setRecords(Long.valueOf(cache.size()));
+               sResult.setResult(cache.getClientsWithServer());
+               return sResult;
        }
 
        public long getRecordingCount(long roomId) {
-               return sessionManager.getRecordingCount(roomId);
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               int numberOfRecordingUsers = 0;
+               for (Client rcl : currentClients) {
+                       if (rcl.isStartRecording()) {
+                               numberOfRecordingUsers++;
+                       }
+               }
+               return numberOfRecordingUsers;
        }
 
        public long getPublishingCount(long roomId) {
-               return sessionManager.getPublishingCount(roomId);
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               int numberOfPublishingUsers = 0;
+               for (Client rcl : currentClients) {
+                       if (rcl.isStreamPublishStarted()) {
+                               numberOfPublishingUsers++;
+                       }
+               }
+               return numberOfPublishingUsers;
        }
 
        public List<Long> getActiveRoomIdsByServer(Server server) {
-               return sessionManager.getActiveRoomIdsByServer(server == null ? 
serverUtil.getCurrentServer() : server);
+               return cache.getRoomsIdsByServer(server == null ? 
serverUtil.getCurrentServer() : server);
        }
 
        public String getSessionStatistics() {
-               return sessionManager.getSessionStatistics();
+               return 
cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
        }
 
        public void sessionStart() {
-               sessionManager.sessionStart();
+               // TODO Auto-generated method stub
        }
-       
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
 Thu Mar 31 13:27:59 2016
@@ -34,11 +34,8 @@ public class DatabaseStore implements IC
        @Autowired
        private ClientDao clientDao;
        
-       public void clearCache() {
-               
-               //List<Server> serverList = serverDao.getActiveServers();
-               
-               //clientDao.cleanUpClientsWithoutReference();
+       public void clear() {
+               clientDao.cleanAllClients();
        }
        
        public void put(String streamId, Client rcl) {

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
 Thu Mar 31 13:27:59 2016
@@ -18,17 +18,19 @@
  */
 package org.apache.openmeetings.core.session.store;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -48,14 +50,12 @@ import org.slf4j.Logger;
  * 
  */
 public class HashMapStore implements IClientPersistenceStore {
-       protected static final Logger log = Red5LoggerFactory.getLogger(
-                       HashMapStore.class, 
OpenmeetingsVariables.webAppRootKey);
-       
+       protected static final Logger log = 
Red5LoggerFactory.getLogger(HashMapStore.class, webAppRootKey);
        
-       private LinkedHashMap<String, Client> clientsByStreamId = new 
LinkedHashMap<String, Client>();
+       private Map<String, Client> clientsByStreamId = new 
ConcurrentHashMap<>();
 
-       public void clearCache() {
-               clientsByStreamId = new LinkedHashMap<String, Client>();
+       public void clear() {
+               clientsByStreamId = new ConcurrentHashMap<>();
        }
        
        public void put(String streamId, Client rcl) {
@@ -71,8 +71,9 @@ public class HashMapStore implements ICl
        }
        
        public List<Client> getClientsByPublicSID(Server server, String 
publicSID) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getPublicSID().equals(publicSID)) {
                                clientList.add(cl);
                        }
@@ -81,9 +82,10 @@ public class HashMapStore implements ICl
        }
        
        public Map<Long,List<Client>> getClientsByPublicSID(String publicSID) {
-               Map<Long,List<Client>> clientMapList = new 
HashMap<Long,List<Client>>();
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               Map<Long,List<Client>> clientMapList = new HashMap<>();
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getPublicSID().equals(publicSID)) {
                                clientList.add(cl);
                        }
@@ -107,8 +109,9 @@ public class HashMapStore implements ICl
        }
        
        public List<Client> getClientsByUserId(Server server, Long userId) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getUserId().equals(userId)) {
                                clientList.add(cl);
                        }
@@ -117,8 +120,9 @@ public class HashMapStore implements ICl
        }
        
        public  List<Client> getClientsByRoomId(Long roomId) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getRoomId() != null && 
cl.getRoomId().equals(roomId)) {
                                clientList.add(cl);
                        }
@@ -146,7 +150,6 @@ public class HashMapStore implements ICl
                return clientsByStreamId.size();
        }
        
-       
        /**
         * Print some session statistics to the debug out
         * 
@@ -159,12 +162,10 @@ public class HashMapStore implements ICl
        }
 
        public String getDebugInformation(List<DEBUG_DETAILS> detailLevel) {
-
                StringBuilder statistics = new StringBuilder();
 
                if (detailLevel.contains(DEBUG_DETAILS.SIZE)) {
-                       addNewLine(statistics, "Number of sessions Total "
-                                       + getTotalNumberOfSessions());
+                       addNewLine(statistics, "Number of sessions Total " + 
getTotalNumberOfSessions());
                }
 
                return statistics.toString();
@@ -175,8 +176,9 @@ public class HashMapStore implements ICl
        }
 
        public List<Long> getRoomsIdsByServer(Server server) {
-               HashSet<Long> rooms = new HashSet<Long>();
-               for (Client cl : clientsByStreamId.values()) {
+               Set<Long> rooms = new HashSet<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        Long roomId = cl.getRoomId();
                        if (roomId != null && roomId > 0 && 
!rooms.contains(roomId)) {
                                rooms.add(roomId);

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
 Thu Mar 31 13:27:59 2016
@@ -34,14 +34,14 @@ public interface IClientPersistenceStore
        /**
         * called upon start of the session cache
         */
-       public abstract void clearCache();
+       void clear();
 
        /**
         * 
         * @param streamId
         * @param rcl
         */
-       public abstract void put(String streamId, Client rcl);
+       void put(String streamId, Client rcl);
        
        /**
         * 
@@ -49,7 +49,7 @@ public interface IClientPersistenceStore
         * @param streamId
         * @return
         */
-       public boolean containsKey(Server server, String streamId);
+       boolean containsKey(Server server, String streamId);
 
        /**
         * by server and publicSID
@@ -58,7 +58,7 @@ public interface IClientPersistenceStore
         * @param streamId
         * @return will return null if the client does not exist in the list
         */
-       public abstract Client get(Server server, String streamId);
+       Client get(Server server, String streamId);
 
        /**
         * 
@@ -66,8 +66,7 @@ public interface IClientPersistenceStore
         * @param publicSID
         * @return will return an empty list if nothing available
         */
-       public abstract List<Client> getClientsByPublicSID(Server server,
-                       String publicSID);
+       List<Client> getClientsByPublicSID(Server server, String publicSID);
 
        /**
         * Searches for the publicSID across all servers
@@ -75,10 +74,9 @@ public interface IClientPersistenceStore
         * @param publicSID
         * @return will return a map with the serverId as key and the 
RoomClients as list in the value
         */
-       public abstract Map<Long, List<Client>> getClientsByPublicSID(
-                       String publicSID);
+       Map<Long, List<Client>> getClientsByPublicSID(String publicSID);
 
-       public abstract Collection<Client> getClients();
+       Collection<Client> getClients();
        
        /**
         * get all clients by a specific {@link Server}
@@ -86,7 +84,7 @@ public interface IClientPersistenceStore
         * @param server
         * @return will return an empty map if nothing available
         */
-       public abstract Collection<Client> getClientsByServer(Server server);
+       Collection<Client> getClientsByServer(Server server);
 
        /**
         * 
@@ -94,7 +92,7 @@ public interface IClientPersistenceStore
         * @param userId
         * @return will return an empty list if nothing available
         */
-       public abstract Collection<Client> getClientsByUserId(Server server, 
Long userId);
+       Collection<Client> getClientsByUserId(Server server, Long userId);
 
        /**
         * 
@@ -103,15 +101,15 @@ public interface IClientPersistenceStore
         * @param roomId
         * @return will return an empty map if nothing available
         */
-       public abstract List<Client> getClientsByRoomId(Long roomId);
+       List<Client> getClientsByRoomId(Long roomId);
 
-       public abstract void remove(Server server, String streamId);
+       void remove(Server server, String streamId);
 
-       public abstract int size();
+       int size();
 
-       public abstract int sizeByServer(Server server);
+       int sizeByServer(Server server);
 
-       public abstract Collection<Client> values();
+       Collection<Client> values();
        
        /**
         * Get some session statistics
@@ -119,7 +117,7 @@ public interface IClientPersistenceStore
         * @param detailLevel
         * @return
         */
-       public abstract String getDebugInformation(List<DEBUG_DETAILS> 
detailLevel);
+       String getDebugInformation(List<DEBUG_DETAILS> detailLevel);
 
        /**
         * returns a list of roomIds (unique) that are currently active on the 
given server
@@ -129,7 +127,7 @@ public interface IClientPersistenceStore
         * @param server
         * @return
         */
-       public abstract List<Long> getRoomsIdsByServer(Server server);
+       List<Long> getRoomsIdsByServer(Server server);
 
        /**
         * if database cache + cluster is enabled, the server object will be 
loaded 
@@ -137,6 +135,5 @@ public interface IClientPersistenceStore
         * 
         * @return
         */
-       public abstract Collection<Client> getClientsWithServer();
-
-}
\ No newline at end of file
+       Collection<Client> getClientsWithServer();
+}

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
 Thu Mar 31 13:27:59 2016
@@ -34,12 +34,13 @@ import org.apache.openmeetings.db.entity
  *
  */
 public interface ISessionManager {
+       void clearCache();
        
        /**
         * Notified on server start, when the session manager should be started 
and
         * eventually caches cleared/setup
         */
-       public abstract void sessionStart();
+       void sessionStart();
 
        /**
         * add a new client item
@@ -52,18 +53,16 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client addClientListItem(String streamId,
-                       String scopeName, Integer remotePort, String 
remoteAddress,
-                       String swfUrl, Server server);
+       Client addClientListItem(String streamId, String scopeName, Integer 
remotePort, String remoteAddress, String swfUrl, Server server);
 
-       public abstract Collection<Client> getClients();
+       Collection<Client> getClients();
        
        /**
         * loads the server into the client (only if database cache is used)
         * 
         * @return
         */
-       public abstract Collection<Client> getClientsWithServer();
+       Collection<Client> getClientsWithServer();
 
        /**
         * Get a client by its streamId
@@ -72,8 +71,7 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client getClientByStreamId(String streamId,
-                       Server server);
+       Client getClientByStreamId(String streamId, Server server);
 
        /**
         * get a client by its publicSID and the server, 
@@ -82,7 +80,7 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client getClientByPublicSID(String publicSID, Server 
server);
+       Client getClientByPublicSID(String publicSID, Server server);
        
        /**
         * same as {@link #getClientByPublicSID(String, boolean, Server)} but 
it ignores 
@@ -95,7 +93,7 @@ public interface ISessionManager {
         * @param publicSID
         * @return
         */
-       public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID);
+       ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID);
 
        /**
         * 
@@ -105,7 +103,7 @@ public interface ISessionManager {
         * @deprecated There could be multiple users logged in with the same 
userid,
         *             then this call would return a list not a single user
         */
-       public abstract Client getClientByUserId(Long userId);
+       Client getClientByUserId(Long userId);
 
        /**
         * Update the session object of the audio/video-connection and 
additionally
@@ -116,7 +114,7 @@ public interface ISessionManager {
         * @param rcm
         * @return
         */
-       public abstract boolean updateAVClientByStreamId(String streamId, 
Client rcm, Server server);
+       boolean updateAVClientByStreamId(String streamId, Client rcm, Server 
server);
 
        /**
         * Update the session object
@@ -131,8 +129,7 @@ public interface ISessionManager {
         *            true means the count for the room has to be updated
         * @return
         */
-       public abstract boolean updateClientByStreamId(String streamId,
-                       Client rcm, boolean updateRoomCount, Server server);
+       boolean updateClientByStreamId(String streamId, Client rcm, boolean 
updateRoomCount, Server server);
 
        /**
         * Remove a client from the session store
@@ -140,7 +137,7 @@ public interface ISessionManager {
         * @param streamId
         * @return
         */
-       public abstract boolean removeClient(String streamId, Server server);
+       boolean removeClient(String streamId, Server server);
 
        /**
         * Get all ClientList Objects of that room and domain This Function is
@@ -150,9 +147,9 @@ public interface ISessionManager {
         * @param roomId 
         * @return
         */
-       public abstract List<Client> getClientListByRoom(Long roomId);
+       List<Client> getClientListByRoom(Long roomId);
        
-       public abstract Collection<Client> getClientListByRoomAll(Long roomId);
+       Collection<Client> getClientListByRoomAll(Long roomId);
 
        /**
         * get the current Moderator in this room
@@ -160,7 +157,7 @@ public interface ISessionManager {
         * @param roomname
         * @return
         */
-       public abstract List<Client> getCurrentModeratorByRoom(Long roomId);
+       List<Client> getCurrentModeratorByRoom(Long roomId);
 
        /**
         * Get list of current client sessions
@@ -171,8 +168,7 @@ public interface ISessionManager {
         * @param asc
         * @return
         */
-       public abstract SearchResult<Client> getListByStartAndMax(int start,
-                       int max, String orderby, boolean asc);
+       SearchResult<Client> getListByStartAndMax(int start, int max, String 
orderby, boolean asc);
 
        /**
         * returns number of current users recording
@@ -180,7 +176,7 @@ public interface ISessionManager {
         * @param roomId
         * @return
         */
-       public abstract long getRecordingCount(long roomId);
+       long getRecordingCount(long roomId);
 
        /**
         * returns a number of current users publishing screensharing
@@ -188,7 +184,7 @@ public interface ISessionManager {
         * @param roomId
         * @return
         */
-       public abstract long getPublishingCount(long roomId);
+       long getPublishingCount(long roomId);
        
        /**
         * Get a list of all servers of all rooms on that server, serverId = 
null 
@@ -197,13 +193,12 @@ public interface ISessionManager {
         * @param server
         * @return a set, a roomId can be only one time in this list
         */
-       public abstract List<Long> getActiveRoomIdsByServer(Server server);
+       List<Long> getActiveRoomIdsByServer(Server server);
 
        /**
         * Get some statistics about the current sessions
         * 
         * @return
         */
-       public abstract String getSessionStatistics();
-
-}
\ No newline at end of file
+       String getSessionStatistics();
+}

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-server/src/main/assembly/components/all.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-server/src/main/assembly/components/all.xml?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-server/src/main/assembly/components/all.xml
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-server/src/main/assembly/components/all.xml
 Thu Mar 31 13:27:59 2016
@@ -99,7 +99,6 @@
                                <exclude>WEB-INF/lib/commons-codec*</exclude>
                                
<exclude>WEB-INF/lib/commons-collections-*</exclude>
                                <exclude>WEB-INF/lib/commons-lang3*</exclude>
-                               <exclude>WEB-INF/lib/commons-pool-*</exclude>
                        </excludes>
                </fileSet>
                <fileSet>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 Thu Mar 31 13:27:59 2016
@@ -152,7 +152,7 @@ public class ConnectionsPanel extends Ad
                        @Override
                        protected void populateItem(final 
Item<org.apache.openmeetings.web.app.Client> item) {
                                org.apache.openmeetings.web.app.Client c = 
item.getModelObject();
-                               item.add(new Label("id", c.getUserId()));
+                               item.add(new Label("id", ""));
                                User u = 
getBean(UserService.class).getUserById(getSid(), c.getUserId());
                                item.add(new Label("login", u == null ? null : 
u.getLogin()));
                                item.add(new Label("since", 
c.getConnectedSince()));

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 Thu Mar 31 13:27:59 2016
@@ -66,23 +66,22 @@
        </bean>
        <bean id="openmeetings.EmoticonsManager" 
class="org.apache.openmeetings.core.data.whiteboard.EmoticonsManager" />
 
-       <!-- Singletons for memory based cache -->
+       <!-- Singleton for memory based cache -->
        <bean id="openmeetings.HashMapStore" scope="singleton" 
class="org.apache.openmeetings.core.session.store.HashMapStore" />
+       <!-- Database cache -->
+       <bean id="openmeetings.DatabaseStore" 
class="org.apache.openmeetings.core.session.store.DatabaseStore" />
+       
        <bean id="whiteBoardObjectListManagerById" scope="singleton" 
class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById"
 />
        <!-- WhiteBoardObjectSyncManager can stay in the memory, even on 
cluster! -->
        <bean id="whiteBoardObjectSyncManager" scope="singleton" 
class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager"
 />
 
-       <!-- Database cache -->
-       <bean id="openmeetings.DatabaseStore" 
class="org.apache.openmeetings.core.session.store.DatabaseStore" />
-
+       <!-- Cluster related config start -->
        <bean id="openmeetings.ServerUtil" scope="singleton" 
class="org.apache.openmeetings.core.session.ServerUtil">
                <!-- Need to be uncommented and set to the real ID if in 
cluster mode
                <property name="serverId" value="1" />
                -->
        </bean>
 
-       <!-- Cluster related config start -->
-
        <!-- Start of Services -->
        <bean id="xmlcrm.service" 
class="org.apache.openmeetings.core.remote.MainService" />
        <bean id="printservice.service" 
class="org.apache.openmeetings.core.remote.PrintService" />

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
 Thu Mar 31 13:27:59 2016
@@ -48,7 +48,7 @@ public class TestHashMapSession extends
        public void testHashMapSession() {
                
                //make sure the cache is empty before starting the test
-               cache.clearCache();
+               cache.clear();
                
                for (int i=0;i<20;i++) {
                        

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Thu Mar 31 13:27:59 2016
@@ -131,6 +131,7 @@ public class ScopeApplicationAdapter ext
                        InitializationContainer.initComplete = true;
                        Version.logOMStarted();
                        recordingDao.resetProcessingStatus(); //we are starting 
so all processing recordings are now errors
+                       sessionManager.clearCache(); // 'sticky' clients should 
be cleaned up from DB 
                } catch (Exception err) {
                        log.error("[appStart]", err);
                }

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java
 Thu Mar 31 13:27:59 2016
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.core.session;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,7 +36,6 @@ import org.apache.openmeetings.db.dto.ba
 import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.Server;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -69,349 +70,258 @@ public class SessionManager implements I
                this.cache = cache;
        }
 
-       private ISessionManager sessionManager = new ISessionManager() {
-               
-               public synchronized Client addClientListItem(String streamId,
-                               String scopeName, Integer remotePort, String 
remoteAddress,
-                               String swfUrl, Server server) {
-                       try {
-
-                               // Store the Connection into a bean and add it 
to the HashMap
-                               Client rcm = new Client();
-                               rcm.setConnectedSince(new Date());
-                               rcm.setStreamid(streamId);
-                               rcm.setScope(scopeName);
-                               long random = System.currentTimeMillis() + new 
BigInteger(256, new Random()).longValue();
-                               
-                               
rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
-                                               
.createPassPhrase(String.valueOf(random).toString()));
-
-                               rcm.setServer(server);
-                               rcm.setUserport(remotePort);
-                               rcm.setUserip(remoteAddress);
-                               rcm.setSwfurl(swfUrl);
-                               rcm.setIsMod(false);
-                               rcm.setCanDraw(new Boolean(false));
-
-                               if (cache.containsKey(null, streamId)) {
-                                       log.error("Tried to add an existing 
Client " + streamId);
-                                       return null;
-                               }
-
-                               cache.put(rcm.getStreamid(), rcm);
-
-                               return rcm;
-                       } catch (Exception err) {
-                               log.error("[addClientListItem]", err);
-                       }
-                       return null;
-               }
-
-               public synchronized Collection<Client> getClients() {
-                       return cache.getClients();
-               }
-               
-               public synchronized Collection<Client> getClientsWithServer() {
-                       return cache.getClientsWithServer();
-               }
-
-               public synchronized Client getClientByStreamId(String streamId, 
Server server) {
-                       try {
-                               if (!cache.containsKey(server, streamId)) {
-                                       log.debug("Tried to get a non existing 
Client " + streamId + " server " + server);
-                                       return null;
-                               }
-                               return cache.get(server, streamId);
-                       } catch (Exception err) {
-                               log.error("[getClientByStreamId]", err);
-                       }
-                       return null;
-               }
-
-               public Client getClientByPublicSID(String publicSID, Server 
server) {
-                       try {
-                               List<Client> list = 
cache.getClientsByPublicSID(server, publicSID);
-                               return list == null || list.isEmpty() ? null : 
list.get(0);
-                       } catch (Exception err) {
-                               log.error("[getClientByPublicSID]", err);
-                       }
-                       return null;
-               }
-               
-               public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID) {
-                       try {
-                               for (Entry<Long,List<Client>> entry : 
cache.getClientsByPublicSID(publicSID).entrySet()) {
-                                       for (Client rcl : entry.getValue()) {
-                                               return new 
ClientSessionInfo(rcl, entry.getKey());
-                                       }
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientByPublicSIDAnyServer]", 
err);
-                       }
-                       return null;
-               }
-
-               public synchronized Client getClientByUserId(Long userId) {
-                       try {
-                               for (Client rcl : 
cache.getClientsByUserId(null, userId)) {
-                                       
-                                       if (rcl.isScreenClient()) {
-                                               continue;
-                                       }
-                                       
-                                       return rcl;
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientByUserId]", err);
-                       }
-                       return null;
-               }
-
-               public synchronized boolean updateAVClientByStreamId(String 
streamId, Client rcm, Server server) {
-                       try {
-                               // get the corresponding user session object 
and update the settings
-                               Client rclUsual = 
getClientByPublicSID(rcm.getPublicSID(), server);
-                               if (rclUsual != null) {
-                                       
rclUsual.setBroadCastID(rcm.getBroadCastID());
-                                       
rclUsual.setAvsettings(rcm.getAvsettings());
-                                       rclUsual.setVHeight(rcm.getVHeight());
-                                       rclUsual.setVWidth(rcm.getVWidth());
-                                       rclUsual.setVX(rcm.getVX());
-                                       rclUsual.setVY(rcm.getVY());
-                                       Client rclSaved = cache.get(server, 
rclUsual.getStreamid());
-                                       if (rclSaved != null) {
-                                               
cache.put(rclUsual.getStreamid(), rclUsual);
-                                       } else {
-                                               log.debug("Tried to update a 
non existing Client " + rclUsual.getStreamid());
-                                       }
-                               }
-
-                               updateClientByStreamId(streamId, rcm, false, 
server);
-                               return true;
-                       } catch (Exception err) {
-                               log.error("[updateAVClientByStreamId]", err);
-                       }
-                       return false;
-               }
-
-               public synchronized boolean updateClientByStreamId(String 
streamId,
-                               Client rcm, boolean updateRoomCount, Server 
server) {
-                       try {
-                               
-                               Client rclSaved = cache.get(server, streamId);
-                               
-                               if (rclSaved != null) {
-                                       cache.put(streamId, rcm);
-                                       return true;
-                               } else {
-                                       log.debug("Tried to update a non 
existing Client " + streamId);
-                               }
-                       } catch (Exception err) {
-                               log.error("[updateClientByStreamId]", err);
-                       }
-                       return false;
-               }
-
-               public synchronized boolean removeClient(String streamId, 
Server server) {
-                       try {
-                               if (cache.containsKey(server,streamId)) {
-                                       cache.remove(server,streamId);
-                                       return true;
-                               } else {
-                                       log.debug("Tried to remove a non 
existing Client " + streamId);
-                               }
-                       } catch (Exception err) {
-                               log.error("[removeClient]", err);
-                       }
-                       return false;
-               }
-
-               public synchronized ArrayList<Client> getClientListByRoom(Long 
roomId) {
-                       ArrayList<Client> roomClientList = new 
ArrayList<Client>();
-                       try {
-
-                               for (Client rcl : 
cache.getClientsByRoomId(roomId)) {
-
-                                       if (rcl.isScreenClient()) {
-                                               continue;
-                                       }
-
-                                       // Only parse really those users out 
that are really a full session object
-                                       // and no pseudo session object like 
the audio/video or screen
-                                       // sharing connection
-                                       roomClientList.add(rcl);
-                               }
-                       } catch (Exception err) {
-                               log.error("[getClientListByRoom]", err);
-                       }
-                       return roomClientList;
-               }
+       @Override
+       public void clearCache() {
+               cache.clear();
+       }
                
-               public synchronized Collection<Client> 
getClientListByRoomAll(Long roomId) {
-                       try {
-                               return cache.getClientsByRoomId(roomId);
-                       } catch (Exception err) {
-                               log.error("[getClientListByRoomAll]", err);
-                       }
-                       return null;
+       public Client addClientListItem(String streamId, String scopeName,
+                       Integer remotePort, String remoteAddress, String 
swfUrl, Server server) {
+               if (server == null) {
+                       server = serverUtil.getCurrentServer();
                }
+               try {
 
-               public synchronized List<Client> getCurrentModeratorByRoom(Long 
room_id) {
-                       List<Client> rclList = new LinkedList<Client>();
-                       List<Client> currentClients = 
this.getClientListByRoom(room_id);
-                       for (Client rcl : currentClients) {
-                               if (rcl.getIsMod()) {
-                                       rclList.add(rcl);
-                               }
-                       }
+                       // Store the Connection into a bean and add it to the 
HashMap
+                       Client rcm = new Client();
+                       rcm.setConnectedSince(new Date());
+                       rcm.setStreamid(streamId);
+                       rcm.setScope(scopeName);
+                       long random = System.currentTimeMillis() + new 
BigInteger(256, new Random()).longValue();
+                       
+                       rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
+                                       
.createPassPhrase(String.valueOf(random).toString()));
 
-                       return rclList;
-               }
+                       rcm.setServer(server);
+                       rcm.setUserport(remotePort);
+                       rcm.setUserip(remoteAddress);
+                       rcm.setSwfurl(swfUrl);
+                       rcm.setIsMod(false);
+                       rcm.setCanDraw(new Boolean(false));
 
-               // FIXME not sorted
-               public synchronized SearchResult<Client> getListByStartAndMax(
-                               int start, int max, String orderby, boolean 
asc) {
-                       SearchResult<Client> sResult = new 
SearchResult<Client>();
-                       sResult.setObjectName(Client.class.getName());
-                       sResult.setRecords(Long.valueOf(cache.size()));
-                       sResult.setResult(cache.getClientsWithServer());
-                       return sResult;
-               }
-
-               public long getRecordingCount(long roomId) {
-                       List<Client> currentClients = 
this.getClientListByRoom(roomId);
-                       int numberOfRecordingUsers = 0;
-                       for (Client rcl : currentClients) {
-                               if (rcl.isStartRecording()) {
-                                       numberOfRecordingUsers++;
-                               }
+                       if (cache.containsKey(null, streamId)) {
+                               log.error("Tried to add an existing Client " + 
streamId);
+                               return null;
                        }
-                       return numberOfRecordingUsers;
-               }
 
-               public long getPublishingCount(long roomId) {
-                       List<Client> currentClients = 
this.getClientListByRoom(roomId);
-                       int numberOfPublishingUsers = 0;
-                       for (Client rcl : currentClients) {
-                               if (rcl.isStreamPublishStarted()) {
-                                       numberOfPublishingUsers++;
-                               }
-                       }
-                       return numberOfPublishingUsers;
-               }
-               
-               public List<Long> getActiveRoomIdsByServer(Server server) {
-                       return cache.getRoomsIdsByServer(server);
-               }
-               
-               
-               public String getSessionStatistics() {
-                       return 
cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
-               }
+                       cache.put(rcm.getStreamid(), rcm);
 
-               public void sessionStart() {
-                       // TODO Auto-generated method stub
-                       
-               }
-               
-       };
-       
-       public Client addClientListItem(String streamId, String scopeName,
-                       Integer remotePort, String remoteAddress, String 
swfUrl, Server server) {
-               if (server == null) {
-                       server = serverUtil.getCurrentServer();
+                       return rcm;
+               } catch (Exception err) {
+                       log.error("[addClientListItem]", err);
                }
-               return sessionManager.addClientListItem(streamId, scopeName, 
remotePort, remoteAddress, swfUrl, server);
+               return null;
        }
 
        public Collection<Client> getClients() {
-               return sessionManager.getClients();
+               return cache.getClients();
        }
        
        public Collection<Client> getClientsWithServer() {
-               return sessionManager.getClientsWithServer();
+               return cache.getClientsWithServer();
        }
 
        public Client getClientByStreamId(String streamId, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.getClientByStreamId(streamId, server);
+               try {
+                       if (!cache.containsKey(server, streamId)) {
+                               log.debug("Tried to get a non existing Client " 
+ streamId + " server " + server);
+                               return null;
+                       }
+                       return cache.get(server, streamId);
+               } catch (Exception err) {
+                       log.error("[getClientByStreamId]", err);
+               }
+               return null;
        }
 
        public Client getClientByPublicSID(String publicSID, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.getClientByPublicSID(publicSID, server);
+               try {
+                       List<Client> list = cache.getClientsByPublicSID(server, 
publicSID);
+                       return list == null || list.isEmpty() ? null : 
list.get(0);
+               } catch (Exception err) {
+                       log.error("[getClientByPublicSID]", err);
+               }
+               return null;
        }
 
        public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID) {
-               return sessionManager.getClientByPublicSIDAnyServer(publicSID);
+               try {
+                       for (Entry<Long,List<Client>> entry : 
cache.getClientsByPublicSID(publicSID).entrySet()) {
+                               for (Client rcl : entry.getValue()) {
+                                       return new ClientSessionInfo(rcl, 
entry.getKey());
+                               }
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientByPublicSIDAnyServer]", err);
+               }
+               return null;
        }
 
        public Client getClientByUserId(Long userId) {
-               return sessionManager.getClientByUserId(userId);
+               try {
+                       for (Client rcl : cache.getClientsByUserId(null, 
userId)) {
+                               if (rcl.isScreenClient()) {
+                                       continue;
+                               }
+                               
+                               return rcl;
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientByUserId]", err);
+               }
+               return null;
        }
 
        public boolean updateAVClientByStreamId(String streamId, Client rcm, 
Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.updateAVClientByStreamId(streamId, rcm, 
server);
+               try {
+                       // get the corresponding user session object and update 
the settings
+                       Client rclUsual = 
getClientByPublicSID(rcm.getPublicSID(), server);
+                       if (rclUsual != null) {
+                               rclUsual.setBroadCastID(rcm.getBroadCastID());
+                               rclUsual.setAvsettings(rcm.getAvsettings());
+                               rclUsual.setVHeight(rcm.getVHeight());
+                               rclUsual.setVWidth(rcm.getVWidth());
+                               rclUsual.setVX(rcm.getVX());
+                               rclUsual.setVY(rcm.getVY());
+                               Client rclSaved = cache.get(server, 
rclUsual.getStreamid());
+                               if (rclSaved != null) {
+                                       cache.put(rclUsual.getStreamid(), 
rclUsual);
+                               } else {
+                                       log.debug("Tried to update a non 
existing Client " + rclUsual.getStreamid());
+                               }
+                       }
+
+                       updateClientByStreamId(streamId, rcm, false, server);
+                       return true;
+               } catch (Exception err) {
+                       log.error("[updateAVClientByStreamId]", err);
+               }
+               return false;
        }
 
-       public boolean updateClientByStreamId(String streamId, Client rcm,
-                       boolean updateRoomCount, Server server) {
+       public boolean updateClientByStreamId(String streamId, Client rcm, 
boolean updateRoomCount, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.updateClientByStreamId(streamId, rcm,
-                               updateRoomCount, server);
+               try {
+                       Client rclSaved = cache.get(server, streamId);
+                       
+                       if (rclSaved != null) {
+                               cache.put(streamId, rcm);
+                               return true;
+                       } else {
+                               log.debug("Tried to update a non existing 
Client " + streamId);
+                       }
+               } catch (Exception err) {
+                       log.error("[updateClientByStreamId]", err);
+               }
+               return false;
        }
 
        public boolean removeClient(String streamId, Server server) {
                if (server == null) {
                        server = serverUtil.getCurrentServer();
                }
-               return sessionManager.removeClient(streamId, server);
+               try {
+                       if (cache.containsKey(server,streamId)) {
+                               cache.remove(server,streamId);
+                               return true;
+                       } else {
+                               log.debug("Tried to remove a non existing 
Client " + streamId);
+                       }
+               } catch (Exception err) {
+                       log.error("[removeClient]", err);
+               }
+               return false;
        }
 
-       public List<Client> getClientListByRoom(Long room_id) {
-               return sessionManager.getClientListByRoom(room_id);
+       public List<Client> getClientListByRoom(Long roomId) {
+               List<Client> roomClientList = new ArrayList<>();
+               try {
+                       for (Client rcl : cache.getClientsByRoomId(roomId)) {
+                               if (rcl.isScreenClient()) {
+                                       continue;
+                               }
+
+                               // Only parse really those users out that are 
really a full session object
+                               // and no pseudo session object like the 
audio/video or screen
+                               // sharing connection
+                               roomClientList.add(rcl);
+                       }
+               } catch (Exception err) {
+                       log.error("[getClientListByRoom]", err);
+               }
+               return roomClientList;
        }
 
-       public Collection<Client> getClientListByRoomAll(Long room_id) {
-               return sessionManager.getClientListByRoomAll(room_id);
+       public Collection<Client> getClientListByRoomAll(Long roomId) {
+               try {
+                       return cache.getClientsByRoomId(roomId);
+               } catch (Exception err) {
+                       log.error("[getClientListByRoomAll]", err);
+               }
+               return null;
        }
 
-       public List<Client> getCurrentModeratorByRoom(Long room_id) {
-               return sessionManager.getCurrentModeratorByRoom(room_id);
+       public List<Client> getCurrentModeratorByRoom(Long roomId) {
+               List<Client> rclList = new LinkedList<>();
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               for (Client rcl : currentClients) {
+                       if (rcl.getIsMod()) {
+                               rclList.add(rcl);
+                       }
+               }
+               return rclList;
        }
 
-       public SearchResult<Client> getListByStartAndMax(int start, int max,
-                       String orderby, boolean asc) {
-               return sessionManager.getListByStartAndMax(start, max, orderby, 
asc);
+       public SearchResult<Client> getListByStartAndMax(int start, int max, 
String orderby, boolean asc) {
+               SearchResult<Client> sResult = new SearchResult<>();
+               sResult.setObjectName(Client.class.getName());
+               sResult.setRecords(Long.valueOf(cache.size()));
+               sResult.setResult(cache.getClientsWithServer());
+               return sResult;
        }
 
        public long getRecordingCount(long roomId) {
-               return sessionManager.getRecordingCount(roomId);
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               int numberOfRecordingUsers = 0;
+               for (Client rcl : currentClients) {
+                       if (rcl.isStartRecording()) {
+                               numberOfRecordingUsers++;
+                       }
+               }
+               return numberOfRecordingUsers;
        }
 
        public long getPublishingCount(long roomId) {
-               return sessionManager.getPublishingCount(roomId);
+               List<Client> currentClients = this.getClientListByRoom(roomId);
+               int numberOfPublishingUsers = 0;
+               for (Client rcl : currentClients) {
+                       if (rcl.isStreamPublishStarted()) {
+                               numberOfPublishingUsers++;
+                       }
+               }
+               return numberOfPublishingUsers;
        }
 
        public List<Long> getActiveRoomIdsByServer(Server server) {
-               return sessionManager.getActiveRoomIdsByServer(server == null ? 
serverUtil.getCurrentServer() : server);
+               return cache.getRoomsIdsByServer(server == null ? 
serverUtil.getCurrentServer() : server);
        }
 
        public String getSessionStatistics() {
-               return sessionManager.getSessionStatistics();
+               return 
cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
        }
 
        public void sessionStart() {
-               sessionManager.sessionStart();
+               // TODO Auto-generated method stub
        }
-       
 }

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/DatabaseStore.java
 Thu Mar 31 13:27:59 2016
@@ -34,11 +34,8 @@ public class DatabaseStore implements IC
        @Autowired
        private ClientDao clientDao;
        
-       public void clearCache() {
-               
-               //List<Server> serverList = serverDao.getActiveServers();
-               
-               //clientDao.cleanUpClientsWithoutReference();
+       public void clear() {
+               clientDao.cleanAllClients();
        }
        
        public void put(String streamId, Client rcl) {

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/HashMapStore.java
 Thu Mar 31 13:27:59 2016
@@ -18,17 +18,19 @@
  */
 package org.apache.openmeetings.core.session.store;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -48,14 +50,12 @@ import org.slf4j.Logger;
  * 
  */
 public class HashMapStore implements IClientPersistenceStore {
-       protected static final Logger log = Red5LoggerFactory.getLogger(
-                       HashMapStore.class, 
OpenmeetingsVariables.webAppRootKey);
+       protected static final Logger log = 
Red5LoggerFactory.getLogger(HashMapStore.class, webAppRootKey);
        
+       private Map<String, Client> clientsByStreamId = new 
ConcurrentHashMap<>();
        
-       private LinkedHashMap<String, Client> clientsByStreamId = new 
LinkedHashMap<String, Client>();
-
-       public void clearCache() {
-               clientsByStreamId = new LinkedHashMap<String, Client>();
+       public void clear() {
+               clientsByStreamId = new ConcurrentHashMap<>();
        }
        
        public void put(String streamId, Client rcl) {
@@ -71,8 +71,9 @@ public class HashMapStore implements ICl
        }
        
        public List<Client> getClientsByPublicSID(Server server, String 
publicSID) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getPublicSID().equals(publicSID)) {
                                clientList.add(cl);
                        }
@@ -81,9 +82,10 @@ public class HashMapStore implements ICl
        }
        
        public Map<Long,List<Client>> getClientsByPublicSID(String publicSID) {
-               Map<Long,List<Client>> clientMapList = new 
HashMap<Long,List<Client>>();
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               Map<Long,List<Client>> clientMapList = new HashMap<>();
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getPublicSID().equals(publicSID)) {
                                clientList.add(cl);
                        }
@@ -107,8 +109,9 @@ public class HashMapStore implements ICl
        }
        
        public List<Client> getClientsByUserId(Server server, Long userId) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getUserId().equals(userId)) {
                                clientList.add(cl);
                        }
@@ -117,8 +120,9 @@ public class HashMapStore implements ICl
        }
        
        public  List<Client> getClientsByRoomId(Long roomId) {
-               List<Client> clientList = new ArrayList<Client>();
-               for (Client cl : clientsByStreamId.values()) {
+               List<Client> clientList = new ArrayList<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        if (cl.getRoomId() != null && 
cl.getRoomId().equals(roomId)) {
                                clientList.add(cl);
                        }
@@ -146,7 +150,6 @@ public class HashMapStore implements ICl
                return clientsByStreamId.size();
        }
        
-       
        /**
         * Print some session statistics to the debug out
         * 
@@ -159,12 +162,10 @@ public class HashMapStore implements ICl
        }
 
        public String getDebugInformation(List<DEBUG_DETAILS> detailLevel) {
-
                StringBuilder statistics = new StringBuilder();
 
                if (detailLevel.contains(DEBUG_DETAILS.SIZE)) {
-                       addNewLine(statistics, "Number of sessions Total "
-                                       + getTotalNumberOfSessions());
+                       addNewLine(statistics, "Number of sessions Total " + 
getTotalNumberOfSessions());
                }
 
                return statistics.toString();
@@ -175,8 +176,9 @@ public class HashMapStore implements ICl
        }
 
        public List<Long> getRoomsIdsByServer(Server server) {
-               HashSet<Long> rooms = new HashSet<Long>();
-               for (Client cl : clientsByStreamId.values()) {
+               Set<Long> rooms = new HashSet<>();
+               for (Map.Entry<String, Client> e: clientsByStreamId.entrySet()) 
{
+                       Client cl = e.getValue();
                        Long roomId = cl.getRoomId();
                        if (roomId != null && roomId > 0 && 
!rooms.contains(roomId)) {
                                rooms.add(roomId);

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/store/IClientPersistenceStore.java
 Thu Mar 31 13:27:59 2016
@@ -34,14 +34,14 @@ public interface IClientPersistenceStore
        /**
         * called upon start of the session cache
         */
-       public abstract void clearCache();
+       void clear();
 
        /**
         * 
         * @param streamId
         * @param rcl
         */
-       public abstract void put(String streamId, Client rcl);
+       void put(String streamId, Client rcl);
        
        /**
         * 
@@ -49,7 +49,7 @@ public interface IClientPersistenceStore
         * @param streamId
         * @return
         */
-       public boolean containsKey(Server server, String streamId);
+       boolean containsKey(Server server, String streamId);
 
        /**
         * by server and publicSID
@@ -58,7 +58,7 @@ public interface IClientPersistenceStore
         * @param streamId
         * @return will return null if the client does not exist in the list
         */
-       public abstract Client get(Server server, String streamId);
+       Client get(Server server, String streamId);
 
        /**
         * 
@@ -66,8 +66,7 @@ public interface IClientPersistenceStore
         * @param publicSID
         * @return will return an empty list if nothing available
         */
-       public abstract List<Client> getClientsByPublicSID(Server server,
-                       String publicSID);
+       List<Client> getClientsByPublicSID(Server server, String publicSID);
 
        /**
         * Searches for the publicSID across all servers
@@ -75,10 +74,9 @@ public interface IClientPersistenceStore
         * @param publicSID
         * @return will return a map with the serverId as key and the 
RoomClients as list in the value
         */
-       public abstract Map<Long, List<Client>> getClientsByPublicSID(
-                       String publicSID);
+       Map<Long, List<Client>> getClientsByPublicSID(String publicSID);
 
-       public abstract Collection<Client> getClients();
+       Collection<Client> getClients();
        
        /**
         * get all clients by a specific {@link Server}
@@ -86,7 +84,7 @@ public interface IClientPersistenceStore
         * @param server
         * @return will return an empty map if nothing available
         */
-       public abstract Collection<Client> getClientsByServer(Server server);
+       Collection<Client> getClientsByServer(Server server);
 
        /**
         * 
@@ -94,7 +92,7 @@ public interface IClientPersistenceStore
         * @param userId
         * @return will return an empty list if nothing available
         */
-       public abstract Collection<Client> getClientsByUserId(Server server, 
Long userId);
+       Collection<Client> getClientsByUserId(Server server, Long userId);
 
        /**
         * 
@@ -103,15 +101,15 @@ public interface IClientPersistenceStore
         * @param roomId
         * @return will return an empty map if nothing available
         */
-       public abstract List<Client> getClientsByRoomId(Long roomId);
+       List<Client> getClientsByRoomId(Long roomId);
 
-       public abstract void remove(Server server, String streamId);
+       void remove(Server server, String streamId);
 
-       public abstract int size();
+       int size();
 
-       public abstract int sizeByServer(Server server);
+       int sizeByServer(Server server);
 
-       public abstract Collection<Client> values();
+       Collection<Client> values();
        
        /**
         * Get some session statistics
@@ -119,7 +117,7 @@ public interface IClientPersistenceStore
         * @param detailLevel
         * @return
         */
-       public abstract String getDebugInformation(List<DEBUG_DETAILS> 
detailLevel);
+       String getDebugInformation(List<DEBUG_DETAILS> detailLevel);
 
        /**
         * returns a list of roomIds (unique) that are currently active on the 
given server
@@ -129,7 +127,7 @@ public interface IClientPersistenceStore
         * @param server
         * @return
         */
-       public abstract List<Long> getRoomsIdsByServer(Server server);
+       List<Long> getRoomsIdsByServer(Server server);
 
        /**
         * if database cache + cluster is enabled, the server object will be 
loaded 
@@ -137,6 +135,5 @@ public interface IClientPersistenceStore
         * 
         * @return
         */
-       public abstract Collection<Client> getClientsWithServer();
-
-}
\ No newline at end of file
+       Collection<Client> getClientsWithServer();
+}

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
 Thu Mar 31 13:27:59 2016
@@ -34,12 +34,13 @@ import org.apache.openmeetings.db.entity
  *
  */
 public interface ISessionManager {
+       void clearCache();
        
        /**
         * Notified on server start, when the session manager should be started 
and
         * eventually caches cleared/setup
         */
-       public abstract void sessionStart();
+       void sessionStart();
 
        /**
         * add a new client item
@@ -52,18 +53,16 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client addClientListItem(String streamId,
-                       String scopeName, Integer remotePort, String 
remoteAddress,
-                       String swfUrl, Server server);
+       Client addClientListItem(String streamId, String scopeName, Integer 
remotePort, String remoteAddress, String swfUrl, Server server);
 
-       public abstract Collection<Client> getClients();
+       Collection<Client> getClients();
        
        /**
         * loads the server into the client (only if database cache is used)
         * 
         * @return
         */
-       public abstract Collection<Client> getClientsWithServer();
+       Collection<Client> getClientsWithServer();
 
        /**
         * Get a client by its streamId
@@ -72,8 +71,7 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client getClientByStreamId(String streamId,
-                       Server server);
+       Client getClientByStreamId(String streamId, Server server);
 
        /**
         * get a client by its publicSID and the server, 
@@ -82,7 +80,7 @@ public interface ISessionManager {
         * @param server
         * @return
         */
-       public abstract Client getClientByPublicSID(String publicSID, Server 
server);
+       Client getClientByPublicSID(String publicSID, Server server);
        
        /**
         * same as {@link #getClientByPublicSID(String, boolean, Server)} but 
it ignores 
@@ -95,7 +93,7 @@ public interface ISessionManager {
         * @param publicSID
         * @return
         */
-       public ClientSessionInfo getClientByPublicSIDAnyServer(String 
publicSID);
+       ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID);
 
        /**
         * 
@@ -105,7 +103,7 @@ public interface ISessionManager {
         * @deprecated There could be multiple users logged in with the same 
userid,
         *             then this call would return a list not a single user
         */
-       public abstract Client getClientByUserId(Long userId);
+       Client getClientByUserId(Long userId);
 
        /**
         * Update the session object of the audio/video-connection and 
additionally
@@ -116,7 +114,7 @@ public interface ISessionManager {
         * @param rcm
         * @return
         */
-       public abstract boolean updateAVClientByStreamId(String streamId, 
Client rcm, Server server);
+       boolean updateAVClientByStreamId(String streamId, Client rcm, Server 
server);
 
        /**
         * Update the session object
@@ -131,8 +129,7 @@ public interface ISessionManager {
         *            true means the count for the room has to be updated
         * @return
         */
-       public abstract boolean updateClientByStreamId(String streamId,
-                       Client rcm, boolean updateRoomCount, Server server);
+       boolean updateClientByStreamId(String streamId, Client rcm, boolean 
updateRoomCount, Server server);
 
        /**
         * Remove a client from the session store
@@ -140,7 +137,7 @@ public interface ISessionManager {
         * @param streamId
         * @return
         */
-       public abstract boolean removeClient(String streamId, Server server);
+       boolean removeClient(String streamId, Server server);
 
        /**
         * Get all ClientList Objects of that room and domain This Function is
@@ -150,9 +147,9 @@ public interface ISessionManager {
         * @param roomId 
         * @return
         */
-       public abstract List<Client> getClientListByRoom(Long roomId);
+       List<Client> getClientListByRoom(Long roomId);
        
-       public abstract Collection<Client> getClientListByRoomAll(Long roomId);
+       Collection<Client> getClientListByRoomAll(Long roomId);
 
        /**
         * get the current Moderator in this room
@@ -160,7 +157,7 @@ public interface ISessionManager {
         * @param roomname
         * @return
         */
-       public abstract List<Client> getCurrentModeratorByRoom(Long roomId);
+       List<Client> getCurrentModeratorByRoom(Long roomId);
 
        /**
         * Get list of current client sessions
@@ -171,8 +168,7 @@ public interface ISessionManager {
         * @param asc
         * @return
         */
-       public abstract SearchResult<Client> getListByStartAndMax(int start,
-                       int max, String orderby, boolean asc);
+       SearchResult<Client> getListByStartAndMax(int start, int max, String 
orderby, boolean asc);
 
        /**
         * returns number of current users recording
@@ -180,7 +176,7 @@ public interface ISessionManager {
         * @param roomId
         * @return
         */
-       public abstract long getRecordingCount(long roomId);
+       long getRecordingCount(long roomId);
 
        /**
         * returns a number of current users publishing screensharing
@@ -188,7 +184,7 @@ public interface ISessionManager {
         * @param roomId
         * @return
         */
-       public abstract long getPublishingCount(long roomId);
+       long getPublishingCount(long roomId);
        
        /**
         * Get a list of all servers of all rooms on that server, serverId = 
null 
@@ -197,13 +193,12 @@ public interface ISessionManager {
         * @param server
         * @return a set, a roomId can be only one time in this list
         */
-       public abstract List<Long> getActiveRoomIdsByServer(Server server);
+       List<Long> getActiveRoomIdsByServer(Server server);
 
        /**
         * Get some statistics about the current sessions
         * 
         * @return
         */
-       public abstract String getSessionStatistics();
-
-}
\ No newline at end of file
+       String getSessionStatistics();
+}

Modified: 
openmeetings/application/trunk/openmeetings-server/src/main/assembly/components/all.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-server/src/main/assembly/components/all.xml?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-server/src/main/assembly/components/all.xml
 (original)
+++ 
openmeetings/application/trunk/openmeetings-server/src/main/assembly/components/all.xml
 Thu Mar 31 13:27:59 2016
@@ -99,7 +99,6 @@
                                <exclude>WEB-INF/lib/commons-codec*</exclude>
                                
<exclude>WEB-INF/lib/commons-collections-*</exclude>
                                <exclude>WEB-INF/lib/commons-lang3*</exclude>
-                               <exclude>WEB-INF/lib/commons-pool-*</exclude>
                        </excludes>
                </fileSet>
                <fileSet>

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 Thu Mar 31 13:27:59 2016
@@ -152,7 +152,7 @@ public class ConnectionsPanel extends Ad
                        @Override
                        protected void populateItem(final 
Item<org.apache.openmeetings.web.app.Client> item) {
                                org.apache.openmeetings.web.app.Client c = 
item.getModelObject();
-                               item.add(new Label("id", c.getUserId()));
+                               item.add(new Label("id", ""));
                                User u = 
getBean(UserService.class).getUserById(getSid(), c.getUserId());
                                item.add(new Label("login", u == null ? null : 
u.getLogin()));
                                item.add(new Label("since", 
c.getConnectedSince()));

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 Thu Mar 31 13:27:59 2016
@@ -65,23 +65,22 @@
                </property>
        </bean>
 
-       <!-- Singletons for memory based cache -->
+       <!-- Singleton for memory based cache -->
        <bean id="openmeetings.HashMapStore" scope="singleton" 
class="org.apache.openmeetings.core.session.store.HashMapStore" />
+       <!-- Database cache -->
+       <bean id="openmeetings.DatabaseStore" 
class="org.apache.openmeetings.core.session.store.DatabaseStore" />
+       
        <bean id="whiteBoardObjectListManagerById" scope="singleton" 
class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById"
 />
        <!-- WhiteBoardObjectSyncManager can stay in the memory, even on 
cluster! -->
        <bean id="whiteBoardObjectSyncManager" scope="singleton" 
class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager"
 />
 
-       <!-- Database cache -->
-       <bean id="openmeetings.DatabaseStore" 
class="org.apache.openmeetings.core.session.store.DatabaseStore" />
-
+       <!-- Cluster related config start -->
        <bean id="openmeetings.ServerUtil" scope="singleton" 
class="org.apache.openmeetings.core.session.ServerUtil">
                <!-- Need to be uncommented and set to the real ID if in 
cluster mode
                <property name="serverId" value="1" />
                -->
        </bean>
 
-       <!-- Cluster related config start -->
-
        <!-- Start of Services -->
        <bean id="xmlcrm.service" 
class="org.apache.openmeetings.core.remote.MainService" />
        <bean id="printservice.service" 
class="org.apache.openmeetings.core.remote.PrintService" />

Modified: 
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java?rev=1737236&r1=1737235&r2=1737236&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
 Thu Mar 31 13:27:59 2016
@@ -48,7 +48,7 @@ public class TestHashMapSession extends
        public void testHashMapSession() {
                
                //make sure the cache is empty before starting the test
-               cache.clearCache();
+               cache.clear();
                
                for (int i=0;i<20;i++) {
                        


Reply via email to