Author: scottbw
Date: Wed Mar 28 14:05:43 2012
New Revision: 1306344
URL: http://svn.apache.org/viewvc?rev=1306344&view=rev
Log:
Added JSON support to /widgetinstances API
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceHelper.java
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=1306344&r1=1306343&r2=1306344&view=diff
==============================================================================
---
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
(original)
+++
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
Wed Mar 28 14:05:43 2012
@@ -119,22 +119,31 @@ public class WidgetInstancesController e
*/
@Override
protected void show(String resourceId, HttpServletRequest request,
HttpServletResponse response) throws ResourceNotFoundException,
UnauthorizedAccessException, IOException {
- IWidgetInstance instance =
WidgetInstancesController.getLocalizedWidgetInstance(request);
- if (instance == null){
- throw new ResourceNotFoundException();
- } else {
- // Check the API key matches
- String apiKey = request.getParameter("api_key");
- if (!instance.getApiKey().equals(apiKey)) throw new
UnauthorizedAccessException();
- // Return the response XML
- checkProxy(request);
- String url = getUrl(request, instance);
- String locale = request.getParameter("locale");//$NON-NLS-1$
- response.setContentType(CONTENT_TYPE);
- response.setStatus(HttpServletResponse.SC_OK);
- PrintWriter out = response.getWriter();
-
out.println(WidgetInstanceHelper.createXMLWidgetInstanceDocument(instance, url,
locale));
- }
+ IWidgetInstance instance =
WidgetInstancesController.getLocalizedWidgetInstance(request);
+ if (instance == null){
+ throw new ResourceNotFoundException();
+ } else {
+ //
+ // Check the API key matches
+ //
+ String apiKey = request.getParameter("api_key");
+ if (!instance.getApiKey().equals(apiKey)) throw new
UnauthorizedAccessException();
+
+ checkProxy(request);
+ String url = getUrl(request, instance);
+ String locale = request.getParameter("locale");//$NON-NLS-1$
+ response.setStatus(HttpServletResponse.SC_OK);
+
+ //
+ // Return XML or JSON
+ //
+ switch(format(request)){
+ case XML:
returnXml(WidgetInstanceHelper.createXMLWidgetInstanceDocument(instance, url,
locale), response); break;
+ case JSON: returnJson(WidgetInstanceHelper.toJson(instance, url,
locale), response); break;
+ default:
returnXml(WidgetInstanceHelper.createXMLWidgetInstanceDocument(instance, url,
locale), response); break;
+ }
+
+ }
}
/* (non-Javadoc)
Modified:
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceHelper.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceHelper.java?rev=1306344&r1=1306343&r2=1306344&view=diff
==============================================================================
---
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceHelper.java
(original)
+++
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceHelper.java
Wed Mar 28 14:05:43 2012
@@ -14,15 +14,20 @@
package org.apache.wookie.helpers;
import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.log4j.Logger;
import org.apache.wookie.beans.IWidget;
import org.apache.wookie.beans.IWidgetInstance;
import org.apache.wookie.w3c.IW3CXMLConfiguration;
+import org.json.JSONException;
+import org.json.JSONObject;
/**
* A helper to create representations of Widget Instance resources
*/
public class WidgetInstanceHelper {
+ static Logger logger =
Logger.getLogger(WidgetInstanceHelper.class.getName());
+
private static final String XMLDECLARATION = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>";
/**
@@ -54,4 +59,25 @@ public class WidgetInstanceHelper {
return xml;
}
+ public static String toJson(IWidgetInstance instance, String url, String
locale) {
+ IWidget widget = instance.getWidget();
+ String width = String.valueOf(IW3CXMLConfiguration.DEFAULT_WIDTH_LARGE);
+ String height = String.valueOf(IW3CXMLConfiguration.DEFAULT_HEIGHT_LARGE);
+ if (widget.getWidth() != null && widget.getWidth() > 0)
+ width = widget.getWidth().toString();
+ if (widget.getHeight() != null && widget.getHeight() > 0)
+ height = widget.getHeight().toString();
+ JSONObject json = new JSONObject();
+ try {
+ json.put("url", url);
+ json.put("identifier", instance.getIdKey());
+ json.put("title", widget.getWidgetTitle(locale));
+ json.put("height", height);
+ json.put("width", width);
+ } catch (JSONException e) {
+ logger.error("Problem rendering instance using JSON",e);
+ }
+ return json.toString();
+ }
+
}