package jnpf.limsService.provider; 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.BigInteger; import java.sql.Date; import java.sql.Timestamp; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; /** The explicit dataType carries semantics; decimal text survives JavaScript and untyped JSON clients. */ public class LimsElnSourceScalarSerializer extends JsonSerializer { @Override public void serialize(Object value, JsonGenerator output, SerializerProvider provider) throws IOException { if (value instanceof Boolean) output.writeBoolean((Boolean) value); else if (value instanceof BigDecimal) output.writeString(((BigDecimal) value).toPlainString()); else if (value instanceof BigInteger || value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof String || value instanceof LocalDate || value instanceof LocalDateTime || value instanceof OffsetDateTime || value instanceof Instant) output.writeString(value.toString()); else if (value instanceof Date) output.writeString(((Date) value).toLocalDate().toString()); else if (value instanceof Timestamp) output.writeString(((Timestamp) value).toLocalDateTime().toString()); else provider.reportMappingProblem("Unsupported source scalar type"); } }