From 7fe3c3e6412a91934a1f70cd02f3308b2c88cee7 Mon Sep 17 00:00:00 2001 From: kamtohung Date: Sun, 23 Feb 2025 20:31:32 +0800 Subject: [PATCH] [ISSUE #531] add DtpException for missing jackson-datatype-jsr310 dependency --- .../dynamictp/common/parser/json/JacksonParser.java | 11 ++++++++++- .../test/core/thread/ScheduledDtpExecutorTest.java | 5 +++-- .../test/resources/dynamic-tp-nacos-demo-dtp-dev.yml | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/org/dromara/dynamictp/common/parser/json/JacksonParser.java b/common/src/main/java/org/dromara/dynamictp/common/parser/json/JacksonParser.java index f6bebed65..42c57845e 100644 --- a/common/src/main/java/org/dromara/dynamictp/common/parser/json/JacksonParser.java +++ b/common/src/main/java/org/dromara/dynamictp/common/parser/json/JacksonParser.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.extern.slf4j.Slf4j; +import org.dromara.dynamictp.common.ex.DtpException; import java.io.IOException; import java.lang.reflect.Type; @@ -44,7 +45,11 @@ public class JacksonParser extends AbstractJsonParser { private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + private static final String PACKAGE_NAME = "com.fasterxml.jackson.databind.ObjectMapper"; + + private static final String JAVA_TIME_MODULE_CLASS_NAME = "com.fasterxml.jackson.datatype.jsr310.JavaTimeModule"; + private volatile ObjectMapper mapper; @Override @@ -79,7 +84,11 @@ private ObjectMapper getMapper() { } protected ObjectMapper createMapper() { - // 只提供最简单的方案 + try { + Class.forName(JAVA_TIME_MODULE_CLASS_NAME); + } catch (ClassNotFoundException e) { + throw new DtpException("Please add jackson-datatype-jsr310 dependency"); + } JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); diff --git a/test/test-core/src/test/java/org/dromara/dynamictp/test/core/thread/ScheduledDtpExecutorTest.java b/test/test-core/src/test/java/org/dromara/dynamictp/test/core/thread/ScheduledDtpExecutorTest.java index fd9d2f946..f3a7f4776 100644 --- a/test/test-core/src/test/java/org/dromara/dynamictp/test/core/thread/ScheduledDtpExecutorTest.java +++ b/test/test-core/src/test/java/org/dromara/dynamictp/test/core/thread/ScheduledDtpExecutorTest.java @@ -42,14 +42,15 @@ class ScheduledDtpExecutorTest { @Test - void schedule() { + void schedule() throws InterruptedException { ScheduledDtpExecutor dtpExecutor12 = (ScheduledDtpExecutor) DtpRegistry.getExecutor("dtpExecutor12"); System.out.println(dtpExecutor12.getClass()); dtpExecutor12.scheduleAtFixedRate(() -> { System.out.println(Thread.currentThread().getName() + "进来了," + "当前时间是 " + LocalDateTime.now()); }, 10, 5, TimeUnit.SECONDS); - dtpExecutor12.shutdownNow(); +// dtpExecutor12.shutdownNow(); + TimeUnit.SECONDS.sleep(10000); } @Test diff --git a/test/test-core/src/test/resources/dynamic-tp-nacos-demo-dtp-dev.yml b/test/test-core/src/test/resources/dynamic-tp-nacos-demo-dtp-dev.yml index 5358276cd..a3ca6b8cd 100644 --- a/test/test-core/src/test/resources/dynamic-tp-nacos-demo-dtp-dev.yml +++ b/test/test-core/src/test/resources/dynamic-tp-nacos-demo-dtp-dev.yml @@ -123,7 +123,7 @@ dynamictp: preStartAllCoreThreads: false # 是否预热所有核心线程,默认false runTimeout: 200 # 任务执行超时阈值,目前只做告警用,单位(ms) queueTimeout: 100 # 任务在队列等待超时阈值,目前只做告警用,单位(ms) - taskWrapperNames: ["ttl"] # 任务包装器名称,集成TaskWrapper接口 + taskWrapperNames: ["ttl", "mdc"] # 任务包装器名称,集成TaskWrapper接口 notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - type: capacity # 报警项类型,查看源码 NotifyTypeEnum枚举类 enabled: true