From dab70af4d4f166061bc78586176bcd91373008d2 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Fri, 8 Dec 2017 14:27:22 +0800 Subject: [PATCH] --- src/org/redkale/net/http/HttpResponse.java | 18 ++++++++-------- src/org/redkale/net/http/Rest.java | 24 ++++++++++++---------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/org/redkale/net/http/HttpResponse.java b/src/org/redkale/net/http/HttpResponse.java index 6d7cea33b..3a922bbe7 100644 --- a/src/org/redkale/net/http/HttpResponse.java +++ b/src/org/redkale/net/http/HttpResponse.java @@ -16,6 +16,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Level; +import org.redkale.convert.Convert; import org.redkale.convert.json.JsonConvert; import org.redkale.net.*; import org.redkale.util.AnyValue.DefaultAnyValue; @@ -421,7 +422,7 @@ public class HttpResponse extends Response { if (v instanceof CharSequence) { finish(v.toString()); } else if (v instanceof HttpResult) { - finishJson(convert, (HttpResult) v); + finish(convert, (HttpResult) v); } else if (v instanceof org.redkale.service.RetResult) { finishJson(convert, (org.redkale.service.RetResult) v); } else { @@ -431,22 +432,23 @@ public class HttpResponse extends Response { } /** - * 将HttpResult的结果对象以JSON格式输出 + * 将HttpResult的结果对象输出 * * @param result HttpResult对象 */ - public void finishJson(final HttpResult result) { - finishJson(request.getJsonConvert(), result); + public void finish(final HttpResult result) { + finish(request.getJsonConvert(), result); } /** - * 将HttpResult的结果对象以JSON格式输出 + * 将HttpResult的结果对象输出
+ * 当result不为byte[]/String/ByteBuffer/ByteBuffer[]类型时按Convert 形式输出 * - * @param convert 指定的JsonConvert + * @param convert 指定的Convert * @param result HttpResult对象 */ @SuppressWarnings("unchecked") - public void finishJson(final JsonConvert convert, final HttpResult result) { + public void finish(final Convert convert, final HttpResult result) { if (result == null) { finish(""); return; @@ -457,7 +459,7 @@ public class HttpResponse extends Response { try { finish((File) result.getResult()); } catch (IOException e) { - getContext().getLogger().log(Level.WARNING, "HttpServlet finishJson HttpResult File occur, forece to close channel. request = " + getRequest(), e); + getContext().getLogger().log(Level.WARNING, "HttpServlet finish HttpResult File occur, forece to close channel. request = " + getRequest(), e); finish(500, null); } } else if (result.getResult() instanceof byte[]) { diff --git a/src/org/redkale/net/http/Rest.java b/src/org/redkale/net/http/Rest.java index 8c4eb2489..e4b1d4a0c 100644 --- a/src/org/redkale/net/http/Rest.java +++ b/src/org/redkale/net/http/Rest.java @@ -17,6 +17,7 @@ import jdk.internal.org.objectweb.asm.*; import static jdk.internal.org.objectweb.asm.ClassWriter.COMPUTE_FRAMES; import static jdk.internal.org.objectweb.asm.Opcodes.*; import jdk.internal.org.objectweb.asm.Type; +import org.redkale.convert.Convert; import org.redkale.convert.json.*; import org.redkale.service.*; import org.redkale.util.*; @@ -578,7 +579,8 @@ public final class Rest { final String webServletDesc = Type.getDescriptor(WebServlet.class); final String reqDesc = Type.getDescriptor(HttpRequest.class); final String respDesc = Type.getDescriptor(HttpResponse.class); - final String convertDesc = Type.getDescriptor(JsonConvert.class); + final String convertDesc = Type.getDescriptor(Convert.class); + final String jsonConvertDesc = Type.getDescriptor(JsonConvert.class); final String retDesc = Type.getDescriptor(RetResult.class); final String futureDesc = Type.getDescriptor(CompletableFuture.class); final String flipperDesc = Type.getDescriptor(Flipper.class); @@ -1541,9 +1543,9 @@ public final class Rest { mv.visitVarInsn(ALOAD, 2); //response if (rcs != null && rcs.length > 0) { mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), convertDesc); + mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), jsonConvertDesc); mv.visitVarInsn(ALOAD, maxLocals); - mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + convertDesc + retDesc + ")V", false); + mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + jsonConvertDesc + retDesc + ")V", false); } else { mv.visitVarInsn(ALOAD, maxLocals); mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + retDesc + ")V", false); @@ -1555,12 +1557,12 @@ public final class Rest { mv.visitVarInsn(ALOAD, 2); //response if (rcs != null && rcs.length > 0) { mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), convertDesc); + mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), jsonConvertDesc); mv.visitVarInsn(ALOAD, maxLocals); - mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + convertDesc + httprsDesc + ")V", false); + mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(" + convertDesc + httprsDesc + ")V", false); } else { mv.visitVarInsn(ALOAD, maxLocals); - mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + httprsDesc + ")V", false); + mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(" + httprsDesc + ")V", false); } mv.visitInsn(RETURN); maxLocals++; @@ -1577,9 +1579,9 @@ public final class Rest { mv.visitVarInsn(ALOAD, 2);//response if (rcs != null && rcs.length > 0) { mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), convertDesc); + mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), jsonConvertDesc); mv.visitVarInsn(ALOAD, maxLocals); - mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + convertDesc + futureDesc + ")V", false); + mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + jsonConvertDesc + futureDesc + ")V", false); } else { mv.visitVarInsn(ALOAD, maxLocals); mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + futureDesc + ")V", false); @@ -1591,9 +1593,9 @@ public final class Rest { mv.visitVarInsn(ALOAD, 2); //response if (rcs != null && rcs.length > 0) { mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), convertDesc); + mv.visitFieldInsn(GETFIELD, newDynName, REST_JSONCONVERT_FIELD_PREFIX + restConverts.size(), jsonConvertDesc); mv.visitVarInsn(ALOAD, maxLocals); - mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + convertDesc + "Ljava/lang/Object;)V", false); + mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + jsonConvertDesc + "Ljava/lang/Object;)V", false); } else { mv.visitVarInsn(ALOAD, maxLocals); mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(Ljava/lang/Object;)V", false); @@ -1617,7 +1619,7 @@ public final class Rest { } for (int i = 1; i <= restConverts.size(); i++) { - fv = cw.visitField(ACC_PRIVATE, REST_JSONCONVERT_FIELD_PREFIX + i, convertDesc, null, null); + fv = cw.visitField(ACC_PRIVATE, REST_JSONCONVERT_FIELD_PREFIX + i, jsonConvertDesc, null, null); fv.visitEnd(); }