diff --git a/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/config/java/AbstractCloudConfig.java b/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/config/java/AbstractCloudConfig.java index 7156a59..8a1e5f3 100644 --- a/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/config/java/AbstractCloudConfig.java +++ b/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/config/java/AbstractCloudConfig.java @@ -14,6 +14,7 @@ import org.springframework.cloud.Cloud; import org.springframework.cloud.CloudException; import org.springframework.cloud.CloudFactory; import org.springframework.cloud.service.PooledServiceConnectorConfig; +import org.springframework.cloud.service.ServiceConnectorConfig; import org.springframework.cloud.service.document.MongoDbFactoryConfig; import org.springframework.cloud.service.messaging.RabbitConnectionFactoryConfig; import org.springframework.cloud.service.relational.DataSourceConfig; @@ -419,5 +420,9 @@ public abstract class AbstractCloudConfig implements BeanFactoryAware { public T service(String serviceId, Class serviceConnectorType) { return cloud.getServiceConnector(serviceId, serviceConnectorType, null); } + + public T service(String serviceId, Class serviceConnectorType, ServiceConnectorConfig serviceConnectorConfig){ + return cloud.getServiceConnector(serviceId, serviceConnectorType, serviceConnectorConfig); + } } } diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/GenericServiceJavaConfigTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/GenericServiceJavaConfigTest.java index f8b2a89..4037304 100644 --- a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/GenericServiceJavaConfigTest.java +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/GenericServiceJavaConfigTest.java @@ -5,7 +5,11 @@ 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; @@ -23,6 +27,7 @@ public class GenericServiceJavaConfigTest extends AbstractServiceJavaConfigTest< return createMysqlService(id); } + protected Class getConnectorType() { return DataSource.class; } @@ -36,7 +41,9 @@ public class GenericServiceJavaConfigTest extends AbstractServiceJavaConfigTest< testContext.getBean("myServiceWithTypeWithServiceName", DataSource.class)); assertNotNull("Getting service with connector type (unique service)", - testContext.getBean("myServiceWithTypeWithoutServiceName", DataSource.class)); + testContext.getBean("myServiceWithTypeWithoutServiceName", DataSource.class)); + assertNotNull("Getting service with connector type (unique service)", + testContext.getBean("myServiceWithTypeWithServiceNameAndConfig", DataSource.class)); } } @@ -49,6 +56,10 @@ class GenericServiceWithId extends AbstractCloudConfig { } +class GenericServiceConnectorConfig implements ServiceConnectorConfig { + +} + class GenericServiceWithoutId extends AbstractCloudConfig { @Bean(name="my-service") public Object testService() { @@ -66,4 +77,15 @@ class GenericServiceWithConnectorType extends AbstractCloudConfig { 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); + } } + +