This commit is contained in:
Redkale
2020-06-19 00:18:38 +08:00
parent b8719d7f76
commit ca2f34bfac
3 changed files with 57 additions and 3 deletions

View File

@@ -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 <T> CompletableFuture<T> sendMessage(HttpSimpleRequest request, Type type) {
return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, 0, null, request, null).thenApply((HttpResult<byte[]> httbs) -> {
if (httbs == null || httbs.getResult() == null) return null;
return JsonConvert.root().convertFrom(type, httbs.getResult());
});
}
public final <T> CompletableFuture<T> sendMessage(int userid, HttpSimpleRequest request, Type type) {
return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, null, request, null).thenApply((HttpResult<byte[]> httbs) -> {
if (httbs == null || httbs.getResult() == null) return null;
return JsonConvert.root().convertFrom(type, httbs.getResult());
});
}
public final CompletableFuture<HttpResult<byte[]>> 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<HttpResult<byte[]>> sendMessage(int userid, HttpSimpleRequest request) {
return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, null, request, null);
}
public final CompletableFuture<HttpResult<byte[]>> sendMessage(int userid, String groupid, HttpSimpleRequest request) {
return sendMessage(generateHttpReqTopic(request, null), ConvertType.JSON, userid, groupid, request, null);
}

View File

@@ -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;
}

View File

@@ -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接口中返回的结果需要含结果码错误信息和实体对象。 <br>
@@ -27,6 +28,15 @@ import org.redkale.util.Utility;
*/
public class RetResult<T> {
public static final Type TYPE_RET_INTEGER = new TypeToken<RetResult<Integer>>() {
}.getType();
public static final Type TYPE_RET_LONG = new TypeToken<RetResult<Long>>() {
}.getType();
public static final Type TYPE_RET_STRING = new TypeToken<RetResult<String>>() {
}.getType();
@ConvertColumn(index = 1)
protected int retcode;
@@ -103,6 +113,18 @@ public class RetResult<T> {
return new RetResult(Utility.ofMap(items));
}
/**
* 清空result
*
* @param <V> V
*
* @return RetResult
*/
public <V> RetResult<V> clearResult() {
this.result = null;
return (RetResult) this;
}
/**
* 将RetResult&#60;X&#62; 转换成一个新的 RetResult&#60;Y&#62;
*