CurrencyAmountCentsSerializer.java
package com.tdmconsult.ete.utils;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.jspecify.annotations.Nullable;
public class CurrencyAmountCentsSerializer extends JsonSerializer<Object> {
@Setter
@Accessors(chain = true)
private @Nullable String fieldNameOverride;
@Override
public void serialize(
final Object value,
final JsonGenerator gen,
final SerializerProvider serializers) throws IOException {
if (value == null) {
gen.writeNull();
return;
}
BigDecimal decimalValue = (BigDecimal) value;
long cents = decimalValue.multiply(BigDecimal.valueOf(100))
.setScale(0, RoundingMode.HALF_UP)
.longValue();
if (fieldNameOverride != null) {
gen.writeFieldName(fieldNameOverride);
}
gen.writeNumber(cents);
}
}