From 22cc7e086cf45e6dd9a26f18b8a9495cadc82ac3 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 26 Sep 2019 16:22:56 +0800 Subject: [PATCH] =?UTF-8?q?RetResult=E5=A2=9E=E5=8A=A0Convert=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/net/http/HttpResponse.java | 8 ++++++-- src/org/redkale/net/http/HttpResult.java | 5 ++--- src/org/redkale/service/RetResult.java | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/org/redkale/net/http/HttpResponse.java b/src/org/redkale/net/http/HttpResponse.java index 06eedf755..526486775 100644 --- a/src/org/redkale/net/http/HttpResponse.java +++ b/src/org/redkale/net/http/HttpResponse.java @@ -390,7 +390,9 @@ public class HttpResponse extends Response { this.header.addValue("retcode", String.valueOf(ret.getRetcode())); this.header.addValue("retinfo", ret.getRetinfo()); } - finish(request.getJsonConvert().convertTo(getBodyBufferSupplier(), ret)); + Convert convert = ret == null ? null : ret.convert(); + if (convert == null) convert = request.getJsonConvert(); + finish(convert.convertTo(getBodyBufferSupplier(), ret)); } /** @@ -497,6 +499,8 @@ public class HttpResponse extends Response { context.getLogger().log(Level.WARNING, "HttpServlet finish File occur, force to close channel. request = " + getRequest(), e); finish(500, null); } + } else if (obj instanceof org.redkale.service.RetResult) { + finishJson((org.redkale.service.RetResult) obj); } else if (obj instanceof HttpResult) { HttpResult result = (HttpResult) obj; if (result.getContentType() != null) setContentType(result.getContentType()); @@ -506,7 +510,7 @@ public class HttpResponse extends Response { } else if (result.getResult() instanceof CharSequence) { finish(result.getResult().toString()); } else { - finish(result.getConvert() == null ? convert : result.getConvert(), result.getResult()); + finish(result.convert() == null ? convert : result.convert(), result.getResult()); } } else { if (hasRender) { diff --git a/src/org/redkale/net/http/HttpResult.java b/src/org/redkale/net/http/HttpResult.java index 7bb9f8a90..ce00e5e6c 100644 --- a/src/org/redkale/net/http/HttpResult.java +++ b/src/org/redkale/net/http/HttpResult.java @@ -90,12 +90,11 @@ public class HttpResult { return this; } - @ConvertDisabled - public Convert getConvert() { + public Convert convert() { return convert; } - public void setConvert(Convert convert) { + public void convert(Convert convert) { this.convert = convert; } diff --git a/src/org/redkale/service/RetResult.java b/src/org/redkale/service/RetResult.java index 8460cd2d6..6cb63f39e 100644 --- a/src/org/redkale/service/RetResult.java +++ b/src/org/redkale/service/RetResult.java @@ -7,6 +7,7 @@ package org.redkale.service; import java.util.*; import java.util.concurrent.CompletableFuture; +import org.redkale.convert.Convert; import org.redkale.convert.json.*; import org.redkale.util.Utility; @@ -33,6 +34,8 @@ public class RetResult { protected Map attach; + protected Convert convert; + public RetResult() { } @@ -40,6 +43,11 @@ public class RetResult { this.result = result; } + public RetResult(Convert convert, T result) { + this.convert = convert; + this.result = result; + } + public RetResult(int retcode) { this.retcode = retcode; } @@ -55,6 +63,14 @@ public class RetResult { this.result = result; } + public Convert convert() { + return convert; + } + + public void convert(Convert convert) { + this.convert = convert; + } + public static RetResult success() { return new RetResult(); }