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