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


Reply via email to