com.hubspot.algebra.ResultSerializer Maven / Gradle / Ivy
package com.hubspot.algebra;
import static com.hubspot.algebra.ResultModule.CASE_FIELD_NAME;
import static com.hubspot.algebra.ResultModule.ERROR_FIELD_NAME;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.EnumSerializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.hubspot.algebra.ResultModule.Case;
public class ResultSerializer extends StdSerializer> {
ResultSerializer(JavaType type) {
super(type);
}
@Override
public void serialize(Result, ?> value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeStartObject();
if (value.isErr()) {
Object err = value.unwrapErrOrElseThrow();
JsonSerializer> errorSerializer = provider.findTypedValueSerializer(err.getClass(), true, null);
if (errorSerializer instanceof EnumSerializer) {
EnumSerializer enumSerializer = ((EnumSerializer) errorSerializer);
Enum> enumErr = ((Enum>) err);
gen.writeFieldName(ERROR_FIELD_NAME);
enumSerializer.serialize(enumErr, gen, provider);
} else {
JsonSerializer © 2015 - 2025 Weber Informatics LLC | Privacy Policy