package com.juick.components.configuration; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.juick.components.CleanUp; import com.juick.components.Notifications; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.InterceptingClientHttpRequestFactory; import org.springframework.http.client.support.BasicAuthorizationInterceptor; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.client.RestTemplate; import java.util.Collections; import java.util.List; /** * Created by aalexeev on 11/12/16. */ @Configuration @EnableScheduling @PropertySource("classpath:juick.conf") @ComponentScan(basePackages = {"com.juick.components.service"}) public class NotificationsAppConfiguration { @Value("${api_user:juick}") private String apiUser; @Value("${api_password:secret}") private String apiSecret; @Bean public RestTemplate rest() { RestTemplate rest = new RestTemplate(); List interceptors = Collections.singletonList( new BasicAuthorizationInterceptor(apiUser, apiSecret)); rest.setRequestFactory(new InterceptingClientHttpRequestFactory(rest.getRequestFactory(), interceptors)); return rest; } @Bean public Notifications push() { return new Notifications(); } @Bean public ObjectMapper jsonMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); mapper.registerModule(new Jdk8Module()); return mapper; } @Bean public CleanUp cleanUp() { return new CleanUp(); } }