package com.juick.components.configuration; /** * Created by aalexeev on 11/12/16. */ import com.juick.components.XMPPConnection; import com.juick.components.XMPPServer; import com.juick.components.s2s.CleaningUp; import com.juick.components.s2s.JuickBot; import com.juick.server.configuration.BaseWebConfiguration; import org.apache.commons.lang3.BooleanUtils; import org.springframework.context.annotation.*; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import javax.inject.Inject; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Configuration @ComponentScan(basePackages = {"com.juick.components.controllers"}) @PropertySource("classpath:juick.conf") @Import(BaseWebConfiguration.class) @EnableScheduling public class XmppAppConfiguration extends WebMvcConfigurationSupport { @Inject private Environment env; @Bean public XMPPServer xmpp() { return new XMPPServer(env, service()); } @Bean public ExecutorService service() { return Executors.newCachedThreadPool(); } @Bean public CleaningUp cleaningUp() { return new CleaningUp(); } @Bean public JuickBot bot() { return new JuickBot(xmpp()); } @Bean public XMPPConnection router() { boolean disabled = BooleanUtils.toBoolean(env.getProperty("xmpp_disabled", "false")); return disabled ? null : new XMPPConnection(); } }