You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ev...@apache.org on 2009/02/19 09:11:45 UTC

svn commit: r745774 - in /incubator/shindig/trunk/java/common/src: main/java/org/apache/shindig/protocol/ main/java/org/apache/shindig/protocol/conversion/ test/java/org/apache/shindig/protocol/

Author: evan
Date: Thu Feb 19 08:11:44 2009
New Revision: 745774

URL: http://svn.apache.org/viewvc?rev=745774&view=rev
Log:
Add append() method to BeanConverter. This allows overriding JSON serialization for JsonRpc servlet.

Modified:
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanAtomConverter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanConverter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonLibConverter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXmlConverter.java
    incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java Thu Feb 19 08:11:44 2009
@@ -18,7 +18,6 @@
 package org.apache.shindig.protocol;
 
 import org.apache.shindig.auth.SecurityToken;
-import org.apache.shindig.common.JsonSerializer;
 import org.apache.shindig.common.util.JsonConversionUtil;
 
 import com.google.common.collect.Lists;
@@ -116,8 +115,8 @@
       }
       result.add(getJSONResponse(key, getResponseItem(responses.get(i))));
     }
-
-    JsonSerializer.append(servletResponse.getWriter(), result);
+    
+    jsonConverter.append(servletResponse.getWriter(), result);
   }
 
   protected void dispatch(JSONObject request, HttpServletRequest servletRequest,
@@ -135,7 +134,7 @@
     ResponseItem response = getResponseItem(future);
     Object result = getJSONResponse(key, response);
 
-    JsonSerializer.append(servletResponse.getWriter(), result);
+    jsonConverter.append(servletResponse.getWriter(), result);
   }
 
   /**
@@ -190,7 +189,7 @@
   @Override
   protected void sendError(HttpServletResponse servletResponse, ResponseItem responseItem)
       throws IOException {
-    JsonSerializer.append(servletResponse.getWriter(), getErrorJson(responseItem));
+    jsonConverter.append(servletResponse.getWriter(), getErrorJson(responseItem));
   }
 
   private void sendBadRequest(Throwable t, HttpServletResponse response) throws IOException {

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanAtomConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanAtomConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanAtomConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanAtomConverter.java Thu Feb 19 08:11:44 2009
@@ -108,4 +108,8 @@
       throw new RuntimeException(String.format(ERROR_MESSAGE_FMT, xml, className), e);
     }
   }
+  
+  public void append(Appendable buf, Object pojo) throws IOException {
+    buf.append(convertToString(pojo));
+  }
 }

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanConverter.java Thu Feb 19 08:11:44 2009
@@ -17,10 +17,20 @@
  */
 package org.apache.shindig.protocol.conversion;
 
+import java.io.IOException;
+
 public interface BeanConverter {
   <T> T convertToObject(String string, Class<T> className);
 
   String convertToString(Object pojo);
 
   String getContentType();
+
+  /**
+   * Serialize object to a buffer. Useful for high performance output.
+   * @param buf Buffer to append to
+   * @param pojo Object to serialize
+   * @throws IOException If {@link Appendable#append(char)} throws an exception.
+   */
+  public void append(Appendable buf, Object pojo) throws IOException;
 }

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java Thu Feb 19 08:11:44 2009
@@ -32,6 +32,7 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
@@ -72,6 +73,10 @@
     return JsonSerializer.serialize(pojo);
   }
 
+  public void append(Appendable buf, Object pojo) throws IOException {
+    JsonSerializer.append(buf, pojo);
+  }
+
   private static Map<String, Method> getSetters(Object pojo) {
     Class<?> clazz = pojo.getClass();
 

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonLibConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonLibConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonLibConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonLibConverter.java Thu Feb 19 08:11:44 2009
@@ -30,6 +30,7 @@
 import net.sf.json.JsonConfig;
 import net.sf.json.util.JSONUtils;
 
+import java.io.IOException;
 import java.lang.reflect.Array;
 import java.util.List;
 
@@ -160,5 +161,9 @@
   public void addMapping(String key, Class<?> class1) {
     jsonConfig.getClassMap().put(key, class1);
   }
+  
+  public void append(Appendable buf, Object pojo) throws IOException {
+    buf.append(convertToString(pojo));
+  }
 
 }

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java Thu Feb 19 08:11:44 2009
@@ -35,6 +35,7 @@
 import com.thoughtworks.xstream.mapper.DefaultMapper;
 import com.thoughtworks.xstream.mapper.Mapper;
 
+import java.io.IOException;
 import java.util.Map;
 
 public class BeanXStreamConverter implements BeanConverter {
@@ -90,7 +91,7 @@
    * a thread at any one time. This only matters if this class is extended.
    *
    * @param obj
-   * @return
+   * @return The XML as a string
    */
   private String convertToXml(Object obj) {
 
@@ -136,4 +137,7 @@
     return (T) cc.xstream.fromXML(xml);
   }
 
+  public void append(Appendable buf, Object pojo) throws IOException {
+    buf.append(convertToString(pojo));
+  }
 }

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXmlConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXmlConverter.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXmlConverter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXmlConverter.java Thu Feb 19 08:11:44 2009
@@ -104,4 +104,8 @@
       throw new RuntimeException(errorMessage, e);
     }
   }
+  
+  public void append(Appendable buf, Object pojo) throws IOException {
+    buf.append(convertToString(pojo));
+  }
 }

Modified: incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java?rev=745774&r1=745773&r2=745774&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java (original)
+++ incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java Thu Feb 19 08:11:44 2009
@@ -23,6 +23,7 @@
 import org.apache.shindig.protocol.conversion.BeanJsonConverter;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.inject.Guice;
 
 import org.easymock.IMocksControl;
 import org.easymock.classextension.EasyMock;
@@ -66,7 +67,7 @@
     servlet = new JsonRpcServlet();
     req = mockControl.createMock(HttpServletRequest.class);
     res = mockControl.createMock(HttpServletResponse.class);
-    jsonConverter = mockControl.createMock(BeanJsonConverter.class);
+    jsonConverter = new BeanJsonConverter(Guice.createInjector());
     xmlConverter = mockControl.createMock(BeanConverter.class);
     atomConverter = mockControl.createMock(BeanConverter.class);