package com.doopp.reactor.guice.test.util; import com.doopp.reactor.guice.StatusMessageException; import com.doopp.reactor.guice.json.HttpMessageConverter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.LongSerializationPolicy; import com.google.gson.annotations.Expose; public class MyGsonHttpMessageConverter implements HttpMessageConverter { private Gson gson; public MyGsonHttpMessageConverter() { this.gson = new GsonBuilder() .serializeNulls() .setDateFormat("yyyy-MM-dd HH:mm:ss") .setLongSerializationPolicy(LongSerializationPolicy.STRING) // .excludeFieldsWithoutExposeAnnotation() .create(); } public MyGsonHttpMessageConverter(Gson gson) { assert gson!=null : "A Gson instance is required"; this.gson = gson; } public void setGson(Gson gson) { assert gson!=null : "A Gson instance is required"; this.gson = gson; } public Gson getGson() { return this.gson; } @Override public String toJson(Object object) { return this.gson.toJson(new response(object)); } @Override public <T> T fromJson(String json, Class<T> clazz) { return this.gson.fromJson(json, clazz); } private class response { @Expose private int err_code = 0; @Expose private String err_msg = ""; @Expose private Object data; public Object getData() { return data; } public void setData(Object data) { this.data = data; } public int getErr_code() { return err_code; } public void setErr_code(int err_code) { this.err_code = err_code; } public String getErr_msg() { return err_msg; } public void setErr_msg(String err_msg) { this.err_msg = err_msg; } public response(Object data) { if (data instanceof StatusMessageException) { StatusMessageException _data = (StatusMessageException) data; this.setErr_code(_data.getCode()); this.setErr_msg(_data.getMessage()); } else if (data instanceof Exception) { Exception _data = (Exception) data; this.setErr_code(500); this.setErr_msg(_data.getMessage()); } else { this.data = data; } } public String toString() { return "{" + "\"err_code\":"+this.err_code+", " + "\"err_msg\":\""+this.err_msg+"\"" + "\"data\":\""+this.data.toString()+"\"" + "}"; } } }