Module io.fluxzero.sdk
Class JacksonContentFilter.FilteringSerializer
java.lang.Object
com.fasterxml.jackson.databind.JsonSerializer<Object>
io.fluxzero.sdk.common.serialization.jackson.JacksonContentFilter.FilteringSerializer
- All Implemented Interfaces:
com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
- Enclosing class:
JacksonContentFilter
protected static class JacksonContentFilter.FilteringSerializer
extends com.fasterxml.jackson.databind.JsonSerializer<Object>
Custom Jackson serializer that attempts to invoke a
FilterContent handler method during serialization.
It caches matchers by class and uses HandlerInspector to find the appropriate handler methods.
The serializer behaves gracefully:
- If the handler returns
nulland the object is not part of an array,nullis written out. - If filtering fails, the original object is serialized as a fallback.
rootValue.-
Nested Class Summary
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer
com.fasterxml.jackson.databind.JsonSerializer.None -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanDetermines if the value should be considered empty, based on whether filtering returns null.voidserialize(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider provider) voidserializeAndThen(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, io.fluxzero.common.ThrowingConsumer<Object> followUp) Invokes the content filter if available and serializes the filtered result.voidserializeWithType(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSerializer) Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer
acceptJsonFormatVisitor, getDelegatee, handledType, isEmpty, isUnwrappingSerializer, properties, replaceDelegatee, unwrappingSerializer, usesObjectId, withFilterId, withIgnoredProperties
-
Field Details
-
rootValue
-
-
Constructor Details
-
FilteringSerializer
protected FilteringSerializer()
-
-
Method Details
-
serialize
public void serialize(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider provider) - Specified by:
serializein classcom.fasterxml.jackson.databind.JsonSerializer<Object>
-
serializeWithType
public void serializeWithType(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSerializer) - Overrides:
serializeWithTypein classcom.fasterxml.jackson.databind.JsonSerializer<Object>
-
serializeAndThen
public void serializeAndThen(Object input, com.fasterxml.jackson.core.JsonGenerator jsonGenerator, io.fluxzero.common.ThrowingConsumer<Object> followUp) Invokes the content filter if available and serializes the filtered result. If filtering fails, it logs a warning and falls back to serializing the original object.- Parameters:
input- the object to serializejsonGenerator- the JSON generatorfollowUp- logic to continue serialization with the possibly filtered result
-
isEmpty
Determines if the value should be considered empty, based on whether filtering returns null.- Overrides:
isEmptyin classcom.fasterxml.jackson.databind.JsonSerializer<Object>
-