support iso dates

This commit is contained in:
Efstratios Giannopoulos 2023-12-05 12:52:59 +02:00
parent 5047d3b154
commit 2dee73ce1f
3 changed files with 16 additions and 17 deletions

View File

@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.util.StdDateFormat;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import eu.eudat.data.BaseEntity; import eu.eudat.data.BaseEntity;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -14,11 +15,14 @@ import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import java.util.List;
@SpringBootApplication(scanBasePackages = { @SpringBootApplication(scanBasePackages = {
"eu.eudat", "eu.eudat",
"eu.eudat.depositinterface", "eu.eudat.depositinterface",
@ -33,24 +37,9 @@ public class EuDatApplication extends SpringBootServletInitializer {
@Bean @Bean
@Primary @Primary
public ObjectMapper primaryObjectMapper() { public ObjectMapper primaryObjectMapper(Jackson2ObjectMapperBuilder builder) {
return JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) return builder.modulesToInstall(new JavaTimeModule()).build();
.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, true)
.serializationInclusion(JsonInclude.Include.NON_NULL)
.addModule(new JavaTimeModule()).build();
} }
// @Bean
// public Jackson2ObjectMapperBuilder objectMapperBuilder() {
// return new Jackson2ObjectMapperBuilder() {
//
// @Override
// public void configure(ObjectMapper objectMapper) {
// objectMapper.registerModule(new JavaTimeModule());
// super.configure(objectMapper);
// }
// };
//
// }
@Override @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

View File

@ -1,11 +1,17 @@
package eu.eudat.configurations; package eu.eudat.configurations;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import eu.eudat.interceptors.UserInterceptor; import eu.eudat.interceptors.UserInterceptor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

View File

@ -1,6 +1,10 @@
spring: spring:
jackson: jackson:
default-property-inclusion: non_null default-property-inclusion: non_null
deserialization:
fail-on-unknown-properties: false
serialization:
write-dates-as-timestamps: false
config: config:
import: optional:classpath:config/app.env[.properties], optional:file:../config/app.env[.properties], import: optional:classpath:config/app.env[.properties], optional:file:../config/app.env[.properties],
optional:classpath:config/db.yml[.yml], optional:classpath:config/db-${spring.profiles.active}.yml[.yml], optional:file:../config/db-${spring.profiles.active}.yml[.yml], optional:classpath:config/db.yml[.yml], optional:classpath:config/db-${spring.profiles.active}.yml[.yml], optional:file:../config/db-${spring.profiles.active}.yml[.yml],