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(); }