package org.molgenis.util; import org.molgenis.data.Entity; import org.molgenis.gson.AutoValueTypeAdapterFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class GsonConfig { @Value("${environment:production}") private String environment; @Bean public GsonHttpMessageConverter gsonHttpMessageConverter() { return new GsonHttpMessageConverter(gsonFactoryBean().getObject()); } @Bean public GsonFactoryBean gsonFactoryBean() { boolean prettyPrinting = environment != null && (environment.equals("development") || environment.equals("test")); GsonFactoryBean gsonFactoryBean = new GsonFactoryBean(); gsonFactoryBean.registerTypeHierarchyAdapter(Entity.class, new EntitySerializer()); gsonFactoryBean.setDateFormatPattern(MolgenisDateFormat.getDateTimeFormat().toPattern()); gsonFactoryBean.setDisableHtmlEscaping(true); gsonFactoryBean.setPrettyPrinting(prettyPrinting); gsonFactoryBean.setSerializeNulls(false); gsonFactoryBean.registerTypeAdapterFactory(new AutoValueTypeAdapterFactory()); return gsonFactoryBean; } }