Author: psharples
Date: Thu Mar 24 12:07:16 2011
New Revision: 1084926

URL: http://svn.apache.org/viewvc?rev=1084926&view=rev
Log:
Refactored to allow use of queues for persistence. See WOOKIE-145 for original 
problem.

Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/WidgetAPIImpl.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/WidgetAPIImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/WidgetAPIImpl.java?rev=1084926&r1=1084925&r2=1084926&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/WidgetAPIImpl.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/WidgetAPIImpl.java 
Thu Mar 24 12:07:16 2011
@@ -33,6 +33,8 @@ import org.apache.wookie.beans.util.Pers
 import org.apache.wookie.controller.PropertiesController;
 import org.apache.wookie.controller.WidgetInstancesController;
 import org.apache.wookie.helpers.Notifier;
+import org.apache.wookie.queues.QueueManager;
+import org.apache.wookie.server.ContextListener;
 import org.apache.wookie.server.LocaleHandler;
 import org.directwebremoting.ScriptBuffer;
 import org.directwebremoting.WebContext;
@@ -146,14 +148,19 @@ public class WidgetAPIImpl implements IW
         * (non-Javadoc)
         * @see 
org.apache.wookie.ajaxmodel.IWidgetAPI#setPreferenceForKey(java.lang.String, 
java.lang.String, java.lang.String)
         */
+       @SuppressWarnings("static-access")
        public String setPreferenceForKey(String id_key, String key, String 
value) {
                HttpServletRequest request = 
WebContextFactory.get().getHttpServletRequest();
-               Messages localizedMessages = 
LocaleHandler.localizeMessages(request);
-        IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
-        IWidgetInstance widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
+               Messages localizedMessages = 
LocaleHandler.localizeMessages(request);           
+               IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();             
+               IWidgetInstance widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
                if (widgetInstance == null) return 
localizedMessages.getString("WidgetAPIImpl.0");
-               //
-               PropertiesController.updatePreference(widgetInstance, key, 
value);
+               if(ContextListener.usePreferenceInstanceQueues){
+                       
QueueManager.getInstance().queueSetPreferenceRequest(id_key, key, value);       
+               }
+               else{
+                       PropertiesController.updatePreference(widgetInstance, 
key, value);
+               }
                return "okay"; //$NON-NLS-1$
        }
 
@@ -161,15 +168,21 @@ public class WidgetAPIImpl implements IW
         * (non-Javadoc)
         * @see 
org.apache.wookie.ajaxmodel.IWidgetAPI#setSharedDataForKey(java.lang.String, 
java.lang.String, java.lang.String)
         */
+       @SuppressWarnings("static-access")
        public String setSharedDataForKey(String id_key, String key, String 
value) {
                HttpServletRequest request = 
WebContextFactory.get().getHttpServletRequest();
                Messages localizedMessages = 
LocaleHandler.localizeMessages(request);
-        IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
-        IWidgetInstance widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
+               IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
+               IWidgetInstance widgetInstance;//
+               widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
                if(widgetInstance == null) return 
localizedMessages.getString("WidgetAPIImpl.0");
                if(widgetInstance.isLocked()) return 
localizedMessages.getString("WidgetAPIImpl.2");
-               //
-               PropertiesController.updateSharedDataEntry(widgetInstance, key, 
value, false);
+               if(ContextListener.useSharedDataInstanceQueues){//      
+                       
QueueManager.getInstance().queueSetSharedDataRequest(id_key, 
widgetInstance.getSharedDataKey(), key, value, false);
+               }
+               else{
+                       
PropertiesController.updateSharedDataEntry(widgetInstance, key, value, false);
+               }
                Notifier.notifySiblings(widgetInstance);
                return "okay"; //$NON-NLS-1$
        }
@@ -178,15 +191,20 @@ public class WidgetAPIImpl implements IW
         * (non-Javadoc)
         * @see 
org.apache.wookie.ajaxmodel.IWidgetAPI#appendSharedDataForKey(java.lang.String, 
java.lang.String, java.lang.String)
         */
+       @SuppressWarnings("static-access")
        public String appendSharedDataForKey(String id_key, String key, String 
value) {
                HttpServletRequest request = 
WebContextFactory.get().getHttpServletRequest();
-               Messages localizedMessages = 
LocaleHandler.localizeMessages(request);
-        IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
-        IWidgetInstance widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
+               Messages localizedMessages = 
LocaleHandler.localizeMessages(request);                                        
                   
+               IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();             
+               IWidgetInstance widgetInstance = 
persistenceManager.findWidgetInstanceByIdKey(id_key);
                if(widgetInstance == null) return 
localizedMessages.getString("WidgetAPIImpl.0");
                if(widgetInstance.isLocked()) return 
localizedMessages.getString("WidgetAPIImpl.2");
-               //
-               PropertiesController.updateSharedDataEntry(widgetInstance, key, 
value, true);
+               if(ContextListener.useSharedDataInstanceQueues){//
+                       
QueueManager.getInstance().queueSetSharedDataRequest(id_key, 
widgetInstance.getSharedDataKey(), key, value, true);
+               }
+               else{
+                       
PropertiesController.updateSharedDataEntry(widgetInstance, key, value, true);
+               }
                Notifier.notifySiblings(widgetInstance);
                return "okay"; //$NON-NLS-1$
        }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java?rev=1084926&r1=1084925&r2=1084926&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Thu Mar 24 12:07:16 2011
@@ -28,6 +28,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
+import org.apache.wookie.ajaxmodel.IWidgetRuntimeHelper;
 import org.apache.wookie.beans.util.IPersistenceManager;
 import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.feature.FeatureLoader;
@@ -60,6 +61,8 @@ public class ContextListener implements 
         *                      '/webappname/WEB-INF/classes'  ...at runtime.
         */
        static Logger _logger = 
Logger.getLogger(ContextListener.class.getName());
+       public static Boolean usePreferenceInstanceQueues;
+       public static Boolean useSharedDataInstanceQueues;      
        
     public void contextInitialized(ServletContextEvent event) {
                try {
@@ -81,7 +84,9 @@ public class ContextListener implements 
                                _logger.info("Using default widget server 
properties, configure your local server using: " + localPropsFile.toString());
                        }
                        context.setAttribute("properties", (Configuration) 
configuration);
-                       
+                       // load these up now so we don't have to do it on every 
request(i.e. filter) in the future
+                       usePreferenceInstanceQueues = 
configuration.getBoolean(IWidgetRuntimeHelper.USE_PREFERENCE_INSTANCE_QUEUES);  
  
+                       useSharedDataInstanceQueues = 
configuration.getBoolean(IWidgetRuntimeHelper.USE_SHAREDDATA_INSTANCE_QUEUES);  
                  
                        /*
                         * Merge in system properties overrides
                         */


Reply via email to