diff --git a/pom.xml b/pom.xml
index 1c668c7..6a3b159 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
Surgical
jar
Surgical
- 0.0.2
+ 0.0.3
A tool for dynamically filtering entity properties based on Jackson
https://github.com/ksprider/Surgical
diff --git a/src/main/java/com/github/ksprider/surgical/CustomFilterProvider.java b/src/main/java/com/github/ksprider/surgical/CustomFilterProvider.java
index ce89857..dc3e978 100644
--- a/src/main/java/com/github/ksprider/surgical/CustomFilterProvider.java
+++ b/src/main/java/com/github/ksprider/surgical/CustomFilterProvider.java
@@ -8,6 +8,10 @@ public class CustomFilterProvider extends FilterProvider {
private final CustomPropertyFilter customPropertyFilter;
+ public CustomFilterProvider() {
+ this.customPropertyFilter = new CustomPropertyFilter<>(null, null, null, true);
+ }
+
public CustomFilterProvider(T root, SerializationHandler serializerHandler, String location, boolean isAll) {
this.customPropertyFilter = new CustomPropertyFilter<>(root, serializerHandler, location, isAll);
}
diff --git a/src/main/java/com/github/ksprider/surgical/CustomPropertyFilter.java b/src/main/java/com/github/ksprider/surgical/CustomPropertyFilter.java
index 5a19c03..defb6bd 100644
--- a/src/main/java/com/github/ksprider/surgical/CustomPropertyFilter.java
+++ b/src/main/java/com/github/ksprider/surgical/CustomPropertyFilter.java
@@ -34,9 +34,7 @@ public void serializeAsField(Object pojo, JsonGenerator gen, SerializerProvider
writer.serializeAsField(pojo, gen, prov);
return;
}
-
- String key = getKey(gen.getOutputContext(), writer.getName());
- boolean serialize = isAll || cache.computeIfAbsent(key, it -> {
+ boolean serialize = isAll || cache.computeIfAbsent(getKey(gen.getOutputContext(), writer.getName()), it -> {
T ot = (T) BeanUtils.instantiateClass(t.getClass());
BeanUtils.copyProperties(t, ot);
return serializerHandler.isSerialize(gen.getOutputContext(), writer.getName(), ot);
diff --git a/src/main/java/com/github/ksprider/surgical/spring/mvc/JSONResponseBodyAdvice.java b/src/main/java/com/github/ksprider/surgical/spring/mvc/JSONResponseBodyAdvice.java
index ce8526c..5bf6766 100644
--- a/src/main/java/com/github/ksprider/surgical/spring/mvc/JSONResponseBodyAdvice.java
+++ b/src/main/java/com/github/ksprider/surgical/spring/mvc/JSONResponseBodyAdvice.java
@@ -51,7 +51,7 @@ public boolean supports(MethodParameter methodParameter, Class extends HttpMes
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class extends HttpMessageConverter>> selectedConverterType, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
JSON jsonAnnotation = methodParameter.getMethod().getAnnotation(JSON.class);
- String key = methodParameter.getExecutable().toString();
+ String key = methodParameter.getMethod().toString();
CustomFilterProvider customFilterProvider = cache.computeIfAbsent(key, (it) -> {
boolean isAll = null == jsonAnnotation;
String treeStr = isAll ? "*" : jsonAnnotation.value();
diff --git a/src/main/java/com/github/ksprider/surgical/spring/mvc/ObjectMapperConfig.java b/src/main/java/com/github/ksprider/surgical/spring/mvc/ObjectMapperConfig.java
index 30ff8f5..cb59ec4 100644
--- a/src/main/java/com/github/ksprider/surgical/spring/mvc/ObjectMapperConfig.java
+++ b/src/main/java/com/github/ksprider/surgical/spring/mvc/ObjectMapperConfig.java
@@ -2,8 +2,10 @@
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.ksprider.surgical.CustomFilterProvider;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.Serializable;
@@ -18,9 +20,15 @@ public void setObjectMapper(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
+ @Bean
+ public CustomFilterProvider> defaultFilterProvider() {
+ return new CustomFilterProvider<>();
+ }
+
@Override
public void afterPropertiesSet() throws Exception {
objectMapper.addMixIn(Serializable.class, CustomPropertyFilterMixIn.class);
+ objectMapper.setFilterProvider(defaultFilterProvider());
}
@JsonFilter("customPropertyFilter")