Author: sebawagner
Date: Sun Jan 27 02:57:39 2013
New Revision: 1439014

URL: http://svn.apache.org/viewvc?rev=1439014&view=rev
Log:
OPENMEETINGS-460 Refactor memory session cache: Make a spring injected 
singleton instead a static instance

Modified:
    
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
 Sun Jan 27 02:57:39 2013
@@ -51,17 +51,29 @@
        <!-- New Class for the Streaming Handlers -->
        <bean id="web.handler"
                
class="org.apache.openmeetings.remote.red5.ScopeApplicationAdapter" />
-       
-       <!-- In memory / session stores -->
+               
+       <!-- Session configuration start -->
        
        <bean id="openmeetings.SessionManager" 
-               class="org.apache.openmeetings.session.SessionManager" />
+               class="org.apache.openmeetings.session.SessionManager">
+               <property name="cache">
+               <ref bean="openmeetings.HashMapStore"/>  <!-- Memory based 
session cache by default -->
+           </property> 
+       </bean>
        <bean id="openmeetings.EmoticonsManager" 
                class="org.apache.openmeetings.remote.red5.EmoticonsManager" />
        <bean id="openmeetings.WhiteBoardObjectListManager"
                
class="org.apache.openmeetings.remote.red5.WhiteBoardObjectListManager" />
        <bean id="openmeetings.WhiteBoardObjectListManagerById"
                
class="org.apache.openmeetings.remote.red5.WhiteBoardObjectListManagerById" />
+       
+       <bean id="openmeetings.DatabaseStore"
+               class="org.apache.openmeetings.session.store.DatabaseStore" />
+       
+       <bean id="openmeetings.HashMapStore" scope="singleton" 
+               class="org.apache.openmeetings.session.store.HashMapStore" />
+       
+       <!-- Cluster related config start -->
 
        <!-- Start of Services -->
        <bean id="xmlcrm.service" 
class="org.apache.openmeetings.remote.MainService" />
@@ -239,6 +251,8 @@
        <bean id="usersDao" 
class="org.apache.openmeetings.data.user.dao.UsersDao" />
        <bean id="serverDao" 
class="org.apache.openmeetings.data.basic.dao.ServerDao" />
        <bean id="chatDao" class="org.apache.openmeetings.data.chat.ChatDao" />
+       <bean id="clientDao" 
class="org.apache.openmeetings.data.conference.dao.ClientDao" />
+       
 
        <!-- No Interface -->
        <bean id="manageCryptStyle" 
class="org.apache.openmeetings.utils.crypt.ManageCryptStyle" />

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
 Sun Jan 27 02:57:39 2013
@@ -23,11 +23,15 @@ import java.util.Date;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
+import org.apache.openmeetings.persistence.beans.basic.Server;
 import org.apache.openmeetings.utils.math.CalendarPatterns;
 
 /**
@@ -367,6 +371,10 @@ public class Client implements Serializa
         */
        @Column(name = "sip_transport")
     private boolean sipTransport = false;
+       
+       @ManyToOne(fetch = FetchType.LAZY)
+       @JoinColumn(name = "id")
+       private Server server;
     
     public Client() {
        
@@ -833,6 +841,14 @@ public class Client implements Serializa
                this.sipTransport = sipTransport;
        }
        
+       public Server getServer() {
+               return server;
+       }
+
+       public void setServer(Server server) {
+               this.server = server;
+       }
+
        @Override
        public String toString() {
                return super.toString() //

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
 Sun Jan 27 02:57:39 2013
@@ -36,7 +36,6 @@ import org.apache.openmeetings.Openmeeti
 import org.apache.openmeetings.data.beans.basic.SearchResult;
 import org.apache.openmeetings.persistence.beans.basic.Server;
 import org.apache.openmeetings.persistence.beans.rooms.Client;
-import org.apache.openmeetings.session.store.HashMapStore;
 import org.apache.openmeetings.session.store.IClientPersistenceStore;
 import org.apache.openmeetings.utils.crypt.ManageCryptStyle;
 import org.red5.logging.Red5LoggerFactory;
@@ -54,8 +53,21 @@ public class SessionManager implements I
        protected static final Logger log = Red5LoggerFactory.getLogger(
                        SessionManager.class, 
OpenmeetingsVariables.webAppRootKey);
        
-       protected static IClientPersistenceStore cache = new HashMapStore();
+       /**
+        * Injected via Spring
+        */
+       private IClientPersistenceStore cache;
        
+       //Needs getters and setters as here it is no "Autowired" bean, as you 
can configure different caches
+       public IClientPersistenceStore getCache() {
+               return cache;
+       }
+
+       public void setCache(IClientPersistenceStore cache) {
+               this.cache = cache;
+       }
+
+
        private static Set<Long> EMPTY_HASH_SET = new HashSet<Long>();
 
        @Autowired

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
 Sun Jan 27 02:57:39 2013
@@ -22,10 +22,15 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.openmeetings.data.conference.dao.ClientDao;
 import org.apache.openmeetings.persistence.beans.basic.Server;
 import org.apache.openmeetings.persistence.beans.rooms.Client;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class DatabaseStore implements IClientPersistenceStore {
+       
+       @Autowired
+       private ClientDao clientDao;
 
        public void put(Server server, String streamId, Client rcl) {
                // TODO Auto-generated method stub


Reply via email to