From 5f91189fd9910b2451bccd2dc5ca2806fd1ee0b8 Mon Sep 17 00:00:00 2001 From: mariobriggs Date: Wed, 27 May 2015 12:14:28 +0530 Subject: [PATCH] Added DB2DataSourceCreator and related tests. Fixed tags & username/password in jdbcurl of DB2ServiceInfo --- .../cloudfoundry/DB2ServiceInfoCreator.java | 2 +- .../cloud/service/common/DB2ServiceInfo.java | 4 +- .../relational/DB2DataSourceCreator.java | 13 ++++++ ...work.cloud.service.ServiceConnectorCreator | 1 + .../relational/DB2DataSourceFactoryTest.java | 9 ++++ .../relational/DB2ServiceCreatorTest.java | 41 +++++++++++++++++++ 6 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/service/relational/DB2DataSourceCreator.java create mode 100644 spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2DataSourceFactoryTest.java create mode 100644 spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2ServiceCreatorTest.java diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/DB2ServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/DB2ServiceInfoCreator.java index 3b0a9f1..66d458a 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/DB2ServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/DB2ServiceInfoCreator.java @@ -4,7 +4,7 @@ import org.springframework.cloud.service.common.DB2ServiceInfo; public class DB2ServiceInfoCreator extends RelationalServiceInfoCreator { public DB2ServiceInfoCreator() { - super(new Tags(), DB2ServiceInfo.DB2_SCHEME); + super(new Tags("sqldb","dashDB","db2"), DB2ServiceInfo.DB2_SCHEME); } @Override diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/DB2ServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/DB2ServiceInfo.java index 068318f..829ea3e 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/DB2ServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/DB2ServiceInfo.java @@ -19,9 +19,9 @@ public class DB2ServiceInfo extends RelationalServiceInfo { return getUriInfo().getUriString(); } - return String.format("jdbc:%s://%s:%d/%s", + return String.format("jdbc:%s://%s:%d/%s:user=%s;password=%s;", jdbcUrlDatabaseType, - getHost(), getPort(), getPath()); + getHost(), getPort(), getPath(), getUserName(), getPassword()); } } diff --git a/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/service/relational/DB2DataSourceCreator.java b/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/service/relational/DB2DataSourceCreator.java new file mode 100644 index 0000000..4b5d0d9 --- /dev/null +++ b/spring-cloud-spring-service-connector/src/main/java/org/springframework/cloud/service/relational/DB2DataSourceCreator.java @@ -0,0 +1,13 @@ +package org.springframework.cloud.service.relational; + +import org.springframework.cloud.service.common.DB2ServiceInfo;; + +public class DB2DataSourceCreator extends DataSourceCreator { + + private static final String[] DRIVERS = new String[]{"com.ibm.db2.jcc.DB2Driver"}; + private static final String VALIDATION_QUERY = "VALUES 1"; + + public DB2DataSourceCreator() { + super("spring-cloud.db2.driver", DRIVERS, VALIDATION_QUERY); + } +} diff --git a/spring-cloud-spring-service-connector/src/main/resources/META-INF/services/org.springframework.cloud.service.ServiceConnectorCreator b/spring-cloud-spring-service-connector/src/main/resources/META-INF/services/org.springframework.cloud.service.ServiceConnectorCreator index b28979f..3fed587 100644 --- a/spring-cloud-spring-service-connector/src/main/resources/META-INF/services/org.springframework.cloud.service.ServiceConnectorCreator +++ b/spring-cloud-spring-service-connector/src/main/resources/META-INF/services/org.springframework.cloud.service.ServiceConnectorCreator @@ -1,6 +1,7 @@ org.springframework.cloud.service.relational.MysqlDataSourceCreator org.springframework.cloud.service.relational.PostgresqlDataSourceCreator org.springframework.cloud.service.relational.OracleDataSourceCreator +org.springframework.cloud.service.relational.DB2DataSourceCreator org.springframework.cloud.service.keyval.RedisConnectionFactoryCreator org.springframework.cloud.service.document.MongoDbFactoryCreator org.springframework.cloud.service.messaging.RabbitConnectionFactoryCreator diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2DataSourceFactoryTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2DataSourceFactoryTest.java new file mode 100644 index 0000000..ed3553f --- /dev/null +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2DataSourceFactoryTest.java @@ -0,0 +1,9 @@ +package org.springframework.cloud.service.relational; + +import org.springframework.cloud.service.common.DB2ServiceInfo; + +public class DB2DataSourceFactoryTest extends AbstractDataSourceFactoryTest { + public DB2ServiceInfo getTestServiceInfo(String id) { + return new DB2ServiceInfo(id, "db2://host:port/db:user=myuser;password=mypassword;"); + } +} diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2ServiceCreatorTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2ServiceCreatorTest.java new file mode 100644 index 0000000..ad6bdec --- /dev/null +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/DB2ServiceCreatorTest.java @@ -0,0 +1,41 @@ +package org.springframework.cloud.service.relational; + +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.cloud.service.common.DB2ServiceInfo;; + +public class DB2ServiceCreatorTest extends AbstractDataSourceCreatorTest { + @Mock private DB2ServiceInfo mockDB2ServiceInfo; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + // set a dummy JDBC driver since we can't yet include a real DB2 driver in the project due to licensing restrictions + System.setProperty("spring-cloud.db2.driver", "com.example.Driver"); + } + + @Override + public DB2ServiceInfo createServiceInfo() { + when(mockDB2ServiceInfo.getJdbcUrl()).thenReturn("db2://10.20.30.40:50000/database-123:user=myuser;password=mypassword;"); + + return mockDB2ServiceInfo; + } + + @Override + public String getDriverName() { + return "com.example.Driver"; + } + + @Override + public DB2DataSourceCreator getCreator() { + return new DB2DataSourceCreator(); + } + + @Override + public String getValidationQueryStart() { + return "VALUES 1"; + } +}