update at 2021-02-07 22:11:59 by ehlxr
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>did-parent</artifactId>
|
||||
|
@@ -7,18 +7,12 @@ import java.util.Map;
|
||||
*/
|
||||
public class Constants {
|
||||
private static final Map<String, String> SYS_ENV = System.getenv();
|
||||
|
||||
public static String getEnv(String key) {
|
||||
return SYS_ENV.get(key) == null ? "" : SYS_ENV.get(key);
|
||||
}
|
||||
|
||||
public static String SERVER_HOST = "localhost";
|
||||
/**
|
||||
* HTTP 协议和 SDK 协议服务器默认端口
|
||||
*/
|
||||
public static int HTTP_PORT = 16830;
|
||||
public static int SDK_PORT = 16831;
|
||||
|
||||
/**
|
||||
* 数据中心默认标识 ID,取值范围:0~31
|
||||
* 机器或进程默认标识 ID,取值范围:0~31
|
||||
@@ -27,27 +21,26 @@ public class Constants {
|
||||
*/
|
||||
public static long DATACENTER_ID = 1;
|
||||
public static long MACHINES_ID = 1;
|
||||
|
||||
/**
|
||||
* Server 流量控制,表示每秒处理的并发数
|
||||
*/
|
||||
public static int HANDLE_HTTP_TPS = 10000;
|
||||
public static int HANDLE_SDK_TPS = 50000;
|
||||
|
||||
/**
|
||||
* sdk client 流量控制,表示每秒处理的并发数
|
||||
*/
|
||||
public static int SDK_CLIENT_ASYNC_TPS = 100000;
|
||||
public static int SDK_CLIENT_ONEWAY_TPS = 100000;
|
||||
|
||||
public static int ACQUIRE_TIMEOUTMILLIS = 5000;
|
||||
|
||||
/**
|
||||
* sdk client 默认超时时间
|
||||
*/
|
||||
public static int SDK_CLIENT_TIMEOUTMILLIS = 2000;
|
||||
|
||||
|
||||
private Constants() {
|
||||
}
|
||||
|
||||
public static String getEnv(String key) {
|
||||
return SYS_ENV.get(key) == null ? "" : SYS_ENV.get(key);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,159 @@
|
||||
package io.github.ehlxr.did.common;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.*;
|
||||
import com.fasterxml.jackson.databind.node.MissingNode;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
|
||||
/**
|
||||
* JSON 处理类
|
||||
*
|
||||
* @author ehlxr
|
||||
* @since 2020/5/6.
|
||||
*/
|
||||
@SuppressWarnings({"unused", "unchecked"})
|
||||
public class JsonUtils {
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);
|
||||
|
||||
static {
|
||||
// 对象的所有字段全部列入
|
||||
OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.ALWAYS);
|
||||
// 取消默认转换 timestamps 形式
|
||||
OBJECT_MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||
// 忽略空 bean 转 JSON 的错误
|
||||
OBJECT_MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
|
||||
// 所有的日期格式都统一为以下的样式:yyyy-MM-dd HH:mm:ss
|
||||
OBJECT_MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
|
||||
// 忽略在 JSON 字符串中存在,但是在 java 对象中不存在对应属性的情况
|
||||
OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
}
|
||||
|
||||
public static ObjectMapper om() {
|
||||
return OBJECT_MAPPER;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象转为 JsonNode 实例
|
||||
*
|
||||
* @param obj 要转换的对象
|
||||
* @param <T> 要转换的对象类型
|
||||
* @return {@link JsonNode}实例
|
||||
*/
|
||||
public static <T> JsonNode obj2JsonNode(T obj) {
|
||||
try {
|
||||
return OBJECT_MAPPER.readTree(obj2String(obj));
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return MissingNode.getInstance();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象转为 JSON 字符串
|
||||
*
|
||||
* @param obj 要转换的对象
|
||||
* @param <T> 要转换的对象类型
|
||||
* @return JSON 字符串
|
||||
*/
|
||||
public static <T> String obj2String(T obj) {
|
||||
if (obj == null) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
return obj instanceof String ? (String) obj : OBJECT_MAPPER.writeValueAsString(obj);
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象转为格式化的 JSON 字符串
|
||||
*
|
||||
* @param obj 要转换的对象
|
||||
* @param <T> 要转换的对象类型
|
||||
* @return 格式化的 JSON 字符串
|
||||
*/
|
||||
public static <T> String obj2StringPretty(T obj) {
|
||||
if (obj == null) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
return obj instanceof String ?
|
||||
(String) obj :
|
||||
OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转换为自定义对象
|
||||
*
|
||||
* @param str 要转换的字符串
|
||||
* @param clazz 自定义对象的 class 对象
|
||||
* @param <T> 自定义对象类型
|
||||
* @return 自定义对象
|
||||
*/
|
||||
public static <T> T string2Obj(String str, Class<T> clazz) {
|
||||
if (StringUtil.isNullOrEmpty(str) || clazz == null) {
|
||||
throw new RuntimeException("json string to obj param should not empty");
|
||||
}
|
||||
try {
|
||||
return clazz.equals(String.class) ? (T) str : OBJECT_MAPPER.readValue(str, clazz);
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转换为自定义对象
|
||||
*
|
||||
* @param str 要转换的字符串
|
||||
* @param typeReference 集合对象 typeReference
|
||||
* @param <T> 集合对象类型
|
||||
* @return 自定义对象
|
||||
*/
|
||||
public static <T> T string2Obj(String str, TypeReference<T> typeReference) {
|
||||
if (StringUtil.isNullOrEmpty(str) || typeReference == null) {
|
||||
throw new RuntimeException("json string to obj param should not empty");
|
||||
}
|
||||
try {
|
||||
return typeReference.getType().equals(String.class) ?
|
||||
(T) str :
|
||||
OBJECT_MAPPER.readValue(str, typeReference);
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转换为自定义对象
|
||||
*
|
||||
* @param str 要转换的字符串
|
||||
* @param collectionClazz 集合 class
|
||||
* @param elementClazzes 集合对象 class
|
||||
* @param <T> 集合对象类型
|
||||
* @return 自定义对象
|
||||
*/
|
||||
public static <T> T string2Obj(String str, Class<?> collectionClazz, Class<?>... elementClazzes) {
|
||||
JavaType javaType = OBJECT_MAPPER.getTypeFactory().constructParametricType(collectionClazz, elementClazzes);
|
||||
try {
|
||||
return OBJECT_MAPPER.readValue(str, javaType);
|
||||
} catch (JsonProcessingException e) {
|
||||
logger.error("", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,9 @@
|
||||
package io.github.ehlxr.did.common;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -16,6 +12,7 @@ import java.util.Objects;
|
||||
* @author ehlxr
|
||||
* @since 2020/3/18.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class Result<T> implements Serializable {
|
||||
private static final long serialVersionUID = -2758720512348727698L;
|
||||
@@ -133,18 +130,7 @@ public class Result<T> implements Serializable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
try {
|
||||
ObjectMapper om = new ObjectMapper();
|
||||
// 取消时间的转化格式, 默认是时间戳
|
||||
om.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||
// 设置时间格式
|
||||
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
|
||||
om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
|
||||
om.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, false);
|
||||
return om.writeValueAsString(this);
|
||||
} catch (JsonProcessingException e) {
|
||||
return "";
|
||||
}
|
||||
return JsonUtils.obj2String(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -27,12 +27,18 @@ public class SdkProto {
|
||||
this.did = did;
|
||||
}
|
||||
|
||||
public static SdkProtoBuilder newBuilder() {
|
||||
return new SdkProtoBuilder();
|
||||
}
|
||||
|
||||
public int getRqid() {
|
||||
return rqid;
|
||||
}
|
||||
|
||||
public static SdkProtoBuilder newBuilder() {
|
||||
return new SdkProtoBuilder();
|
||||
public void setRqid(int rqid) {
|
||||
if (rqid > 0) {
|
||||
this.rqid = rqid;
|
||||
}
|
||||
}
|
||||
|
||||
public long getDid() {
|
||||
@@ -45,16 +51,7 @@ public class SdkProto {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SdkProto{" +
|
||||
"rqid=" + rqid +
|
||||
", did=" + did +
|
||||
'}';
|
||||
}
|
||||
|
||||
public void setRqid(int rqid) {
|
||||
if (rqid > 0) {
|
||||
this.rqid = rqid;
|
||||
}
|
||||
return JsonUtils.obj2String(this);
|
||||
}
|
||||
|
||||
public static final class SdkProtoBuilder {
|
||||
|
Reference in New Issue
Block a user