github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/java/libraries/jersey2/JSON.mustache (about) 1 package {{invokerPackage}}; 2 3 {{#threetenbp}} 4 import org.threeten.bp.*; 5 {{/threetenbp}} 6 import com.fasterxml.jackson.annotation.*; 7 import com.fasterxml.jackson.databind.*; 8 import org.openapitools.jackson.nullable.JsonNullableModule; 9 {{#java8}} 10 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; 11 {{/java8}} 12 {{#joda}} 13 import com.fasterxml.jackson.datatype.joda.JodaModule; 14 {{/joda}} 15 {{#threetenbp}} 16 import com.fasterxml.jackson.datatype.threetenbp.ThreeTenModule; 17 {{/threetenbp}} 18 19 import java.text.DateFormat; 20 21 import javax.ws.rs.ext.ContextResolver; 22 23 {{>generatedAnnotation}} 24 public class JSON implements ContextResolver<ObjectMapper> { 25 private ObjectMapper mapper; 26 27 public JSON() { 28 mapper = new ObjectMapper(); 29 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 30 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 31 mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); 32 mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 33 mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); 34 mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); 35 mapper.setDateFormat(new RFC3339DateFormat()); 36 {{#java8}} 37 mapper.registerModule(new JavaTimeModule()); 38 {{/java8}} 39 {{#joda}} 40 mapper.registerModule(new JodaModule()); 41 {{/joda}} 42 {{#threetenbp}} 43 ThreeTenModule module = new ThreeTenModule(); 44 module.addDeserializer(Instant.class, CustomInstantDeserializer.INSTANT); 45 module.addDeserializer(OffsetDateTime.class, CustomInstantDeserializer.OFFSET_DATE_TIME); 46 module.addDeserializer(ZonedDateTime.class, CustomInstantDeserializer.ZONED_DATE_TIME); 47 mapper.registerModule(module); 48 {{/threetenbp}} 49 JsonNullableModule jnm = new JsonNullableModule(); 50 mapper.registerModule(jnm); 51 } 52 53 /** 54 * Set the date format for JSON (de)serialization with Date properties. 55 * @param dateFormat Date format 56 */ 57 public void setDateFormat(DateFormat dateFormat) { 58 mapper.setDateFormat(dateFormat); 59 } 60 61 @Override 62 public ObjectMapper getContext(Class<?> type) { 63 return mapper; 64 } 65 }