Author: sebawagner Date: Sun Feb 3 22:18:43 2013 New Revision: 1441976 URL: http://svn.apache.org/viewvc?rev=1441976&view=rev Log: OPENMEETINGS-460 Fixing persistence using database session client cache
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/ISessionManager.java openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/HashMapStore.java openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/IClientPersistenceStore.java Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/ISessionManager.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/ISessionManager.java?rev=1441976&r1=1441975&r2=1441976&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/ISessionManager.java (original) +++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/ISessionManager.java Sun Feb 3 22:18:43 2013 @@ -20,7 +20,6 @@ package org.apache.openmeetings.session; import java.util.Collection; import java.util.List; -import java.util.Set; import org.apache.openmeetings.data.beans.basic.SearchResult; import org.apache.openmeetings.persistence.beans.basic.Server; @@ -207,7 +206,7 @@ public interface ISessionManager { * @param server * @return */ - public abstract Set<Long> getActiveRoomIdsByServer(Server server); + public abstract List<Long> getActiveRoomIdsByServer(Server server); /** * Get some statistics about the current sessions Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java?rev=1441976&r1=1441975&r2=1441976&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java (original) +++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java Sun Feb 3 22:18:43 2013 @@ -23,12 +23,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Date; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; import java.util.Random; -import java.util.Set; import org.apache.openmeetings.OpenmeetingsVariables; import org.apache.openmeetings.data.beans.basic.SearchResult; @@ -53,8 +51,6 @@ public class SessionManager implements I protected static final Logger log = Red5LoggerFactory.getLogger( SessionManager.class, OpenmeetingsVariables.webAppRootKey); - private static Set<Long> EMPTY_HASH_SET = new HashSet<Long>(); - @Autowired private ServerUtil serverUtil; @Autowired @@ -273,7 +269,7 @@ public class SessionManager implements I ArrayList<Client> roomClientList = new ArrayList<Client>(); try { - for (Client rcl : cache.getClientsByRoomId(roomId).values()) { + for (Client rcl : cache.getClientsByRoomId(roomId)) { if (rcl.getIsScreenClient() == null || rcl.getIsScreenClient()) { continue; @@ -296,7 +292,7 @@ public class SessionManager implements I public synchronized Collection<Client> getClientListByRoomAll(Long roomId) { try { - return cache.getClientsByRoomId(roomId).values(); + return cache.getClientsByRoomId(roomId); } catch (Exception err) { log.error("[getClientListByRoomAll]", err); } @@ -347,11 +343,8 @@ public class SessionManager implements I return numberOfPublishingUsers; } - public Set<Long> getActiveRoomIdsByServer(Server server) { - if (cache.getClientsByServerAndRoom(server) == null) { - return EMPTY_HASH_SET; - } - return cache.getClientsByServerAndRoom(server).keySet(); + public List<Long> getActiveRoomIdsByServer(Server server) { + return cache.getRoomsIdsByServer(server); } @@ -449,7 +442,7 @@ public class SessionManager implements I return sessionManager.getPublishingCount(roomId); } - public Set<Long> getActiveRoomIdsByServer(Server server) { + public List<Long> getActiveRoomIdsByServer(Server server) { if (server == null) { server = serverUtil.getCurrentServer(); } Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java?rev=1441976&r1=1441975&r2=1441976&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java (original) +++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java Sun Feb 3 22:18:43 2013 @@ -21,7 +21,6 @@ package org.apache.openmeetings.session. import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -47,7 +46,11 @@ public class DatabaseStore implements IC } public void put(String streamId, Client rcl) { - clientDao.add(rcl); + if (rcl.getId() > 0) { + clientDao.update(rcl); + } else { + clientDao.add(rcl); + } } public boolean containsKey(Server server, String streamId) { @@ -95,39 +98,27 @@ public class DatabaseStore implements IC } public List<Client> getClientsByUserId(Server server, Long userId) { - // TODO Auto-generated method stub - return null; + return clientDao.getClientsByUserId(server, userId); } - public LinkedHashMap<String, Client> getClientsByRoomId(Long roomId) { - // TODO Auto-generated method stub - return null; + public List<Client> getClientsByRoomId(Long roomId) { + return clientDao.getClientsByRoomId(roomId); } public void remove(Server server, String streamId) { - // TODO Auto-generated method stub - + clientDao.removeClientByServerAndStreamId(server, streamId); } public int size() { - // TODO Auto-generated method stub - return 0; + return clientDao.countClients(); } public int sizeByServer(Server server) { - // TODO Auto-generated method stub - return 0; - } - - public LinkedHashMap<Long, Collection<Client>> getClientsByServerAndRoom( - Server server) { - // TODO Auto-generated method stub - return null; + return clientDao.countClientsByServer(server); } public Collection<Client> values() { - // TODO Auto-generated method stub - return null; + return clientDao.getClients(); } public String getDebugInformation(List<DEBUG_DETAILS> detailLevel) { @@ -135,4 +126,8 @@ public class DatabaseStore implements IC return null; } + public List<Long> getRoomsIdsByServer(Server server) { + return clientDao.getRoomsIdsByServer(server); + } + } Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/HashMapStore.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/HashMapStore.java?rev=1441976&r1=1441975&r2=1441976&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/HashMapStore.java (original) +++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/HashMapStore.java Sun Feb 3 22:18:43 2013 @@ -110,11 +110,11 @@ public class HashMapStore implements ICl return clientList; } - public LinkedHashMap<String, Client> getClientsByRoomId(Long roomId) { - LinkedHashMap<String,Client> clientList = new LinkedHashMap<String, Client>(); + public List<Client> getClientsByRoomId(Long roomId) { + List<Client> clientList = new ArrayList<Client>(); for (Client cl : clientsByStreamId.values()) { if (cl.getRoom_id() != null && cl.getRoom_id().equals(roomId)) { - clientList.put(cl.getStreamid(), cl); + clientList.add(cl); } } return clientList; @@ -136,12 +136,6 @@ public class HashMapStore implements ICl return clientsByStreamId.values(); } - public LinkedHashMap<Long,Collection<Client>> getClientsByServerAndRoom(Server server) { - LinkedHashMap<Long,Collection<Client>> clientsByServer = new LinkedHashMap<Long,Collection<Client>>(); - clientsByServer.put(null, clientsByStreamId.values()); - return clientsByServer; - } - public int getTotalNumberOfSessions() { return clientsByStreamId.size(); } @@ -174,4 +168,8 @@ public class HashMapStore implements ICl strBuilder.append(message + "\n\r"); } + public List<Long> getRoomsIdsByServer(Server server) { + throw new RuntimeException("This method should bever be called if the server is running in a single node (NON-Cluster) setup!"); + } + } Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/IClientPersistenceStore.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/IClientPersistenceStore.java?rev=1441976&r1=1441975&r2=1441976&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/IClientPersistenceStore.java (original) +++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/IClientPersistenceStore.java Sun Feb 3 22:18:43 2013 @@ -19,7 +19,6 @@ package org.apache.openmeetings.session.store; import java.util.Collection; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -100,14 +99,11 @@ public interface IClientPersistenceStore /** * * We ignore the server here, cause ONE room can only be on ONE server and often we don't know where. - * However at a later stage clients might be on different servers and still in the save room - * so we keep that parameter for now * - * @param server * @param roomId * @return will return an empty map if nothing available */ - public abstract LinkedHashMap<String, Client> getClientsByRoomId(Long roomId); + public abstract List<Client> getClientsByRoomId(Long roomId); public abstract void remove(Server server, String streamId); @@ -115,9 +111,6 @@ public interface IClientPersistenceStore public abstract int sizeByServer(Server server); - public abstract LinkedHashMap<Long, Collection<Client>> getClientsByServerAndRoom( - Server server); - public abstract Collection<Client> values(); /** @@ -128,4 +121,6 @@ public interface IClientPersistenceStore */ public abstract String getDebugInformation(List<DEBUG_DETAILS> detailLevel); + public abstract List<Long> getRoomsIdsByServer(Server server); + } \ No newline at end of file