You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2010/06/28 14:38:36 UTC

svn commit: r958556 - in /incubator/wookie/branches/pluggablepersistence: src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java src/org/apache/wookie/controller/WidgetsController.java

Author: scottbw
Date: Mon Jun 28 12:38:36 2010
New Revision: 958556

URL: http://svn.apache.org/viewvc?rev=958556&view=rev
Log:
Applying patch to fix issue with Widgets REST API; see WOOKIE-144. Thanks to Randy Watler for the patch. Some changes made to better support published API, including updated functional tests

Modified:
    incubator/wookie/branches/pluggablepersistence/src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java
    incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java

Modified: incubator/wookie/branches/pluggablepersistence/src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java?rev=958556&r1=958555&r2=958556&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src-tests/org/apache/wookie/tests/functional/WidgetsControllerTest.java Mon Jun 28 12:38:36 2010
@@ -96,13 +96,13 @@ public class WidgetsControllerTest exten
 	    	fail("get failed");
 	    }
 	}
-	
+
 	// We expect a valid response, just no actual widgets
 	@Test
-	public void getWidgetType_noneexistant(){
+	public void getWidgetType_empty(){
 	    try {
 	        HttpClient client = new HttpClient();
-	        GetMethod get = new GetMethod(TEST_WIDGETS_SERVICE_URL_VALID+"/nosuchtype");
+	        GetMethod get = new GetMethod(TEST_WIDGETS_SERVICE_URL_VALID+"/games");
 	        client.executeMethod(get);
 	        int code = get.getStatusCode();
 	        assertEquals(200,code);
@@ -116,4 +116,21 @@ public class WidgetsControllerTest exten
 	    }
 	}
 	
+	// resource doesn't match either a widget.id or a widgetservice.servicename
+	@Test
+	public void getWidgetType_noneexistant(){
+	    try {
+	        HttpClient client = new HttpClient();
+	        GetMethod get = new GetMethod(TEST_WIDGETS_SERVICE_URL_VALID+"/nosuchtype");
+	        client.executeMethod(get);
+	        int code = get.getStatusCode();
+	        assertEquals(404,code);
+	        get.releaseConnection();
+	    }
+	    catch (Exception e) {
+	    	e.printStackTrace();
+	    	fail("get failed");
+	    }
+	}
+	
 }

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java?rev=958556&r1=958555&r2=958556&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java Mon Jun 28 12:38:36 2010
@@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.wookie.beans.IWidget;
 import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.IWidgetService;
 import org.apache.wookie.beans.util.IPersistenceManager;
 import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -69,13 +70,25 @@ public class WidgetsController extends C
 	 * @see org.apache.wookie.controller.Controller#show(java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 	 */
 	protected void show(String resourceId, HttpServletRequest request,
-			HttpServletResponse response) throws ResourceNotFoundException, IOException {		
-		if (!isAnInteger(resourceId)){
+			HttpServletResponse response) throws ResourceNotFoundException, IOException {
+	    // support "all" queries
+		if ((resourceId == null) || resourceId.equals("")){
 			index(resourceId, request, response);
 			return;
 		}
+		// attempt to get specific widget by id
 		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		IWidget widget = persistenceManager.findById(IWidget.class, resourceId);
+		// support queries by type
+		if (widget == null) {
+			IWidgetService[] services = persistenceManager.findByValue(IWidgetService.class, "serviceName", resourceId);
+		    if (services != null && services.length == 1) {
+			    IWidget[] widgets = persistenceManager.findWidgetsByType(resourceId);
+		        returnXml(WidgetHelper.createXMLWidgetsDocument(widgets, getLocalPath(request), getLocales(request)),response);
+		        return;
+		    }
+		}
+		// return widget result
 		if (widget == null) throw new ResourceNotFoundException();
 		returnXml(WidgetHelper.createXMLWidgetsDocument(widget, getLocalPath(request), getLocales(request)),response);
 	}