package io.katharsis.jackson.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.PropertyWriter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import io.katharsis.utils.Predicate2;
public class KatharsisFieldPropertyFilter extends SimpleBeanPropertyFilter {
private final Predicate2<Object, PropertyWriter> includeChecker;
public KatharsisFieldPropertyFilter(Predicate2<Object, PropertyWriter> includeChecker) {
this.includeChecker = includeChecker;
}
@Override
public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider provider, BeanPropertyWriter writer)
throws Exception {
if (include(bean, writer)) {
super.serializeAsField(bean, jgen, provider, writer);
}
}
@Override
public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider provider, PropertyWriter writer)
throws Exception {
if (include(pojo, writer)) {
super.serializeAsField(pojo, jgen, provider, writer);
}
}
private boolean include(Object bean, PropertyWriter writer) {
return includeChecker.test(bean, writer);
}
}