package org.t2framework.confeito.parameter.impl; import java.io.Reader; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import org.t2framework.confeito.action.ActionContext; import org.t2framework.confeito.action.ErrorInfo; import org.t2framework.confeito.annotation.JsonParam; import org.t2framework.confeito.contexts.WebContext; import org.t2framework.confeito.parameter.AbstractParameterResolver; import com.google.gson.Gson; public class JsonParameterResolverImpl extends AbstractParameterResolver { public JsonParameterResolverImpl() { setTargetAnnotationClass(JsonParam.class); } @Override public Object resolve(ActionContext actionContext, Method md, int paramIndex, Annotation[] paramAnnotations, Class<?> paramClass) { final WebContext context = WebContext.get(); final ErrorInfo errorInfo = actionContext.getErrorInfo(); Gson gson = new Gson(); try { final HttpServletRequest req = context.getRequest() .getNativeResource(); final Reader reader = req.getReader(); Object o = gson.fromJson(reader, paramClass); return o; } catch (Throwable t) { errorInfo.addErrorInfo(getClass().getName(), t); return null; } } }