jsonMap, String property) {
@@ -263,18 +351,16 @@ public class JsonParseUtil {
/**
* 通过获取String类型的网关schema链接来获取map,用于生成一个Object类型的对象
+ *
+ * // * @param http 网关schema地址
*
- * @param http 网关schema地址
* @return 用于反射生成schema类型的对象的一个map集合
*/
- public static HashMap getMapFromHttp(String http) {
- HashMap map = new HashMap<>();
-
- String schema = HttpClientUtil.requestByGetMethod(http);
- Object data = JSON.parseObject(schema).get("data");
+ private static HashMap getFieldsFromSchema(String schema) {
+ HashMap map = new HashMap<>(16);
//获取fields,并转化为数组,数组的每个元素都是一个name doc type
- JSONObject schemaJson = JSON.parseObject(data.toString());
+ JSONObject schemaJson = JSON.parseObject(schema);
JSONArray fields = (JSONArray) schemaJson.get("fields");
for (Object field : fields) {
@@ -282,13 +368,19 @@ public class JsonParseUtil {
if (checkKeepField(filedStr)) {
String name = JsonPath.read(filedStr, "$.name").toString();
String type = JsonPath.read(filedStr, "$.type").toString();
+ if (type.contains("{")) {
+ type = JsonPath.read(filedStr, "$.type.type").toString();
+ }
//组合用来生成实体类的map
map.put(name, getClassName(type));
+ } else {
+ dropList.add(filedStr);
}
}
return map;
}
+
/**
* 判断字段是否需要保留
*
@@ -310,4 +402,14 @@ public class JsonParseUtil {
return isKeepField;
}
+ /**
+ * 删除schema内指定的无效字段(jackson)
+ *
+ * @param jsonMap
+ */
+ private static void dropJsonField(Map jsonMap) {
+ for (String field : dropList) {
+ jsonMap.remove(field);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/zdjizhi/utils/json/JsonTypeUtils.java b/src/main/java/com/zdjizhi/utils/json/JsonTypeUtil.java
similarity index 88%
rename from src/main/java/com/zdjizhi/utils/json/JsonTypeUtils.java
rename to src/main/java/com/zdjizhi/utils/json/JsonTypeUtil.java
index 8562679..48e4620 100644
--- a/src/main/java/com/zdjizhi/utils/json/JsonTypeUtils.java
+++ b/src/main/java/com/zdjizhi/utils/json/JsonTypeUtil.java
@@ -14,7 +14,7 @@ import java.util.Map;
* @Description:
* @date 2021/7/1217:34
*/
-public class JsonTypeUtils {
+class JsonTypeUtil {
private static final Log logger = LogFactory.get();
/**
* String 类型检验转换方法
@@ -22,7 +22,7 @@ public class JsonTypeUtils {
* @param value json value
* @return String value
*/
- public static String checkString(Object value) {
+ static String checkString(Object value) {
if (value == null) {
return null;
}
@@ -44,7 +44,7 @@ public class JsonTypeUtils {
* @param value json value
* @return List value
*/
- private static Map checkObject(Object value) {
+ static Map checkObject(Object value) {
if (value == null) {
return null;
}
@@ -62,7 +62,7 @@ public class JsonTypeUtils {
* @param value json value
* @return List value
*/
- private static List checkArray(Object value) {
+ static List checkArray(Object value) {
if (value == null) {
return null;
}
@@ -88,7 +88,7 @@ public class JsonTypeUtils {
* @param value json value
* @return Long value
*/
- public static long checkLongValue(Object value) {
+ static long checkLongValue(Object value) {
Long longVal = TypeUtils.castToLong(value);
@@ -105,7 +105,7 @@ public class JsonTypeUtils {
* @param value json value
* @return Double value
*/
- private static Double checkDouble(Object value) {
+ static Double checkDouble(Object value) {
if (value == null) {
return null;
}
@@ -129,7 +129,7 @@ public class JsonTypeUtils {
* @param value json value
* @return int value
*/
- private static int getIntValue(Object value) {
+ static int getIntValue(Object value) {
Integer intVal = TypeUtils.castToInt(value);
diff --git a/src/main/java/com/zdjizhi/utils/kafka/KafkaProducer.java b/src/main/java/com/zdjizhi/utils/kafka/KafkaProducer.java
index 65e253a..2660c12 100644
--- a/src/main/java/com/zdjizhi/utils/kafka/KafkaProducer.java
+++ b/src/main/java/com/zdjizhi/utils/kafka/KafkaProducer.java
@@ -40,7 +40,7 @@ public class KafkaProducer {
createProducerConfig(), Optional.empty());
//启用此选项将使生产者仅记录失败日志而不是捕获和重新抛出它们
- kafkaProducer.setLogFailuresOnly(false);
+ kafkaProducer.setLogFailuresOnly(true);
//写入kafka的消息携带时间戳
// kafkaProducer.setWriteTimestampToKafka(true);
diff --git a/src/test/java/com/zdjizhi/EncryptorTest.java b/src/test/java/com/zdjizhi/EncryptorTest.java
new file mode 100644
index 0000000..170086c
--- /dev/null
+++ b/src/test/java/com/zdjizhi/EncryptorTest.java
@@ -0,0 +1,35 @@
+package com.zdjizhi;
+
+import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
+import org.junit.Test;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi
+ * @Description:
+ * @date 2022/3/1610:55
+ */
+public class EncryptorTest {
+
+
+ @Test
+ public void passwordTest(){
+ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
+ // 配置加密解密的密码/salt值
+ encryptor.setPassword("galaxy");
+ // 对"raw_password"进行加密:S5kR+Y7CI8k7MaecZpde25yK8NKUnd6p
+ String pin = "galaxy2019";
+ String encPin = encryptor.encrypt(pin);
+ String user = "admin";
+ String encUser = encryptor.encrypt(user);
+ System.out.println(encPin);
+ System.out.println(encUser);
+ // 再进行解密:raw_password
+ String rawPwd = encryptor.decrypt("6MleDyA3Z73HSaXiKsDJ2k7Ys8YWLhEJ");
+ String rawUser = encryptor.decrypt("nsyGpHKGFA4KW0zro9MDdw==");
+
+ System.out.println("The username is: "+rawPwd);
+ System.out.println("The pin is: "+rawUser);
+ }
+
+}
diff --git a/src/test/java/com/zdjizhi/FunctionTest.java b/src/test/java/com/zdjizhi/FunctionTest.java
new file mode 100644
index 0000000..8403c45
--- /dev/null
+++ b/src/test/java/com/zdjizhi/FunctionTest.java
@@ -0,0 +1,40 @@
+package com.zdjizhi;
+
+import com.zdjizhi.common.VoipRelationConfig;
+import com.zdjizhi.utils.IpLookupV2;
+import org.junit.Test;
+
+import java.util.Calendar;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi
+ * @Description:
+ * @date 2021/11/611:38
+ */
+public class FunctionTest {
+
+ private static IpLookupV2 ipLookup = new IpLookupV2.Builder(false)
+ .loadDataFileV4(VoipRelationConfig.TOOLS_LIBRARY + "ip_v4_built_in.mmdb")
+ .loadDataFileV6(VoipRelationConfig.TOOLS_LIBRARY + "ip_v6_built_in.mmdb")
+ .loadDataFilePrivateV4(VoipRelationConfig.TOOLS_LIBRARY + "ip_v4_user_defined.mmdb")
+ .loadDataFilePrivateV6(VoipRelationConfig.TOOLS_LIBRARY + "ip_v6_user_defined.mmdb")
+ .loadAsnDataFile(VoipRelationConfig.TOOLS_LIBRARY + "asn_v4.mmdb")
+ .loadAsnDataFileV6(VoipRelationConfig.TOOLS_LIBRARY + "asn_v6.mmdb")
+ .build();
+
+ @Test
+ public void ipLookupTest() {
+ String ip = "61.144.36.144";
+ System.out.println(ipLookup.cityLookupDetail(ip));
+ System.out.println(ipLookup.countryLookup(ip));
+ }
+
+ @Test
+ public void timestampTest(){
+ Calendar cal = Calendar.getInstance();
+ Long utcTime=cal.getTimeInMillis();
+ System.out.println(utcTime);
+ System.out.println(System.currentTimeMillis());
+ }
+}
diff --git a/src/test/java/com/zdjizhi/json/JsonPathTest.java b/src/test/java/com/zdjizhi/json/JsonPathTest.java
new file mode 100644
index 0000000..46f6f85
--- /dev/null
+++ b/src/test/java/com/zdjizhi/json/JsonPathTest.java
@@ -0,0 +1,79 @@
+package com.zdjizhi.json;
+
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.JsonPath;
+import com.zdjizhi.common.VoipRelationConfig;
+import com.zdjizhi.utils.StringUtil;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi.json
+ * @Description:
+ * @date 2022/3/2410:22
+ */
+public class JsonPathTest {
+ private static final Log logger = LogFactory.get();
+
+ private static Properties propNacos = new Properties();
+
+ /**
+ * 获取需要删除字段的列表
+ */
+ private static ArrayList dropList = new ArrayList<>();
+
+ /**
+ * 在内存中加载反射类用的map
+ */
+ private static HashMap map;
+
+ /**
+ * 获取任务列表
+ * list的每个元素是一个四元字符串数组 (有format标识的字段,补全的字段,用到的功能函数,用到的参数),例如:
+ * (mail_subject mail_subject decode_of_base64 mail_subject_charset)
+ */
+ private static ArrayList jobList;
+
+ private static String schema;
+
+ static {
+ propNacos.setProperty(PropertyKeyConst.SERVER_ADDR, VoipRelationConfig.NACOS_SERVER);
+ propNacos.setProperty(PropertyKeyConst.NAMESPACE, VoipRelationConfig.NACOS_SCHEMA_NAMESPACE);
+ propNacos.setProperty(PropertyKeyConst.USERNAME, VoipRelationConfig.NACOS_USERNAME);
+ propNacos.setProperty(PropertyKeyConst.PASSWORD, VoipRelationConfig.NACOS_PIN);
+ try {
+ ConfigService configService = NacosFactory.createConfigService(propNacos);
+ String dataId = VoipRelationConfig.NACOS_DATA_ID;
+ String group = VoipRelationConfig.NACOS_GROUP;
+ String config = configService.getConfig(dataId, group, 5000);
+ if (StringUtil.isNotBlank(config)) {
+ schema = config;
+ }
+ } catch (NacosException e) {
+ logger.error("Get Schema config from Nacos error,The exception message is :" + e.getMessage());
+ }
+ }
+
+ @Test
+ public void parseSchemaGetFields() {
+ DocumentContext parse = JsonPath.parse(schema);
+ List