f = f(pje.getMessage());
+ f.setCode(pje.getCode());
+ return f;
+ }
+
+}
diff --git a/powerjob-common/src/main/java/tech/powerjob/common/response/ResultDTO.java b/powerjob-common/src/main/java/tech/powerjob/common/response/ResultDTO.java
index 03e1dc6b..5cd90519 100644
--- a/powerjob-common/src/main/java/tech/powerjob/common/response/ResultDTO.java
+++ b/powerjob-common/src/main/java/tech/powerjob/common/response/ResultDTO.java
@@ -8,6 +8,11 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
/**
* The result object returned by the request
+ *
+ * 低版本由于 Jackson 序列化配置问题,导致无法在此对象上新增任何字段了,否则会报错 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "code" (class tech.powerjob.common.response.ObjectResultDTO), not marked as ignorable (3 known properties: "data", "success", "message"])
+ * at [Source: (String)"{"success":true,"code":null,"data":2,"message":null}"; line: 1, column: 28] (through reference chain: tech.powerjob.common.response.ObjectResultDTO["code"])
+ *
+ * 短期内所有的新增字段需求,都通过新对象继承实现
*
* @author tjq
* @since 2020/3/30
@@ -17,9 +22,9 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
@ToString
public class ResultDTO implements PowerSerializable {
- private boolean success;
- private T data;
- private String message;
+ protected boolean success;
+ protected T data;
+ protected String message;
public static ResultDTO success(T data) {
ResultDTO r = new ResultDTO<>();
diff --git a/powerjob-common/src/main/java/tech/powerjob/common/serialize/JsonUtils.java b/powerjob-common/src/main/java/tech/powerjob/common/serialize/JsonUtils.java
index b706186a..dbdab14d 100644
--- a/powerjob-common/src/main/java/tech/powerjob/common/serialize/JsonUtils.java
+++ b/powerjob-common/src/main/java/tech/powerjob/common/serialize/JsonUtils.java
@@ -2,7 +2,6 @@ package tech.powerjob.common.serialize;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
@@ -35,6 +34,13 @@ public class JsonUtils {
static {
JSON_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+
+ // 非核心功能可降级,尽可能降低依赖冲突概率
+ try {
+ JSON_MAPPER.registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule());
+ } catch (Exception e) {
+ log.warn("[JsonUtils] registerJavaTimeModule failed, PowerJob can't process Java 8 date/time type now!", e);
+ }
}
private static final TypeReference