package com.sequenceiq.samples.phoenix; import java.util.Random; import org.jooq.SQLDialect; import org.jooq.impl.DataSourceConnectionProvider; import org.jooq.impl.DefaultDSLContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @EnableTransactionManagement @ComponentScan("com.sequenceiq.samples.phoenix") public class AppConfig { private static final String DRIVER_CLASS_NAME = "org.apache.phoenix.jdbc.PhoenixDriver"; private static final String URL = "jdbc:phoenix:localhost:2181"; @Bean(name = "dataSource") public DriverManagerDataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(DRIVER_CLASS_NAME); dataSource.setUrl(URL); return dataSource; } @Bean public DataSourceTransactionManager createDataSourceTransactionManager() { DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); dataSourceTransactionManager.setDataSource(dataSource()); return dataSourceTransactionManager; } @Bean public TransactionAwareDataSourceProxy dataSourceProxy() { TransactionAwareDataSourceProxy dataSourceProxy = new TransactionAwareDataSourceProxy(); dataSourceProxy.setTargetDataSource(dataSource()); return dataSourceProxy; } @Bean public DataSourceConnectionProvider dataSourceConnectionProvider() { return new DataSourceConnectionProvider(dataSourceProxy()); } @Bean public DefaultDSLContext createDefaultDSLContext() { return new DefaultDSLContext(dataSourceConnectionProvider(), SQLDialect.MYSQL); } @Bean public Random createRandom() { return new Random(); } }