Author: scottbw
Date: Mon Mar 10 18:56:57 2014
New Revision: 1576042

URL: http://svn.apache.org/r1576042
Log:
Re-implemented support for default preferences specified in config.xml, and 
added functional tests to ensure it works.

Added:
    wookie/trunk/wookie-server/src/test/resources/default-preferences.wgt   
(with props)
Modified:
    
wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
    
wookie/trunk/wookie-server/src/test/java/org/apache/wookie/tests/functional/WidgetInstancesControllerTest.java

Modified: 
wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
URL: 
http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java?rev=1576042&r1=1576041&r2=1576042&view=diff
==============================================================================
--- 
wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
 (original)
+++ 
wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
 Mon Mar 10 18:56:57 2014
@@ -17,6 +17,8 @@ package org.apache.wookie.controller;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.Collection;
+import java.util.List;
 import java.util.UUID;
 
 import javax.servlet.ServletException;
@@ -36,9 +38,11 @@ import org.apache.wookie.exceptions.Unau
 import org.apache.wookie.helpers.Notifier;
 import org.apache.wookie.helpers.WidgetInstanceHelper;
 import org.apache.wookie.helpers.WidgetRuntimeHelper;
+import org.apache.wookie.services.PreferencesService;
 import org.apache.wookie.services.SharedContextService;
 import org.apache.wookie.services.WidgetMetadataService;
 import org.apache.wookie.w3c.IContent;
+import org.apache.wookie.beans.IPreference;
 import org.apache.wookie.w3c.util.LocalizationUtils;
 
 /**
@@ -125,6 +129,17 @@ public class WidgetInstancesController e
                                        useDefaultSizes = true;
                                }
                        }
+                       
+                       //
+                       // Set default preferences if there are no preferences 
associated with this session
+                       //
+                       IWidget widget = 
WidgetMetadataService.Factory.getInstance().getWidget(authToken.getWidgetId());
+                       Collection<IPreference> existingPreferences = 
PreferencesService.Factory.getInstance().getPreferences(newToken.getApiKey(), 
newToken.getWidgetId(), newToken.getContextId(), newToken.getViewerId());
+                       if (existingPreferences == null || 
existingPreferences.size() == 0){
+                               for (org.apache.wookie.w3c.IPreference 
preference: widget.getPreferences()){
+                                       
PreferencesService.Factory.getInstance().setPreference(newToken.getApiKey(), 
newToken.getWidgetId(), newToken.getContextId(), newToken.getViewerId(), 
preference.getName(), preference.getValue(), preference.isReadOnly());
+                               }                               
+                       }
 
                        //
                        // Return XML or JSON 

Modified: 
wookie/trunk/wookie-server/src/test/java/org/apache/wookie/tests/functional/WidgetInstancesControllerTest.java
URL: 
http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/test/java/org/apache/wookie/tests/functional/WidgetInstancesControllerTest.java?rev=1576042&r1=1576041&r2=1576042&view=diff
==============================================================================
--- 
wookie/trunk/wookie-server/src/test/java/org/apache/wookie/tests/functional/WidgetInstancesControllerTest.java
 (original)
+++ 
wookie/trunk/wookie-server/src/test/java/org/apache/wookie/tests/functional/WidgetInstancesControllerTest.java
 Mon Mar 10 18:56:57 2014
@@ -42,7 +42,8 @@ import org.junit.Test;
 public class WidgetInstancesControllerTest extends AbstractControllerTest {
 
        private static String TEST_ID_KEY = "";
-
+       private static final String TEST_DEFAULT_PREFS_WIDGET = 
"http://wookie.apache.org/defaultpreferences";;
+       
        @BeforeClass
        public static void setup() throws HttpException, IOException {
 
@@ -70,6 +71,26 @@ public class WidgetInstancesControllerTe
                post.execute(true, false); 
                int code = post.getStatusCode();
                assertEquals(201,code);
+               
+               //
+               // Get the prefs test widget
+               //
+               file = new File("src/test/resources/default-preferences.wgt");
+               assertTrue(file.exists());
+
+               //
+               // Add test wgt file to POST
+               //
+               Part[] parts2 = { new FilePart(file.getName(), file) };
+               post.setRequestEntity(new MultipartRequestEntity(parts2, 
post.getClient()
+                               .getParams()));
+
+               //
+               // POST the file to /widgets and check we get 201 (Created)
+               //
+               post.execute(true, false); 
+               code = post.getStatusCode();
+               assertEquals(201,code);
        }
 
        @AfterClass
@@ -90,6 +111,9 @@ public class WidgetInstancesControllerTe
 
                delete = new Request("DELETE", TEST_WIDGETS_SERVICE_URL_VALID + 
"/" + WIDGET_ID_LOCALIZED);
                delete.execute(true, false);
+               
+               delete = new Request("DELETE", TEST_WIDGETS_SERVICE_URL_VALID + 
"/" + TEST_DEFAULT_PREFS_WIDGET);
+               delete.execute(true, false);
        }
 
        /**
@@ -349,6 +373,37 @@ public class WidgetInstancesControllerTe
        public void resume() {
                fail("test not written");
        }
+       
+       /**
+        * Tests that a new instance has the default preferences set from 
config.xml
+        * @throws HttpException
+        * @throws IOException
+        */
+       @Test
+       public void getInstanceWithDefaultPreferences() throws HttpException, 
IOException{
+               Request post = new Request("POST", 
TEST_INSTANCES_SERVICE_URL_VALID);
+               post.addParameter("api_key", API_KEY_VALID);
+               post.addParameter("widgetid", TEST_DEFAULT_PREFS_WIDGET);
+               post.addParameter("userid", "test");
+               post.addParameter("shareddatakey", "test");
+               post.execute(true, false);
+               int code = post.getStatusCode();
+               assertEquals(200, code);
+               
+               //
+               // Get pref
+               //
+               Request get = new Request("GET", 
TEST_PROPERTIES_SERVICE_URL_VALID);
+               get.addParameter("api_key", API_KEY_VALID);
+               get.addParameter("widgetid", TEST_DEFAULT_PREFS_WIDGET);
+               get.addParameter("userid", "test");
+               get.addParameter("shareddatakey", "test");      
+               get.addParameter("propertyname", "default");
+               get.execute(true, false);
+               code = get.getStatusCode();
+               assertEquals(200,code);
+               assertEquals("yes", get.getResponseBodyAsString());
+       }
 
        /**
         * Tests that we can clone an instance

Added: wookie/trunk/wookie-server/src/test/resources/default-preferences.wgt
URL: 
http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/test/resources/default-preferences.wgt?rev=1576042&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
wookie/trunk/wookie-server/src/test/resources/default-preferences.wgt
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


Reply via email to