diff --git a/pom.xml b/pom.xml index 389df3e..d2e0079 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.cloudowr sdk - 1.1.2 + 1.2.3 diff --git a/src/main/java/cn/cloudowr/sdk/jfinal/Controller.java b/src/main/java/cn/cloudowr/sdk/jfinal/Controller.java new file mode 100644 index 0000000..690d960 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/jfinal/Controller.java @@ -0,0 +1,19 @@ +package cn.cloudowr.sdk.jfinal; + +import cn.cloudowr.sdk.FastJSONUtil; +import com.jfinal.core.ActionException; + +/** + * Created by lyf66 on 2017/2/20. + */ +public class Controller extends com.jfinal.core.Controller{ + @Override + public void renderError(int errorCode, String msg) { + throw new ActionException(errorCode, new ErrorRender(errorCode, msg)); + } + + @Override + public void renderJson(Object o) { + renderJson(FastJSONUtil.bsonToJSON(o)); + } +} diff --git a/src/main/java/cn/cloudowr/sdk/jfinal/ErrorInterceptor.java b/src/main/java/cn/cloudowr/sdk/jfinal/ErrorInterceptor.java new file mode 100644 index 0000000..b401a03 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/jfinal/ErrorInterceptor.java @@ -0,0 +1,27 @@ +package cn.cloudowr.sdk.jfinal; + +import com.jfinal.aop.Interceptor; +import com.jfinal.aop.Invocation; +import com.jfinal.core.ActionException; +import com.jfinal.render.Render; + +/** + * Created by lyf66 on 2017/2/20. + */ +public class ErrorInterceptor implements Interceptor { + @Override + public void intercept(Invocation inv) { + try { + inv.invoke(); + } catch (Exception e) { + if (e instanceof ActionException) { + ActionException ae = (ActionException) e; + Render render = ae.getErrorRender(); + render.render(); + } else { + new ErrorRender(500, inv.getController().getResponse()).render(); + throw e; + } + } + } +} diff --git a/src/main/java/cn/cloudowr/sdk/jfinal/ErrorRender.java b/src/main/java/cn/cloudowr/sdk/jfinal/ErrorRender.java new file mode 100644 index 0000000..0a5ba1a --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/jfinal/ErrorRender.java @@ -0,0 +1,68 @@ +package cn.cloudowr.sdk.jfinal; + +import com.jfinal.render.Render; +import com.jfinal.render.RenderException; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Created by lyf66 on 2017/2/20. + */ +public class ErrorRender extends Render { + protected static final String contentType = "text/html; charset=" + getEncoding(); + + private int errorCode; + private String msg; + + public ErrorRender(int errorCode) { + this.errorCode = errorCode; + this.msg = errorCode + ""; + } + + public ErrorRender(int errorCode, String msg) { + this.errorCode = errorCode; + this.msg = msg; + } + + public ErrorRender(int errorCode, HttpServletResponse response) { + this.errorCode = errorCode; + this.response = response; + this.msg = errorCode + ""; + } + + @Override + public void render() { + response.setStatus(errorCode); + + PrintWriter writer = null; + try { + response.setContentType(contentType); + writer = response.getWriter(); + writer.write(msg); + writer.flush(); + } catch (IOException e) { + throw new RenderException(e); + } finally { + if (writer != null) + writer.close(); + } + } + + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } +} diff --git a/src/main/java/cn/cloudowr/sdk/IdInterceptor.java b/src/main/java/cn/cloudowr/sdk/jfinal/IdInterceptor.java similarity index 73% rename from src/main/java/cn/cloudowr/sdk/IdInterceptor.java rename to src/main/java/cn/cloudowr/sdk/jfinal/IdInterceptor.java index b49f89f..435007c 100644 --- a/src/main/java/cn/cloudowr/sdk/IdInterceptor.java +++ b/src/main/java/cn/cloudowr/sdk/jfinal/IdInterceptor.java @@ -1,4 +1,4 @@ -package cn.cloudowr.sdk; +package cn.cloudowr.sdk.jfinal; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; @@ -14,7 +14,7 @@ public class IdInterceptor implements Interceptor { if (id != null && !id.isEmpty()) { inv.invoke(); } else { - inv.getController().renderError(400); + ((Controller)inv.getController()).renderError(400, "id must not be null"); } } } diff --git a/src/main/java/cn/cloudowr/sdk/JQueryParameterFilter.java b/src/main/java/cn/cloudowr/sdk/jfinal/JQueryParameterFilter.java similarity index 97% rename from src/main/java/cn/cloudowr/sdk/JQueryParameterFilter.java rename to src/main/java/cn/cloudowr/sdk/jfinal/JQueryParameterFilter.java index c61f1c4..d326367 100644 --- a/src/main/java/cn/cloudowr/sdk/JQueryParameterFilter.java +++ b/src/main/java/cn/cloudowr/sdk/jfinal/JQueryParameterFilter.java @@ -1,4 +1,4 @@ -package cn.cloudowr.sdk; +package cn.cloudowr.sdk.jfinal; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; diff --git a/src/main/java/cn/cloudowr/sdk/jfinal/RestfulStyle.java b/src/main/java/cn/cloudowr/sdk/jfinal/RestfulStyle.java new file mode 100644 index 0000000..1335196 --- /dev/null +++ b/src/main/java/cn/cloudowr/sdk/jfinal/RestfulStyle.java @@ -0,0 +1,12 @@ +package cn.cloudowr.sdk.jfinal; + +/** + * Created by lyf66 on 2017/2/20. + */ +public interface RestfulStyle { + void index(); + void show(); + void save(); + void update(); + void delete(); +}