github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/java/libraries/rest-assured/JacksonObjectMapper.mustache (about)

     1  {{>licenseInfo}}
     2  
     3  package {{invokerPackage}};
     4  
     5  {{#threetenbp}}
     6  import org.threeten.bp.*;
     7  {{/threetenbp}}
     8  import com.fasterxml.jackson.annotation.*;
     9  import com.fasterxml.jackson.databind.*;
    10  import org.openapitools.jackson.nullable.JsonNullableModule;
    11  {{#java8}}
    12  import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    13  {{/java8}}
    14  {{#joda}}
    15  import com.fasterxml.jackson.datatype.joda.JodaModule;
    16  {{/joda}}
    17  {{#threetenbp}}
    18  import com.fasterxml.jackson.datatype.threetenbp.ThreeTenModule;
    19  {{/threetenbp}}
    20  
    21  import io.restassured.internal.mapping.Jackson2Mapper;
    22  import io.restassured.path.json.mapper.factory.Jackson2ObjectMapperFactory;
    23  
    24  
    25  public class JacksonObjectMapper extends Jackson2Mapper {
    26  
    27      private JacksonObjectMapper() {
    28          super(createFactory());
    29      }
    30  
    31      private static Jackson2ObjectMapperFactory createFactory() {
    32          return (cls, charset) -> {
    33              ObjectMapper mapper = new ObjectMapper();
    34              mapper = new ObjectMapper();
    35              mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    36              mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    37              mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
    38              mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    39              mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
    40              mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
    41              mapper.setDateFormat(new RFC3339DateFormat());
    42              {{#java8}}
    43              mapper.registerModule(new JavaTimeModule());
    44              {{/java8}}
    45              {{#joda}}
    46              mapper.registerModule(new JodaModule());
    47              {{/joda}}
    48              {{#threetenbp}}
    49              ThreeTenModule module = new ThreeTenModule();
    50              module.addDeserializer(Instant.class, CustomInstantDeserializer.INSTANT);
    51              module.addDeserializer(OffsetDateTime.class, CustomInstantDeserializer.OFFSET_DATE_TIME);
    52              module.addDeserializer(ZonedDateTime.class, CustomInstantDeserializer.ZONED_DATE_TIME);
    53              mapper.registerModule(module);
    54              {{/threetenbp}}
    55              JsonNullableModule jnm = new JsonNullableModule();
    56              mapper.registerModule(jnm);
    57              return mapper;
    58          };
    59      }
    60  
    61      public static JacksonObjectMapper jackson() {
    62          return new JacksonObjectMapper();
    63      }
    64  }