aboutsummaryrefslogtreecommitdiff
path: root/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java')
-rw-r--r--juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java b/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java
new file mode 100644
index 00000000..6a7f697a
--- /dev/null
+++ b/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java
@@ -0,0 +1,90 @@
+package com.juick.demo.configuration;
+
+import ch.vorburger.exec.ManagedProcessException;
+import ch.vorburger.mariadb4j.DB;
+import com.juick.server.protocol.JuickProtocol;
+import com.juick.service.search.SearchService;
+import org.apache.commons.dbcp2.BasicDataSource;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.TransactionManagementConfigurer;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by vitalyster on 19.12.2016.
+ */
+@Configuration
+@ComponentScan(basePackages = {"com.juick.demo", "com.juick.service", "com.juick.server.protocol"})
+public class DemoAppConfiguration implements ApplicationContextAware, TransactionManagementConfigurer {
+ private ApplicationContext applicationContext;
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+ @Bean
+ public BasicDataSource dataSource() {
+ try {
+ DB db = DB.newEmbeddedDB(33306);
+ db.start();
+ db.createDB("juick");
+ db.source("schema.sql");
+ BasicDataSource dataSource = new BasicDataSource();
+ dataSource.setDriverClassName("com.mysql.jdbc.Driver");
+ dataSource.setUrl("jdbc:mysql://localhost:33306/juick?autoReconnect=true&user=root");
+
+ dataSource.setValidationQuery("select 1");
+
+ return dataSource;
+ } catch (ManagedProcessException e) {
+ return null;
+ }
+ }
+
+ @Bean
+ public PlatformTransactionManager transactionManager() {
+ return new DataSourceTransactionManager(dataSource());
+ }
+
+ @Override
+ public PlatformTransactionManager annotationDrivenTransactionManager() {
+ return transactionManager();
+ }
+
+ @Bean
+ @DependsOn("dataSource")
+ public JdbcTemplate jdbcTemplate() {
+ return new JdbcTemplate(dataSource());
+ }
+ @Bean
+ public SearchService emptySearchService() {
+ return new SearchService() {
+ @Override
+ public void setMaxResult(int maxResult) {
+ }
+
+ @Override
+ public List<Integer> searchInAllMessages(String searchString, int messageIdBefore) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public List<Integer> searchByStringAndUser(String searchString, int userId, int messageIdBefore) {
+ return Collections.emptyList();
+ }
+ };
+ }
+ @Bean
+ public JuickProtocol juickProtocol() {
+ return new JuickProtocol("http://localhost:8080/");
+ }
+}