CurrencyAmountCentsFieldModifier.java

package com.tdmconsult.ete.utils;

import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
import com.fasterxml.jackson.databind.util.NameTransformer;
import java.util.List;

public class CurrencyAmountCentsFieldModifier extends BeanSerializerModifier {

    @Override
    public List<BeanPropertyWriter> changeProperties(
            final SerializationConfig config,
            final BeanDescription beanDesc,
            final List<BeanPropertyWriter> beanProperties) {

        return beanProperties.stream().map(writer -> {
            if (writer.getAnnotation(JsonCurrencyAmountCents.class) != null) {
                final var modifiedWriter = writer.rename(NameTransformer.simpleTransformer("", "Cents"));
                modifiedWriter.assignSerializer(new CurrencyAmountCentsSerializer());
                return modifiedWriter;
            } else {
                return writer;
            }
        }).toList();
    }
}