diff --git a/pom.xml b/pom.xml
index 2c8acf8..5e289bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
17
- 2.3.0
+ 3.0.0
diff --git a/tosan-httpserver-spring-boot-starter/pom.xml b/tosan-httpserver-spring-boot-starter/pom.xml
index 0da8491..63c161b 100644
--- a/tosan-httpserver-spring-boot-starter/pom.xml
+++ b/tosan-httpserver-spring-boot-starter/pom.xml
@@ -48,17 +48,13 @@
spring-boot-starter-aspectj
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
org.slf4j
slf4j-api
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
-
org.springframework.boot
spring-boot-starter-test
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/filter/HttpStatisticsFilter.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/filter/HttpStatisticsFilter.java
index 172bc5d..b5bc08f 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/filter/HttpStatisticsFilter.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/filter/HttpStatisticsFilter.java
@@ -1,12 +1,6 @@
package com.tosan.http.server.starter.filter;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import com.fasterxml.jackson.databind.SerializationFeature;
import com.tosan.http.server.starter.statistics.ServiceExecutionInfo;
import com.tosan.http.server.starter.statistics.Statistics;
import com.tosan.http.server.starter.util.Constants;
@@ -18,6 +12,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.databind.DeserializationFeature;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectWriter;
+import tools.jackson.databind.SerializationFeature;
+import tools.jackson.databind.json.JsonMapper;
import java.io.IOException;
import java.util.ArrayList;
@@ -47,12 +48,14 @@ public class HttpStatisticsFilter extends OncePerRequestFilterBase {
}};
static {
- mapper = new ObjectMapper()
- .setSerializationInclusion(JsonInclude.Include.NON_NULL)
- .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
printer = new DefaultPrettyPrinter().withObjectIndenter(new DefaultPrettyPrinter.FixedSpaceIndenter());
- writer = mapper.writer(printer);
+ mapper = JsonMapper.builder()
+ .changeDefaultPropertyInclusion(incl ->
+ JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL))
+ .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
+ .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ .build();
+ writer = mapper.writer().with(printer);
}
public HttpStatisticsFilter() {
@@ -113,8 +116,8 @@ private List generateStatisticsDetail(List service
protected static String writeJson(Object object) {
try {
return writer.writeValueAsString(object);
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
return "error creating json. " + e.getMessage();
}
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/ByteArraySerializer.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/ByteArraySerializer.java
index 34573e2..614aade 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/ByteArraySerializer.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/ByteArraySerializer.java
@@ -1,19 +1,19 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import java.io.IOException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
/**
* @author AmirHossein ZamanZade
* @since 1/23/2024
*/
-public class ByteArraySerializer extends JsonSerializer {
+public class ByteArraySerializer extends ValueSerializer {
@Override
- public void serialize(byte[] value, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
+ public void serialize(byte[] value, JsonGenerator jsonGenerator, SerializationContext serializers)
+ throws JacksonException {
jsonGenerator.writeString("*MASKED with size = " + value.length);
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/DateSerializer.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/DateSerializer.java
index a30185f..b1c88ec 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/DateSerializer.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/DateSerializer.java
@@ -1,13 +1,13 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
-import java.io.IOException;
import java.util.Date;
-public class DateSerializer extends JsonSerializer {
+public class DateSerializer extends ValueSerializer {
private final SerializerUtility serializerUtility;
@@ -16,7 +16,8 @@ public DateSerializer(SerializerUtility serializerUtility) {
}
@Override
- public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
+ public void serialize(Date value, JsonGenerator jsonGenerator, SerializationContext serializers)
+ throws JacksonException {
serializerUtility.serialize(value.toString(), jsonGenerator);
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/MultipartMaskSerializer.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/MultipartMaskSerializer.java
index ee75eca..7aeca2a 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/MultipartMaskSerializer.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/MultipartMaskSerializer.java
@@ -1,17 +1,16 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
/**
* @author Sadegh Iraji
* @since 10/29/2023
**/
-public class MultipartMaskSerializer extends JsonSerializer {
+public class MultipartMaskSerializer extends ValueSerializer {
private final SerializerUtility serializerUtility;
@@ -20,7 +19,8 @@ public MultipartMaskSerializer(SerializerUtility serializerUtility) {
}
@Override
- public void serialize(MultipartFile multipartFile, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+ public void serialize(MultipartFile multipartFile, JsonGenerator jsonGenerator,
+ SerializationContext serializers) throws JacksonException {
serializerUtility.serialize(multipartFile.getOriginalFilename(), jsonGenerator);
}
}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/NumberMaskSerializer.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/NumberMaskSerializer.java
index b2d2c9c..f92917a 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/NumberMaskSerializer.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/NumberMaskSerializer.java
@@ -1,12 +1,11 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
-import java.io.IOException;
-
-public class NumberMaskSerializer extends JsonSerializer {
+public class NumberMaskSerializer extends ValueSerializer {
private SerializerUtility serializerUtility;
@@ -14,8 +13,8 @@ public NumberMaskSerializer(SerializerUtility serializerUtility) {
this.serializerUtility = serializerUtility;
}
- public void serialize(Number value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
- throws IOException {
+ public void serialize(Number value, JsonGenerator jsonGenerator, SerializationContext serializers)
+ throws JacksonException {
serializerUtility.serialize(value.toString(), jsonGenerator);
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/SerializerUtility.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/SerializerUtility.java
index 11cf840..5903074 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/SerializerUtility.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/SerializerUtility.java
@@ -1,10 +1,9 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonStreamContext;
import com.tosan.tools.mask.starter.replace.JsonReplaceHelperDecider;
-
-import java.io.IOException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.core.TokenStreamContext;
public class SerializerUtility {
private final JsonReplaceHelperDecider jsonReplaceHelperDecider;
@@ -13,12 +12,12 @@ public SerializerUtility(JsonReplaceHelperDecider jsonReplaceHelperDecider) {
this.jsonReplaceHelperDecider = jsonReplaceHelperDecider;
}
- public void serialize(String value, JsonGenerator jsonGenerator) throws IOException {
- String fieldName = jsonGenerator.getOutputContext().getCurrentName();
+ public void serialize(String value, JsonGenerator jsonGenerator) throws JacksonException {
+ String fieldName = jsonGenerator.streamWriteContext().currentName();
if (fieldName == null) {
- JsonStreamContext parent = jsonGenerator.getOutputContext().getParent();
+ TokenStreamContext parent = jsonGenerator.streamWriteContext().getParent();
if (parent != null) {
- fieldName = parent.getCurrentName();
+ fieldName = parent.currentName();
}
}
if (value == null) {
@@ -27,4 +26,4 @@ public void serialize(String value, JsonGenerator jsonGenerator) throws IOExcept
String maskedValue = jsonReplaceHelperDecider.replace(fieldName, value);
jsonGenerator.writeString(maskedValue);
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/StringMaskSerializer.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/StringMaskSerializer.java
index 669db3d..79f63cd 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/StringMaskSerializer.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/logger/StringMaskSerializer.java
@@ -1,16 +1,15 @@
package com.tosan.http.server.starter.logger;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import java.io.IOException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
/**
* @author mina khoshnevisan
* @since 7/31/2022
*/
-public class StringMaskSerializer extends JsonSerializer {
+public class StringMaskSerializer extends ValueSerializer {
private final SerializerUtility serializerUtility;
@@ -18,8 +17,8 @@ public StringMaskSerializer(SerializerUtility serializerUtility) {
this.serializerUtility = serializerUtility;
}
- public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
- throws IOException {
+ public void serialize(String value, JsonGenerator jsonGenerator, SerializationContext serializers)
+ throws JacksonException {
serializerUtility.serialize(value, jsonGenerator);
}
-}
\ No newline at end of file
+}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/JsonHttpLogContentProvider.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/JsonHttpLogContentProvider.java
index 7e606c0..1f83104 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/JsonHttpLogContentProvider.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/JsonHttpLogContentProvider.java
@@ -1,12 +1,13 @@
package com.tosan.http.server.starter.util;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
import com.tosan.http.server.starter.wrapper.LogContentContainer;
import org.apache.commons.lang3.StringUtils;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.DeserializationFeature;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.SerializationFeature;
+import tools.jackson.databind.json.JsonMapper;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -17,14 +18,13 @@
*/
public class JsonHttpLogContentProvider extends LogContentProvider {
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
- static {
- MAPPER.enable(SerializationFeature.INDENT_OUTPUT)
- .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
- .setSerializationInclusion(JsonInclude.Include.NON_NULL)
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- }
+ private static final ObjectMapper MAPPER = JsonMapper.builder()
+ .enable(SerializationFeature.INDENT_OUTPUT)
+ .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
+ .changeDefaultPropertyInclusion(incl ->
+ JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL))
+ .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ .build();
@Override
protected String generateRequestLogContent(LogContentContainer container) {
@@ -75,7 +75,7 @@ private void addBody(LogContentContainer container, Map objectMa
private String toJson(Object value) {
try {
return MAPPER.writeValueAsString(value);
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
return "error creating json. " + e.getMessage();
}
}
diff --git a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/ToStringJsonUtil.java b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/ToStringJsonUtil.java
index ba5698c..585d891 100644
--- a/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/ToStringJsonUtil.java
+++ b/tosan-httpserver-spring-boot-starter/src/main/java/com/tosan/http/server/starter/util/ToStringJsonUtil.java
@@ -1,14 +1,15 @@
package com.tosan.http.server.starter.util;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.module.SimpleModule;
import com.tosan.http.server.starter.logger.*;
import com.tosan.tools.mask.starter.replace.JsonReplaceHelperDecider;
import org.springframework.web.multipart.MultipartFile;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.DeserializationFeature;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.SerializationFeature;
+import tools.jackson.databind.json.JsonMapper;
+import tools.jackson.databind.module.SimpleModule;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -18,19 +19,15 @@
* @since 6/10/2021
*/
public class ToStringJsonUtil {
- private final ObjectMapper mapper = new ObjectMapper();
+ private final ObjectMapper mapper;
private final JsonReplaceHelperDecider jsonReplaceHelperDecider;
public ToStringJsonUtil(JsonReplaceHelperDecider jsonReplaceHelperDecider) {
this.jsonReplaceHelperDecider = jsonReplaceHelperDecider;
- customizeObjectMapper();
+ this.mapper = createObjectMapper();
}
- private void customizeObjectMapper() {
- mapper.enable(SerializationFeature.INDENT_OUTPUT)
- .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
- .setSerializationInclusion(JsonInclude.Include.NON_NULL)
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ private ObjectMapper createObjectMapper() {
SimpleModule module = new SimpleModule();
SerializerUtility serializerUtility = new SerializerUtility(jsonReplaceHelperDecider);
StringMaskSerializer stringMaskSerializer = new StringMaskSerializer(serializerUtility);
@@ -47,16 +44,23 @@ private void customizeObjectMapper() {
DateSerializer dateSerializer = new DateSerializer(serializerUtility);
module.addSerializer(Date.class, dateSerializer);
module.addSerializer(MultipartFile.class, multipartMaskSerializer);
- mapper.registerModule(module);
- mapper.findAndRegisterModules();
- mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'H:m:ssZ"));
+ return JsonMapper.builder()
+ .enable(SerializationFeature.INDENT_OUTPUT)
+ .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
+ .changeDefaultPropertyInclusion(incl ->
+ JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL))
+ .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ .addModule(module)
+ .findAndAddModules()
+ .defaultDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'H:m:ssZ"))
+ .build();
}
public String toJson(T object) {
try {
return mapper.writeValueAsString(object);
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
return "error creating json. " + e.getMessage();
}
}
-}
\ No newline at end of file
+}