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.configuration.DataConfiguration; import org.apache.commons.lang3.BooleanUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.EnableScheduling; import javax.inject.Inject; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Configuration @PropertySource("classpath:juick.conf") @Import(DataConfiguration.class) @EnableScheduling public class XmppAppConfiguration { @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(); } }