From b75258ee5ed84510579050b5dba1edb904a09dfa Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sat, 12 Nov 2016 21:39:19 +0300 Subject: initial babbler-based xmpp bot --- .../configuration/BotAppConfiguration.java | 38 ++++++++++++++++++++ .../components/configuration/BotInitializer.java | 40 ++++++++++++++++++++++ .../configuration/BotMvcConfiguration.java | 33 ++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotAppConfiguration.java create mode 100644 juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotInitializer.java create mode 100644 juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotMvcConfiguration.java (limited to 'juick-xmpp-bot/src/main/java/com/juick/components/configuration') diff --git a/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotAppConfiguration.java b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotAppConfiguration.java new file mode 100644 index 00000000..8eb45170 --- /dev/null +++ b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotAppConfiguration.java @@ -0,0 +1,38 @@ +package com.juick.components.configuration; + +import com.juick.components.XMPPBot; +import com.juick.configuration.DataConfiguration; +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.jdbc.core.JdbcTemplate; + +import javax.inject.Inject; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by aalexeev on 11/12/16. + */ +@Configuration +@PropertySource("classpath:juick.conf") +@Import(DataConfiguration.class) +public class BotAppConfiguration { + @Inject + private Environment env; + @Inject + private JdbcTemplate jdbc; + + @Bean + public XMPPBot xmpp() { + return new XMPPBot(env); + } + + @Bean + public ExecutorService service() { + return Executors.newCachedThreadPool(); + } + +} diff --git a/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotInitializer.java b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotInitializer.java new file mode 100644 index 00000000..1b8dd249 --- /dev/null +++ b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotInitializer.java @@ -0,0 +1,40 @@ +package com.juick.components.configuration; + +import com.juick.configuration.DataConfiguration; +import org.springframework.web.filter.CharacterEncodingFilter; +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +import javax.servlet.Filter; + +/** + * Created by vt on 09/02/16. + */ +public class BotInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{BotAppConfiguration.class, DataConfiguration.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{BotMvcConfiguration.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } + + @Override + protected Filter[] getServletFilters() { + CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); + characterEncodingFilter.setEncoding("UTF-8"); + return new Filter[]{characterEncodingFilter}; + } + + @Override + protected String getServletName() { + return "Bot dispatcher servlet"; + } +} diff --git a/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotMvcConfiguration.java b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotMvcConfiguration.java new file mode 100644 index 00000000..2c55c0ce --- /dev/null +++ b/juick-xmpp-bot/src/main/java/com/juick/components/configuration/BotMvcConfiguration.java @@ -0,0 +1,33 @@ +package com.juick.components.configuration; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +import java.util.List; + +/** + * Created by vitalyster on 28.06.2016. + */ +@Configuration +@ComponentScan(basePackages = {"com.juick.components.controllers"}) +public class BotMvcConfiguration extends WebMvcConfigurationSupport { + + @Override + protected void configureMessageConverters(List> converters) { + Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() + .serializationInclusion(JsonInclude.Include.NON_DEFAULT) + .serializationInclusion(JsonInclude.Include.NON_NULL) + .serializationInclusion(JsonInclude.Include.NON_ABSENT) + .serializationInclusion(JsonInclude.Include.NON_EMPTY); + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(builder.build()); + converter.getObjectMapper().registerModule(new Jdk8Module()); + converters.add(converter); + super.configureMessageConverters(converters); + } +} -- cgit v1.2.3