This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 4a3e758b96 support jackson custom module. (#14817)
4a3e758b96 is described below

commit 4a3e758b96745833989eadca79af126349a766fd
Author: heliang666s <[email protected]>
AuthorDate: Fri Oct 25 16:57:47 2024 +0800

    support jackson custom module. (#14817)
---
 .../apache/dubbo/common/json/impl/JacksonImpl.java    | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/json/impl/JacksonImpl.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/json/impl/JacksonImpl.java
index 449d0c0d83..d58a6ef64c 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/json/impl/JacksonImpl.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/json/impl/JacksonImpl.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.common.json.impl;
 import org.apache.dubbo.common.extension.Activate;
 
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
@@ -26,6 +27,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.Module;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.fasterxml.jackson.databind.json.JsonMapper.Builder;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -34,6 +36,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 public class JacksonImpl extends AbstractJsonUtilImpl {
 
     private volatile JsonMapper mapper;
+    private final List<Module> customModules = new ArrayList<>();
 
     @Override
     public String getName() {
@@ -113,10 +116,24 @@ public class JacksonImpl extends AbstractJsonUtilImpl {
     }
 
     protected Builder createBuilder() {
-        return JsonMapper.builder()
+        Builder builder = JsonMapper.builder()
                 .configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true)
                 .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
false)
                 .serializationInclusion(Include.NON_NULL)
                 .addModule(new JavaTimeModule());
+
+        for (Module module : customModules) {
+            builder.addModule(module);
+        }
+
+        return builder;
+    }
+
+    public void addModule(Module module) {
+        synchronized (this) {
+            customModules.add(module);
+            // Invalidate the mapper to rebuild it
+            this.mapper = null;
+        }
     }
 }

Reply via email to