package org.springframework.cloud.config.java; import static org.junit.Assert.assertNotNull; import javax.sql.DataSource; import org.junit.Test; import org.springframework.cloud.service.ServiceConnectorConfig; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.PooledServiceConnectorConfig.PoolConfig; import org.springframework.cloud.service.relational.DataSourceConfig; import org.springframework.cloud.service.relational.DataSourceConfig.ConnectionConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; /** * * @author Ramnivas Laddad * */ public class GenericServiceJavaConfigTest extends AbstractServiceJavaConfigTest<DataSource> { public GenericServiceJavaConfigTest() { super(GenericServiceWithId.class, GenericServiceWithoutId.class); } protected ServiceInfo createService(String id) { return createMysqlService(id); } protected Class<DataSource> getConnectorType() { return DataSource.class; } @Test public void cloudGenericServiceWithConnectorType() { ApplicationContext testContext = getTestApplicationContext(GenericServiceWithConnectorType.class, createService("my-service")); assertNotNull("Getting service with connector type (specific service)", testContext.getBean("myServiceWithTypeWithServiceName", DataSource.class)); assertNotNull("Getting service with connector type (unique service)", testContext.getBean("myServiceWithTypeWithoutServiceName", DataSource.class)); assertNotNull("Getting service with connector type (unique service)", testContext.getBean("myServiceWithTypeWithServiceNameAndConfig", DataSource.class)); } } class GenericServiceWithId extends AbstractCloudConfig { @Bean(name="my-service") public Object testService() { return connectionFactory().service("my-service"); } } class GenericServiceConnectorConfig implements ServiceConnectorConfig { } class GenericServiceWithoutId extends AbstractCloudConfig { @Bean(name="my-service") public Object testService() { return connectionFactory().service(); } } class GenericServiceWithConnectorType extends AbstractCloudConfig { @Bean public DataSource myServiceWithTypeWithServiceName() { return connectionFactory().service("my-service", DataSource.class); } @Bean public DataSource myServiceWithTypeWithoutServiceName() { return connectionFactory().service(DataSource.class); } @Bean public DataSource myServiceWithTypeWithServiceNameAndConfig(){ PoolConfig poolConfig = new PoolConfig(20, 200); ConnectionConfig connectionConfig = new ConnectionConfig("sessionVariables=sql_mode='ANSI';characterEncoding=UTF-8"); DataSourceConfig serviceConfig = new DataSourceConfig(poolConfig, connectionConfig); return connectionFactory().service("my-service",DataSource.class,serviceConfig); } }