From 31abc26dd0354bc2dafe27c011c2e54934a89486 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 02 Oct 2011 15:37:24 -0400 Subject: [PATCH] Fairly complete json rpc interface to view/control Gitblit data objects. --- src/com/gitblit/JsonServlet.java | 31 +++++++++++++++++++++++++++---- 1 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/com/gitblit/JsonServlet.java b/src/com/gitblit/JsonServlet.java index b1d1053..ad1d67b 100644 --- a/src/com/gitblit/JsonServlet.java +++ b/src/com/gitblit/JsonServlet.java @@ -17,6 +17,7 @@ import java.io.BufferedReader; import java.io.IOException; +import java.lang.reflect.Type; import java.text.MessageFormat; import javax.servlet.ServletException; @@ -27,6 +28,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.gitblit.utils.StringUtils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -72,6 +74,30 @@ protected <X> X deserialize(HttpServletRequest request, HttpServletResponse response, Class<X> clazz) throws IOException { + String json = readJson(request, response); + if (StringUtils.isEmpty(json)) { + return null; + } + + Gson gson = new Gson(); + X object = gson.fromJson(json.toString(), clazz); + return object; + } + + protected <X> X deserialize(HttpServletRequest request, HttpServletResponse response, Type type) + throws IOException { + String json = readJson(request, response); + if (StringUtils.isEmpty(json)) { + return null; + } + + Gson gson = new Gson(); + X object = gson.fromJson(json.toString(), type); + return object; + } + + private String readJson(HttpServletRequest request, HttpServletResponse response) + throws IOException { BufferedReader reader = request.getReader(); StringBuilder json = new StringBuilder(); String line = null; @@ -86,10 +112,7 @@ response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return null; } - - Gson gson = new Gson(); - X object = gson.fromJson(json.toString(), clazz); - return object; + return json.toString(); } protected void serialize(HttpServletResponse response, Object o) throws IOException { -- Gitblit v1.9.1