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);
}