Created
October 10, 2016 20:19
-
-
Save rsvalerio/7e57b2840dcab158bb98d694fd30f118 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.rsvalerio.spring; | |
import com.fasterxml.jackson.annotation.JsonInclude; | |
import com.fasterxml.jackson.databind.ObjectMapper; | |
import com.fasterxml.jackson.databind.SerializationFeature; | |
import org.atteo.classindex.ClassIndex; | |
import org.springframework.beans.factory.ObjectFactory; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.boot.context.embedded.FilterRegistrationBean; | |
import org.springframework.context.MessageSource; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.context.annotation.Import; | |
import org.springframework.data.repository.support.Repositories; | |
import org.springframework.data.rest.core.config.RepositoryRestConfiguration; | |
import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener; | |
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration; | |
import org.springframework.http.MediaType; | |
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; | |
import org.springframework.web.filter.CharacterEncodingFilter; | |
import java.net.URI; | |
import java.net.URISyntaxException; | |
@Configuration | |
@Import(RepositoryRestMvcConfiguration.class) | |
public class RestDataConfig extends RepositoryRestMvcConfiguration { | |
@Autowired | |
private MessageSource messageSource; | |
/** | |
* Configura o Spring-data-rest | |
* @param config | |
*/ | |
@Override | |
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { | |
super.configureRepositoryRestConfiguration(config); | |
try { | |
config.setBaseUri(new URI("/api")); | |
config.setReturnBodyOnCreate(true); | |
configExposeIds(config); | |
config.setDefaultMediaType(MediaType.APPLICATION_JSON); | |
} catch (URISyntaxException e) { | |
e.printStackTrace(); | |
} | |
} | |
/** | |
* Percorre todos os dominios e configura a exposicao do ID na resposta do Spring-data-rest | |
* @param config | |
*/ | |
private void configExposeIds (RepositoryRestConfiguration config) { | |
for (Class<?> klass : ClassIndex.getPackageClasses("br.com.governa.portalservidor.recadastramento.domain")) { | |
config.exposeIdsFor(klass); | |
} | |
for (Class<?> klass2 : ClassIndex.getPackageClasses("br.com.governa.portalservidor.recadastramento.domain.declaracao")) { | |
config.exposeIdsFor(klass2); | |
} | |
} | |
@Bean | |
public LocalValidatorFactoryBean validator() { | |
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean(); | |
validatorFactoryBean.setValidationMessageSource(messageSource); | |
return validatorFactoryBean; | |
} | |
// @Bean | |
// public Filter characterEncodingFilter() { | |
// CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); | |
// characterEncodingFilter.setBeanName("characterEncodingFilter"); | |
// characterEncodingFilter.setEncoding("UTF-8"); | |
// return characterEncodingFilter; | |
// } | |
@Bean | |
public FilterRegistrationBean filterRegistrationBean() { | |
FilterRegistrationBean registrationBean = new FilterRegistrationBean(); | |
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); | |
characterEncodingFilter.setBeanName("characterEncodingFilter"); | |
characterEncodingFilter.setEncoding("UTF-8"); | |
registrationBean.setFilter(characterEncodingFilter); | |
return registrationBean; | |
} | |
/** | |
* Corrige questao do erro 500, ver: https://jira.spring.io/browse/DATAREST-260 | |
*/ | |
@Bean | |
@Override | |
public ValidatingRepositoryEventListener validatingRepositoryEventListener(ObjectFactory<Repositories> repositories) { | |
ValidatingRepositoryEventListener listener = new ValidatingRepositoryEventListener(repositories); | |
configureValidatingRepositoryEventListener(listener); | |
listener.addValidator("afterCreate", validator()); | |
listener.addValidator("beforeCreate", validator()); | |
return listener; | |
} | |
@Override | |
protected void configureJacksonObjectMapper(ObjectMapper objectMapper) { | |
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); | |
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment