From ca2f34bfac8cc61ba02d53b5d0937bb18951160b Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Fri, 19 Jun 2020 00:18:38 +0800 Subject: [PATCH] --- src/org/redkale/mq/HttpMessageClient.java | 20 ++++++++++++++++ .../redkale/net/http/HttpSimpleRequest.java | 16 +++++++++++-- src/org/redkale/service/RetResult.java | 24 ++++++++++++++++++- 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/src/org/redkale/mq/HttpMessageClient.java b/src/org/redkale/mq/HttpMessageClient.java index 8af8c12e0..9fefb0622 100644 --- a/src/org/redkale/mq/HttpMessageClient.java +++ b/src/org/redkale/mq/HttpMessageClient.java @@ -5,10 +5,12 @@ */ package org.redkale.mq; +import java.lang.reflect.Type; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; import org.redkale.convert.ConvertType; +import org.redkale.convert.json.JsonConvert; import org.redkale.net.http.*; /** @@ -95,6 +97,20 @@ public class HttpMessageClient extends MessageClient { produceMessage(topic, convertType, userid, groupid, request, null); } + public final CompletableFuture sendMessage(HttpSimpleRequest request, Type type) { + return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, 0, null, request, null).thenApply((HttpResult httbs) -> { + if (httbs == null || httbs.getResult() == null) return null; + return JsonConvert.root().convertFrom(type, httbs.getResult()); + }); + } + + public final CompletableFuture sendMessage(int userid, HttpSimpleRequest request, Type type) { + return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, null, request, null).thenApply((HttpResult httbs) -> { + if (httbs == null || httbs.getResult() == null) return null; + return JsonConvert.root().convertFrom(type, httbs.getResult()); + }); + } + public final CompletableFuture> sendMessage(HttpSimpleRequest request) { return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, 0, null, request, null); } @@ -103,6 +119,10 @@ public class HttpMessageClient extends MessageClient { return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, 0, null, request, counter); } + public final CompletableFuture> sendMessage(int userid, HttpSimpleRequest request) { + return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, null, request, null); + } + public final CompletableFuture> sendMessage(int userid, String groupid, HttpSimpleRequest request) { return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, groupid, request, null); } diff --git a/src/org/redkale/net/http/HttpSimpleRequest.java b/src/org/redkale/net/http/HttpSimpleRequest.java index bd3582d5c..9098be29b 100644 --- a/src/org/redkale/net/http/HttpSimpleRequest.java +++ b/src/org/redkale/net/http/HttpSimpleRequest.java @@ -8,7 +8,7 @@ package org.redkale.net.http; import java.util.*; import org.redkale.convert.ConvertColumn; import org.redkale.convert.json.JsonConvert; -import org.redkale.util.Comment; +import org.redkale.util.*; /** * HttpRequest的缩减版, 只提供部分字段 @@ -50,6 +50,18 @@ public class HttpSimpleRequest implements java.io.Serializable { @Comment("http body信息") protected byte[] body; //对应HttpRequest.array + public static HttpSimpleRequest create(String requestURI) { + return new HttpSimpleRequest().requestURI(requestURI); + } + + public static HttpSimpleRequest create(String requestURI, Object... params) { + HttpSimpleRequest req = new HttpSimpleRequest().requestURI(requestURI); + for (Map.Entry en : Utility.ofMap(params).entrySet()) { + req.param(en.getKey().toString(), en.getValue()); + } + return req; + } + public HttpSimpleRequest requestURI(String requestURI) { this.requestURI = requestURI; return this; @@ -118,7 +130,7 @@ public class HttpSimpleRequest implements java.io.Serializable { public HttpSimpleRequest param(String key, Object value) { if (value == null) return this; if (this.params == null) this.params = new HashMap<>(); - this.params.put(key, JsonConvert.root().convertTo(value)); + this.params.put(key, value instanceof CharSequence ? value.toString() : JsonConvert.root().convertTo(value)); return this; } diff --git a/src/org/redkale/service/RetResult.java b/src/org/redkale/service/RetResult.java index 2576a23f0..747501ac9 100644 --- a/src/org/redkale/service/RetResult.java +++ b/src/org/redkale/service/RetResult.java @@ -5,12 +5,13 @@ */ package org.redkale.service; +import java.lang.reflect.Type; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import org.redkale.convert.*; import org.redkale.convert.json.*; -import org.redkale.util.Utility; +import org.redkale.util.*; /** * 通用的结果对象,在常见的HTTP+JSON接口中返回的结果需要含结果码,错误信息,和实体对象。
@@ -27,6 +28,15 @@ import org.redkale.util.Utility; */ public class RetResult { + public static final Type TYPE_RET_INTEGER = new TypeToken>() { + }.getType(); + + public static final Type TYPE_RET_LONG = new TypeToken>() { + }.getType(); + + public static final Type TYPE_RET_STRING = new TypeToken>() { + }.getType(); + @ConvertColumn(index = 1) protected int retcode; @@ -103,6 +113,18 @@ public class RetResult { return new RetResult(Utility.ofMap(items)); } + /** + * 清空result + * + * @param V + * + * @return RetResult + */ + public RetResult clearResult() { + this.result = null; + return (RetResult) this; + } + /** * 将RetResult<X> 转换成一个新的 RetResult<Y> *