From 264dce055c0705f2a0357cfe1347106ab09c4b4b Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 25 Jun 2023 22:43:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96HttpResponse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redkale/mq/HttpMessageLocalClient.java | 20 --- .../org/redkale/mq/HttpMessageResponse.java | 51 +------ .../org/redkale/net/http/HttpResponse.java | 143 ++++++------------ 3 files changed, 48 insertions(+), 166 deletions(-) diff --git a/src/main/java/org/redkale/mq/HttpMessageLocalClient.java b/src/main/java/org/redkale/mq/HttpMessageLocalClient.java index dc50b11e3..b742108b5 100644 --- a/src/main/java/org/redkale/mq/HttpMessageLocalClient.java +++ b/src/main/java/org/redkale/mq/HttpMessageLocalClient.java @@ -197,21 +197,6 @@ public class HttpMessageLocalClient extends HttpMessageClient { this.future = future; } - @Override - public void finishJson(final Object obj) { - finish((Convert) null, (Type) null, obj); - } - - @Override - public void finishJson(final Convert convert, final Object obj) { - finish(convert, (Type) null, obj); - } - - @Override - public void finishJson(final Type type, final Object obj) { - finish((Convert) null, type, obj); - } - @Override public void finishJson(final Convert convert, final Type type, final Object obj) { if (future == null) { @@ -220,11 +205,6 @@ public class HttpMessageLocalClient extends HttpMessageClient { future.complete(obj); } - @Override - public void finish(Type type, org.redkale.service.RetResult ret) { - finish((Convert) null, type, ret); - } - @Override public void finish(final Convert convert, Type type, org.redkale.service.RetResult ret) { if (future == null) { diff --git a/src/main/java/org/redkale/mq/HttpMessageResponse.java b/src/main/java/org/redkale/mq/HttpMessageResponse.java index 35ed7e741..f1a7dbe9d 100644 --- a/src/main/java/org/redkale/mq/HttpMessageResponse.java +++ b/src/main/java/org/redkale/mq/HttpMessageResponse.java @@ -12,7 +12,6 @@ import java.util.Arrays; import java.util.function.*; import java.util.logging.Level; import org.redkale.convert.Convert; -import org.redkale.convert.json.JsonConvert; import static org.redkale.mq.MessageRecord.CTYPE_HTTP_RESULT; import org.redkale.net.Response; import org.redkale.net.http.*; @@ -61,7 +60,7 @@ public class HttpMessageResponse extends HttpResponse { type, this.message, this.callback, this.messageClient, this.producer, message.getRespTopic(), result); } - public void finishHttpResult(Type type, Convert respConvert, HttpResult result) { + public void finishHttpResult(Convert respConvert, Type type, HttpResult result) { finishHttpResult(producer.logger.isLoggable(Level.FINEST), respConvert == null ? ((HttpMessageRequest) this.request).getRespConvert() : respConvert, type, this.message, this.callback, this.messageClient, this.producer, message.getRespTopic(), result); @@ -115,34 +114,6 @@ public class HttpMessageResponse extends HttpResponse { return rs; } - @Override - public void finishJson(final Object obj) { - finishJson((JsonConvert) null, (Type) null, obj); - } - - @Override - public void finishJson(final Convert convert, final Object obj) { - if (message.isEmptyRespTopic()) { - if (callback != null) { - callback.run(); - } - return; - } - finishHttpResult(obj.getClass(), convert, new HttpResult(obj)); - - } - - @Override - public void finishJson(final Type type, final Object obj) { - if (message.isEmptyRespTopic()) { - if (callback != null) { - callback.run(); - } - return; - } - finishHttpResult(type, new HttpResult(obj)); - } - @Override public void finishJson(final Convert convert, final Type type, final Object obj) { if (message.isEmptyRespTopic()) { @@ -151,30 +122,18 @@ public class HttpMessageResponse extends HttpResponse { } return; } - finishHttpResult(type, convert, new HttpResult(obj)); + finishHttpResult(convert, type, new HttpResult(obj)); } @Override - public void finish(Type type, org.redkale.service.RetResult ret) { + public void finish(final Convert convert, Type type, RetResult ret) { if (message.isEmptyRespTopic()) { if (callback != null) { callback.run(); } return; } - finish(type, new HttpResult(ret)); - - } - - @Override - public void finish(final Convert convert, Type type, org.redkale.service.RetResult ret) { - if (message.isEmptyRespTopic()) { - if (callback != null) { - callback.run(); - } - return; - } - finishHttpResult(type, convert, new HttpResult(ret)); + finishHttpResult(convert, type, new HttpResult(ret)); } @Override @@ -185,7 +144,7 @@ public class HttpMessageResponse extends HttpResponse { } return; } - finishHttpResult(type, convert, new HttpResult(obj)); + finishHttpResult(convert, type, new HttpResult(obj)); } @Override diff --git a/src/main/java/org/redkale/net/http/HttpResponse.java b/src/main/java/org/redkale/net/http/HttpResponse.java index 3bc5ae6d7..f286cd97a 100644 --- a/src/main/java/org/redkale/net/http/HttpResponse.java +++ b/src/main/java/org/redkale/net/http/HttpResponse.java @@ -20,6 +20,7 @@ import java.util.logging.*; import org.redkale.convert.*; import org.redkale.convert.json.*; import org.redkale.net.*; +import org.redkale.service.RetResult; import org.redkale.util.AnyValue.DefaultAnyValue; import org.redkale.util.AnyValue.Entry; import org.redkale.util.*; @@ -140,7 +141,7 @@ public class HttpResponse extends Response { private BiConsumer cacheHandler; - private BiFunction retResultHandler; + private BiFunction retResultHandler; //------------------------------------------------ private final String plainContentType; @@ -181,7 +182,7 @@ public class HttpResponse extends Response { protected final ConvertBytesHandler convertHandler = new ConvertBytesHandler() { @Override public void completed(byte[] bs, int offset, int length, Consumer callback, A attachment) { - HttpResponse.this.finish(bs, offset, length, callback, attachment); + finish(bs, offset, length, callback, attachment); } }; @@ -355,19 +356,8 @@ public class HttpResponse extends Response { * * @param obj 输出对象 */ - public void finishJson(final Object obj) { - this.contentType = this.jsonContentType; - if (this.recycleListener != null) { - this.output = obj; - } - Convert c = request.getRespConvert(); - if (c == jsonRootConvert) { - JsonBytesWriter writer = jsonWriter; - c.convertTo(writer.clear(), obj); - finish(false, (String) null, writer.content(), writer.offset(), writer.length(), null, null); - } else { - c.convertToBytes(obj, convertHandler); - } + public final void finishJson(final Object obj) { + finishJson((Convert) null, (Type) null, obj); } /** @@ -376,18 +366,8 @@ public class HttpResponse extends Response { * @param convert 指定的JsonConvert * @param obj 输出对象 */ - public void finishJson(final Convert convert, final Object obj) { - this.contentType = this.jsonContentType; - if (this.recycleListener != null) { - this.output = obj; - } - if (convert == jsonRootConvert) { - JsonBytesWriter writer = jsonWriter; - convert.convertTo(writer.clear(), obj); - finish(false, (String) null, writer.content(), writer.offset(), writer.length(), null, null); - } else { - convert.convertToBytes(obj, convertHandler); - } + public final void finishJson(final Convert convert, final Object obj) { + finishJson(convert, (Type) null, obj); } /** @@ -396,19 +376,8 @@ public class HttpResponse extends Response { * @param type 指定的类型 * @param obj 输出对象 */ - public void finishJson(final Type type, final Object obj) { - this.contentType = this.jsonContentType; - if (this.recycleListener != null) { - this.output = obj; - } - Convert c = request.getRespConvert(); - if (c == jsonRootConvert) { - JsonBytesWriter writer = jsonWriter; - c.convertTo(writer.clear(), type, obj); - finish(false, (String) null, writer.content(), writer.offset(), writer.length(), null, null); - } else { - c.convertToBytes(type, obj, convertHandler); - } + public final void finishJson(final Type type, final Object obj) { + finishJson((Convert) null, type, obj); } /** @@ -423,12 +392,14 @@ public class HttpResponse extends Response { if (this.recycleListener != null) { this.output = obj; } - if (convert == jsonRootConvert) { + Convert c = convert == null ? request.getRespConvert() : convert; + Type t = type == null ? (obj == null ? null : obj.getClass()) : type; + if (c == jsonRootConvert) { JsonBytesWriter writer = jsonWriter; - convert.convertTo(writer.clear(), type, obj); + c.convertTo(writer.clear(), t, obj); finish(false, (String) null, writer.content(), writer.offset(), writer.length(), null, null); } else { - convert.convertToBytes(type, obj, convertHandler); + c.convertToBytes(t, obj, convertHandler); } } @@ -450,7 +421,7 @@ public class HttpResponse extends Response { * @param ret RetResult输出对象 */ // @Deprecated //@since 2.5.0 -// public void finishJson(Type type, org.redkale.service.RetResult ret) { +// public void finishJson(Type type, RetResult ret) { // this.contentType = this.jsonContentType; // if (this.retResultHandler != null) { // ret = this.retResultHandler.apply(this.request, ret); @@ -478,7 +449,7 @@ public class HttpResponse extends Response { * @param ret RetResult输出对象 */ // @Deprecated //@since 2.5.0 -// public void finishJson(final Convert convert, Type type, org.redkale.service.RetResult ret) { +// public void finishJson(final Convert convert, Type type, RetResult ret) { // this.contentType = this.jsonContentType; // if (this.retResultHandler != null) { // ret = this.retResultHandler.apply(this.request, ret); @@ -514,34 +485,8 @@ public class HttpResponse extends Response { * @param type 指定的RetResult泛型类型 * @param ret RetResult输出对象 */ - @SuppressWarnings("null") - public void finish(Type type, org.redkale.service.RetResult ret) { - if (this.retResultHandler != null) { - ret = this.retResultHandler.apply(this.request, ret); - } - if (this.recycleListener != null) { - this.output = ret; - } - if (ret != null && !ret.isSuccess()) { - this.header.addValue("retcode", String.valueOf(ret.getRetcode())); - this.header.addValue("retinfo", ret.getRetinfo()); - } - Convert cc = ret == null ? null : ret.convert(); - if (cc == null) { - cc = request.getRespConvert(); - } - if (cc instanceof JsonConvert) { - this.contentType = this.jsonContentType; - } else if (cc instanceof TextConvert) { - this.contentType = this.plainContentType; - } - if (cc == jsonRootConvert) { - JsonBytesWriter writer = jsonWriter; - cc.convertTo(writer.clear(), type, ret); - finish(false, (String) null, writer.content(), writer.offset(), writer.length(), null, null); - } else { - cc.convertToBytes(type, ret, convertHandler); - } + public final void finish(Type type, RetResult ret) { + finish((Convert) null, type, ret); } /** @@ -552,7 +497,8 @@ public class HttpResponse extends Response { * @param ret RetResult输出对象 */ @SuppressWarnings("null") - public void finish(final Convert convert, Type type, org.redkale.service.RetResult ret) { + public void finish(final Convert convert, Type type, RetResult ret) { + Objects.requireNonNull(type); if (this.retResultHandler != null) { ret = this.retResultHandler.apply(this.request, ret); } @@ -590,8 +536,8 @@ public class HttpResponse extends Response { * @param resultType HttpResult.result的泛型类型 * @param result HttpResult输出对象 */ - public void finish(Type resultType, HttpResult result) { - finish(request.getRespConvert(), resultType, result); + public final void finish(Type resultType, HttpResult result) { + finish((Convert) null, resultType, result); } /** @@ -626,8 +572,8 @@ public class HttpResponse extends Response { * @param valueType CompletionFuture.value的泛型类型 * @param future CompletionStage输出对象 */ - public void finishFuture(Type valueType, CompletionStage future) { - finishFuture(request.getRespConvert(), valueType, future); + public final void finishFuture(Type valueType, CompletionStage future) { + finishFuture((Convert) null, valueType, future); } /** @@ -658,7 +604,7 @@ public class HttpResponse extends Response { * @param valueType CompletionFuture.value的泛型类型 * @param future CompletionStage输出对象 */ - public void finishJsonFuture(Type valueType, CompletionStage future) { + public final void finishJsonFuture(Type valueType, CompletionStage future) { finishJsonFuture(request.getRespConvert(), valueType, future); } @@ -691,7 +637,7 @@ public class HttpResponse extends Response { * @param valueType Publisher的泛型类型 * @param publisher Publisher输出对象 */ - public void finishPublisher(Type valueType, Flow.Publisher publisher) { + public final void finishPublisher(Type valueType, Flow.Publisher publisher) { finishPublisher(request.getRespConvert(), valueType, publisher); } @@ -703,7 +649,7 @@ public class HttpResponse extends Response { * @param valueType Publisher的泛型类型 * @param publisher Publisher输出对象 */ - public void finishPublisher(final Convert convert, Type valueType, Flow.Publisher publisher) { + public final void finishPublisher(final Convert convert, Type valueType, Flow.Publisher publisher) { finishFuture(convert, valueType, (CompletionStage) Flows.createMonoFuture(publisher)); } @@ -713,8 +659,8 @@ public class HttpResponse extends Response { * @param valueType Publisher的泛型类型 * @param publisher Publisher输出对象 */ - public void finishPublisher(Type valueType, Object publisher) { - finishPublisher(request.getRespConvert(), valueType, publisher); + public final void finishPublisher(Type valueType, Object publisher) { + finishPublisher((Convert) null, valueType, publisher); } /** @@ -724,7 +670,7 @@ public class HttpResponse extends Response { * @param valueType Publisher的泛型类型 * @param publisher Publisher输出对象 */ - public void finishPublisher(final Convert convert, Type valueType, Object publisher) { + public final void finishPublisher(final Convert convert, Type valueType, Object publisher) { finishFuture(convert, valueType, (CompletionStage) Flows.maybePublisherToFuture(publisher)); } @@ -733,8 +679,8 @@ public class HttpResponse extends Response { * * @param future HttpScope输出异步对象 */ - public void finishScopeFuture(CompletionStage future) { - finishScopeFuture(request.getRespConvert(), future); + public final void finishScopeFuture(CompletionStage future) { + finishScopeFuture((Convert) null, future); } /** @@ -763,8 +709,8 @@ public class HttpResponse extends Response { * * @param result HttpScope输出对象 */ - public void finish(HttpScope result) { - finish(request.getRespConvert(), result); + public final void finish(HttpScope result) { + finish((Convert) null, result); } /** @@ -797,9 +743,8 @@ public class HttpResponse extends Response { * * @param obj 输出对象 */ - @SuppressWarnings("unchecked") - public void finish(final Object obj) { - finish(request.getRespConvert(), (Type) null, obj); + public final void finish(final Object obj) { + finish((Convert) null, (Type) null, obj); } /** @@ -808,8 +753,7 @@ public class HttpResponse extends Response { * @param convert 指定的Convert * @param obj 输出对象 */ - @SuppressWarnings("unchecked") - public void finish(final Convert convert, final Object obj) { + public final void finish(final Convert convert, final Object obj) { finish(convert, (Type) null, obj); } @@ -819,8 +763,7 @@ public class HttpResponse extends Response { * @param type 指定的类型, 不一定是obj的数据类型,必然obj为CompletableFuture, type应该为Future的元素类型 * @param obj 输出对象 */ - @SuppressWarnings("unchecked") - public void finish(final Type type, Object obj) { + public final void finish(final Type type, Object obj) { finish((Convert) null, type, obj); } @@ -845,7 +788,7 @@ public class HttpResponse extends Response { } else if (cc instanceof TextConvert) { this.contentType = this.plainContentType; } - finish("null"); + cc.convertToBytes(val, convertHandler); } else if (val instanceof CompletionStage) { finishFuture(convert, val == obj ? type : null, (CompletionStage) val); } else if (val instanceof CharSequence) { @@ -859,8 +802,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 (val instanceof org.redkale.service.RetResult) { - finish(convert, type, (org.redkale.service.RetResult) val); + } else if (val instanceof RetResult) { + finish(convert, type, (RetResult) val); } else if (val instanceof HttpResult) { finish(convert, type, (HttpResult) val); } else if (val instanceof HttpScope) { @@ -1574,7 +1517,7 @@ public class HttpResponse extends Response { * * @return 拦截器 */ - protected BiFunction getRetResultHandler() { + protected BiFunction getRetResultHandler() { return retResultHandler; } @@ -1583,7 +1526,7 @@ public class HttpResponse extends Response { * * @param retResultHandler 拦截器 */ - public void retResultHandler(BiFunction retResultHandler) { + public void retResultHandler(BiFunction retResultHandler) { this.retResultHandler = retResultHandler; }