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  }