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 2012/03/28 15:38:26 UTC
svn commit: r1306319 - in /incubator/wookie/trunk/src/org/apache/wookie:
controller/ParticipantsController.java helpers/ParticipantHelper.java
Author: scottbw
Date: Wed Mar 28 13:38:26 2012
New Revision: 1306319
URL: http://svn.apache.org/viewvc?rev=1306319&view=rev
Log:
Added JSON support for the Participants API, and rewrote the helper to use JDOM and the JSON lib rather than concatenate Strings.
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java
incubator/wookie/trunk/src/org/apache/wookie/helpers/ParticipantHelper.java
Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java?rev=1306319&r1=1306318&r2=1306319&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java Wed Mar 28 13:38:26 2012
@@ -34,8 +34,7 @@ import org.apache.wookie.helpers.Partici
/**
* Implementation of the REST API for working with Participants. For a description of the methods implemented by this controller see
- * http://incubator.apache.org/wookie/wookie-rest-api.html
- * @author Scott Wilson
+ * http://incubator.apache.org/wookie/docs/api.html
*
*/
public class ParticipantsController extends Controller {
@@ -72,7 +71,11 @@ public class ParticipantsController exte
IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
if (instance == null) throw new ResourceNotFoundException();
IParticipant[] participants = new SharedContext(instance).getParticipants();
- returnXml(ParticipantHelper.createXMLParticipantsDocument(participants), response);
+ switch (format(request)) {
+ case XML: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
+ case JSON: returnJson(ParticipantHelper.createJSONParticipantsDocument(participants),response);break;
+ default: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
+ }
}
@Override
Modified: incubator/wookie/trunk/src/org/apache/wookie/helpers/ParticipantHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/ParticipantHelper.java?rev=1306319&r1=1306318&r2=1306319&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/ParticipantHelper.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/ParticipantHelper.java Wed Mar 28 13:38:26 2012
@@ -13,21 +13,26 @@
*/
package org.apache.wookie.helpers;
+import org.apache.log4j.Logger;
import org.apache.wookie.beans.IParticipant;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.output.XMLOutputter;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
/**
* A helper for Participants
- * @author scott wilson
- *
*/
public class ParticipantHelper {
-
- private static final String XMLDECLARATION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+
+ static Logger logger = Logger.getLogger(ParticipantHelper.class.getName());
/**
- * Generate a Participants representation doc in XML for a single participant
+ * Create XML representation for a single participant
* @param participant
- * @return
+ * @return a String representing the participant in XML
*/
public static String createXMLParticipantsDocument(IParticipant participant){
IParticipant[] participants = {participant};
@@ -35,61 +40,83 @@ public class ParticipantHelper {
}
/**
- * Generate a Widgets representation doc in XML for an array of widgets, e.g. a catalogue
+ * Create XML representation of an array of participants
*
- * @param widgets
- * @param localIconPath
- * @return
+ * @param participants the participants
+ * @return a String representing the participants in XML
*/
public static String createXMLParticipantsDocument(IParticipant[] participants){
- String document = XMLDECLARATION;
- document += "\n<participants>\n"; //$NON-NLS-1$
+
+ Document document = new Document();
+ Element root = new Element("participants");
+ document.setRootElement(root);
for (IParticipant participant:participants){
- document += toXml(participant);
+ root.addContent(toXml(participant));
}
- document += "</participants>\n"; //$NON-NLS-1$
- return document;
+ return new XMLOutputter().outputString(document);
}
+ /**
+ * Create a JSON representation of a single participant
+ * @param participant
+ * @return JSON output as a String of the participant
+ */
public static String createJSONParticipantDocument(IParticipant participant){
- return "{\"Participant\":"+ParticipantHelper.toJson(participant)+"}"; //$NON-NLS-1$
+ JSONObject json = new JSONObject();
+ try {
+ json.put("Participant",toJson(participant));
+ } catch (JSONException e) {
+ logger.error("Problem marshalling participants to JSON", e);
+ }
+ return json.toString();
}
+ /**
+ * Create a JSON representation of an array of participants
+ * @param participants
+ * @return JSON output as a String
+ */
public static String createJSONParticipantsDocument(IParticipant[] participants){
- String json = "{\"Participants\":[";//$NON-NLS-1$
- String delimit = "";
- for (IParticipant participant: participants){
- json+=delimit+toJson(participant);
- delimit = ","; //$NON-NLS-1$
- }
- json+="]}"; //$NON-NLS-1$
- return json;
+ JSONArray arr = new JSONArray();
+ try {
+ for (IParticipant participant: participants){
+ arr.put(toJson(participant));
+ }
+ JSONObject json = new JSONObject();
+ json.put("Participants", arr);
+ return json.toString();
+ } catch (JSONException e) {
+ logger.error("Problem marshalling participants to JSON", e);
+ return null;
+ }
+
}
/**
- * Returns an XML representation of the given participant.
- *
- * @param participant the participant to represent
- * @return the XML representation of the participant
+ * Returns an XML element for the given participant.
+ * @param participant
+ * @return an XML Element representing the participant
*/
- public static String toXml(IParticipant participant){
- return "<participant id=\""+participant.getParticipantId()+
- "\" display_name=\""+participant.getParticipantDisplayName()+
- "\" thumbnail_url=\""+participant.getParticipantThumbnailUrl()+
- "\" />"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private static Element toXml(IParticipant participant){
+ Element element = new Element("participant");
+ element.setAttribute("id", participant.getParticipantId());
+ element.setAttribute("display_name", participant.getParticipantDisplayName());
+ element.setAttribute("thumbnail_url", participant.getParticipantThumbnailUrl());
+ return element;
}
/**
- * Converts a participant to JSON representation
+ * Creates a JSONObject for the given participant
* @param participant
- * @return
+ * @return a JSONObject representing the participant
+ * @throws JSONException
*/
- public static String toJson(IParticipant participant){
- String json = "{"+
- "\"participant_id\":\""+participant.getParticipantId()+
- "\", \"participant_display_name\":\""+participant.getParticipantDisplayName()+
- "\", \"participant_thumbnail_url\":\""+participant.getParticipantThumbnailUrl()+"\"}";
- return json; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private static JSONObject toJson(IParticipant participant) throws JSONException{
+ JSONObject obj = new JSONObject();
+ obj.put("participant_id", participant.getParticipantId());
+ obj.put("participant_display_name", participant.getParticipantDisplayName());
+ obj.put("participant_thumbnail_url", participant.getParticipantThumbnailUrl());
+ return obj;
}
}