Skip to content

Commit 4a3e758

Browse files
authored
support jackson custom module. (#14817)
1 parent d1cc4bf commit 4a3e758

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

dubbo-common/src/main/java/org/apache/dubbo/common/json/impl/JacksonImpl.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
import org.apache.dubbo.common.extension.Activate;
2020

2121
import java.lang.reflect.Type;
22+
import java.util.ArrayList;
2223
import java.util.List;
2324

2425
import com.fasterxml.jackson.annotation.JsonInclude.Include;
2526
import com.fasterxml.jackson.core.JsonProcessingException;
2627
import com.fasterxml.jackson.databind.DeserializationFeature;
2728
import com.fasterxml.jackson.databind.JsonNode;
2829
import com.fasterxml.jackson.databind.MapperFeature;
30+
import com.fasterxml.jackson.databind.Module;
2931
import com.fasterxml.jackson.databind.json.JsonMapper;
3032
import com.fasterxml.jackson.databind.json.JsonMapper.Builder;
3133
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -34,6 +36,7 @@
3436
public class JacksonImpl extends AbstractJsonUtilImpl {
3537

3638
private volatile JsonMapper mapper;
39+
private final List<Module> customModules = new ArrayList<>();
3740

3841
@Override
3942
public String getName() {
@@ -113,10 +116,24 @@ protected JsonMapper getMapper() {
113116
}
114117

115118
protected Builder createBuilder() {
116-
return JsonMapper.builder()
119+
Builder builder = JsonMapper.builder()
117120
.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true)
118121
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
119122
.serializationInclusion(Include.NON_NULL)
120123
.addModule(new JavaTimeModule());
124+
125+
for (Module module : customModules) {
126+
builder.addModule(module);
127+
}
128+
129+
return builder;
130+
}
131+
132+
public void addModule(Module module) {
133+
synchronized (this) {
134+
customModules.add(module);
135+
// Invalidate the mapper to rebuild it
136+
this.mapper = null;
137+
}
121138
}
122139
}

0 commit comments

Comments
 (0)