diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/AmqpServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/AmqpServiceInfoCreator.java index af68eee..e1b868e 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/AmqpServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/AmqpServiceInfoCreator.java @@ -12,16 +12,15 @@ import org.springframework.cloud.service.common.AmqpServiceInfo; public class AmqpServiceInfoCreator extends CloudFoundryServiceInfoCreator { public AmqpServiceInfoCreator() { - super(new Tags("rabbitmq"), AmqpServiceInfo.URI_SCHEME); + super(new Tags("rabbitmq"), AmqpServiceInfo.AMQP_SCHEME, AmqpServiceInfo.AMQPS_SCHEME); } public AmqpServiceInfo createServiceInfo(Map serviceData) { - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); + Map credentials = getCredentials(serviceData); String id = (String) serviceData.get("name"); - String uri = getStringFromCredentials(credentials, "uri", "url"); + String uri = getUriFromCredentials(credentials); return new AmqpServiceInfo(id, uri); } diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryServiceInfoCreator.java index d2d95f2..69c9989 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryServiceInfoCreator.java @@ -12,15 +12,11 @@ import org.springframework.cloud.service.ServiceInfo; public abstract class CloudFoundryServiceInfoCreator implements ServiceInfoCreator> { private Tags tags; - private String uriScheme; + private String[] uriSchemes; - public CloudFoundryServiceInfoCreator(Tags tags, String uriScheme) { + public CloudFoundryServiceInfoCreator(Tags tags, String... uriSchemes) { this.tags = tags; - this.uriScheme = uriScheme; - } - - public CloudFoundryServiceInfoCreator(Tags tags) { - this(tags, null); + this.uriSchemes = uriSchemes; } public boolean accept(Map serviceData) { @@ -39,24 +35,30 @@ public abstract class CloudFoundryServiceInfoCreator imp } protected boolean uriMatchesScheme(Map serviceData) { - if (uriScheme == null) { + if (uriSchemes == null) { return false; } - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); - if (credentials != null) { - String uri = credentials.get("uri"); - if (uri == null) { - uri = credentials.get("url"); - } - if (uri != null) { - return uri.startsWith(uriScheme + "://"); + String uri = getUriFromCredentials(getCredentials(serviceData)); + if (uri != null) { + for (String uriScheme : uriSchemes) { + if (uri.startsWith(uriScheme + "://")) { + return true; + } } } return false; } + @SuppressWarnings("unchecked") + protected Map getCredentials(Map serviceData) { + return (Map) serviceData.get("credentials"); + } + + protected String getUriFromCredentials(Map credentials) { + return getStringFromCredentials(credentials, "uri", "url"); + } + protected String getStringFromCredentials(Map credentials, String... keys) { for (String key : keys) { if (credentials.containsKey(key)) { @@ -66,7 +68,21 @@ public abstract class CloudFoundryServiceInfoCreator imp return null; } - public String getUriScheme() { - return uriScheme; + protected int getIntFromCredentials(Map credentials, String... keys) { + for (String key : keys) { + if (credentials.containsKey(key)) { + // allows the value to be quoted as a String or native integer type + return Integer.parseInt(credentials.get(key).toString()); + } + } + return -1; + } + + public String[] getUriSchemes() { + return uriSchemes; + } + + public String getDefaultUriScheme() { + return uriSchemes[0]; } } diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MongoServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MongoServiceInfoCreator.java index ac963c5..1749e77 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MongoServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MongoServiceInfoCreator.java @@ -12,17 +12,14 @@ import org.springframework.cloud.service.common.MongoServiceInfo; public class MongoServiceInfoCreator extends CloudFoundryServiceInfoCreator { public MongoServiceInfoCreator() { - // the literal in the tag is CloudFoundry-specific - super(new Tags("mongodb"), MongoServiceInfo.URI_SCHEME); + // the literal in the tag is CloudFoundry-specific + super(new Tags("mongodb"), MongoServiceInfo.MONGODB_SCHEME); } public MongoServiceInfo createServiceInfo(Map serviceData) { - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); - String id = (String) serviceData.get("name"); - String uri = getStringFromCredentials(credentials, "uri", "url"); + String uri = getUriFromCredentials(getCredentials(serviceData)); return new MongoServiceInfo(id, uri); } diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MysqlServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MysqlServiceInfoCreator.java index b5c6e15..fb64ddd 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MysqlServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/MysqlServiceInfoCreator.java @@ -10,8 +10,8 @@ import org.springframework.cloud.service.common.MysqlServiceInfo; public class MysqlServiceInfoCreator extends RelationalServiceInfoCreator { public MysqlServiceInfoCreator() { - // the literal in the tag is CloudFoundry-specific - super(new Tags("mysql"), MysqlServiceInfo.URI_SCHEME); + // the literal in the tag is CloudFoundry-specific + super(new Tags("mysql"), MysqlServiceInfo.MYSQL_SCHEME); } @Override diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/OracleServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/OracleServiceInfoCreator.java index 1d82ab3..85ee4ce 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/OracleServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/OracleServiceInfoCreator.java @@ -4,7 +4,7 @@ import org.springframework.cloud.service.common.OracleServiceInfo; public class OracleServiceInfoCreator extends RelationalServiceInfoCreator { public OracleServiceInfoCreator() { - super(new Tags(), OracleServiceInfo.URI_SCHEME); + super(new Tags(), OracleServiceInfo.ORACLE_SCHEME); } @Override diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/PostgresqlServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/PostgresqlServiceInfoCreator.java index abfbde1..6426f08 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/PostgresqlServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/PostgresqlServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.PostgresqlServiceInfo; public class PostgresqlServiceInfoCreator extends RelationalServiceInfoCreator { public PostgresqlServiceInfoCreator() { - super(new Tags("postgresql"), PostgresqlServiceInfo.URI_SCHEME); + super(new Tags("postgresql"), PostgresqlServiceInfo.POSTGRES_SCHEME); } @Override diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RedisServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RedisServiceInfoCreator.java index f8fcfa3..d038cd3 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RedisServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RedisServiceInfoCreator.java @@ -12,21 +12,19 @@ import org.springframework.cloud.service.common.RedisServiceInfo; public class RedisServiceInfoCreator extends CloudFoundryServiceInfoCreator { public RedisServiceInfoCreator() { - // the literal in the tag is CloudFoundry-specific - super(new Tags("redis"), RedisServiceInfo.URI_SCHEME); + // the literal in the tag is CloudFoundry-specific + super(new Tags("redis"), RedisServiceInfo.REDIS_SCHEME); } public RedisServiceInfo createServiceInfo(Map serviceData) { - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); - String id = (String) serviceData.get("name"); - String uri = getStringFromCredentials(credentials, "uri", "url"); + Map credentials = getCredentials(serviceData); + String uri = getUriFromCredentials(credentials); if (uri == null) { String host = getStringFromCredentials(credentials, "hostname", "host"); - Integer port = Integer.parseInt(credentials.get("port").toString()); + Integer port = getIntFromCredentials(credentials, "port"); String password = (String) credentials.get("password"); return new RedisServiceInfo(id, host, port, password); diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RelationalServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RelationalServiceInfoCreator.java index d61fcfa..8a4247e 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RelationalServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/RelationalServiceInfoCreator.java @@ -12,30 +12,28 @@ import org.springframework.cloud.util.UriInfo; */ public abstract class RelationalServiceInfoCreator extends CloudFoundryServiceInfoCreator { - public RelationalServiceInfoCreator(Tags tags, String uriScheme) { - super(tags, uriScheme); + public RelationalServiceInfoCreator(Tags tags, String... uriSchemes) { + super(tags, uriSchemes); } public abstract SI createServiceInfo(String id, String uri); - public SI createServiceInfo(Map serviceData) { - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); - + public SI createServiceInfo(Map serviceData) { String id = (String) serviceData.get("name"); - String uri = getStringFromCredentials(credentials, "uri", "url"); + Map credentials = getCredentials(serviceData); + String uri = getUriFromCredentials(credentials); if (uri == null) { String host = getStringFromCredentials(credentials, "hostname", "host"); - int port = Integer.parseInt(credentials.get("port").toString()); // allows the port attribute to be quoted or plain + int port = getIntFromCredentials(credentials, "port"); String username = getStringFromCredentials(credentials, "user", "username"); String password = (String) credentials.get("password"); String database = (String) credentials.get("name"); - uri = new UriInfo(getUriScheme(), host, port, username, password, database).toString(); + uri = new UriInfo(getDefaultUriScheme(), host, port, username, password, database).toString(); } return createServiceInfo(id, uri); diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/SmtpServiceInfoCreator.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/SmtpServiceInfoCreator.java index 10bd6e5..d64e144 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/SmtpServiceInfoCreator.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/SmtpServiceInfoCreator.java @@ -15,26 +15,25 @@ public class SmtpServiceInfoCreator extends CloudFoundryServiceInfoCreator serviceData) { String id = (String) serviceData.get("name"); - @SuppressWarnings("unchecked") - Map credentials = (Map) serviceData.get("credentials"); + Map credentials = getCredentials(serviceData); String host = (String) credentials.get("hostname"); - int port = DEFAULT_SMTP_PORT; - if (credentials.containsKey("port")) { - port = Integer.parseInt(credentials.get("port").toString()); + int port = getIntFromCredentials(credentials, "port"); + if (port == -1) { + port = DEFAULT_SMTP_PORT; } String username = (String) credentials.get("username"); String password = (String) credentials.get("password"); - String uri = new UriInfo(SmtpServiceInfo.URI_SCHEME, host, port, username, password).toString(); + String uri = new UriInfo(SmtpServiceInfo.SMTP_SCHEME, host, port, username, password).toString(); return new SmtpServiceInfo(id, uri); } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java index 5bab776..5809a08 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java @@ -11,11 +11,15 @@ import java.util.Scanner; import org.junit.Before; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.mockito.internal.matchers.InstanceOf; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.util.EnvironmentAccessor; import com.fasterxml.jackson.databind.ObjectMapper; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; + /** * Base test class that provides setup and utility methods to generate test payload * @@ -120,5 +124,14 @@ public abstract class AbstractCloudFoundryConnectorTest { private static String quote(String str) { return "\"" + str + "\""; } - + + protected static void assertServiceFoundOfType(ServiceInfo serviceInfo, Class type) { + assertNotNull(serviceInfo); + assertThat(serviceInfo, new InstanceOf(type)); + } + + protected static void assertServiceFoundOfType(List serviceInfos, String serviceId, Class type) { + ServiceInfo serviceInfo = getServiceInfo(serviceInfos, serviceId); + assertServiceFoundOfType(serviceInfo, type); + } } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorAmqpServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorAmqpServiceTest.java index 0478a7e..56a4289 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorAmqpServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorAmqpServiceTest.java @@ -1,12 +1,12 @@ package org.springframework.cloud.cloudfoundry; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.AmqpServiceInfo; /** * @@ -22,8 +22,8 @@ public class CloudFoundryConnectorAmqpServiceTest extends AbstractCloudFoundryCo getRabbitServicePayloadWithTags("rabbit-2", hostname, port, username, password, "q-2", "vhost2"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-1")); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-2")); + assertServiceFoundOfType(serviceInfos, "rabbit-1", AmqpServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "rabbit-2", AmqpServiceInfo.class); } @Test @@ -34,20 +34,32 @@ public class CloudFoundryConnectorAmqpServiceTest extends AbstractCloudFoundryCo getRabbitServicePayloadWithoutTags("rabbit-2", hostname, port, username, password, "q-2", "vhost2"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-1")); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-2")); + assertServiceFoundOfType(serviceInfos, "rabbit-1", AmqpServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "rabbit-2", AmqpServiceInfo.class); } - @Test - public void rabbitServiceCreationNoLabelNoTags() { + @Test + public void rabbitServiceCreationNoLabelNoTags() { when(mockEnvironment.getEnvValue("VCAP_SERVICES")) .thenReturn(getServicesPayload( getRabbitServicePayloadNoLabelNoTags("rabbit-1", hostname, port, username, password, "q-1", "vhost1"), getRabbitServicePayloadNoLabelNoTags("rabbit-2", hostname, port, username, password, "q-2", "vhost2"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-1")); - assertNotNull(getServiceInfo(serviceInfos, "rabbit-2")); + assertServiceFoundOfType(serviceInfos, "rabbit-1", AmqpServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "rabbit-2", AmqpServiceInfo.class); + } + + @Test + public void rabbitServiceCreationNoLabelNoTagsSecure() { + when(mockEnvironment.getEnvValue("VCAP_SERVICES")) + .thenReturn(getServicesPayload( + getRabbitServicePayloadNoLabelNoTagsSecure("rabbit-1", hostname, port, username, password, "q-1", "vhost1"), + getRabbitServicePayloadNoLabelNoTagsSecure("rabbit-2", hostname, port, username, password, "q-2", "vhost2"))); + + List serviceInfos = testCloudConnector.getServiceInfos(); + assertServiceFoundOfType(serviceInfos, "rabbit-1", AmqpServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "rabbit-2", AmqpServiceInfo.class); } private String getRabbitServicePayloadWithoutTags(String serviceName, @@ -66,6 +78,14 @@ public class CloudFoundryConnectorAmqpServiceTest extends AbstractCloudFoundryCo hostname, port, user, password, name, vHost); } + private String getRabbitServicePayloadNoLabelNoTagsSecure(String serviceName, + String hostname, int port, + String user, String password, String name, + String vHost) { + return getRabbitServicePayload("test-rabbit-info-no-label-no-tags-secure.json", serviceName, + hostname, port, user, password, name, vHost); + } + private String getRabbitServicePayloadWithTags(String serviceName, String hostname, int port, String user, String password, String name, diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMongodbServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMongodbServiceTest.java index b28987c..1b13919 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMongodbServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMongodbServiceTest.java @@ -1,68 +1,66 @@ package org.springframework.cloud.cloudfoundry; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.MongoServiceInfo; /** - * * @author Ramnivas Laddad - * */ public class CloudFoundryConnectorMongodbServiceTest extends AbstractCloudFoundryConnectorTest { @Test public void mongoServiceCreation() { when(mockEnvironment.getEnvValue("VCAP_SERVICES")) - .thenReturn(getServicesPayload( - getMongoServicePayload("mongo-1", hostname, port, username, password, "inventory-1", "db"), - getMongoServicePayload("mongo-2", hostname, port, username, password, "inventory-2", "db"))); + .thenReturn(getServicesPayload( + getMongoServicePayload("mongo-1", hostname, port, username, password, "inventory-1", "db"), + getMongoServicePayload("mongo-2", hostname, port, username, password, "inventory-2", "db"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "mongo-1")); - assertNotNull(getServiceInfo(serviceInfos, "mongo-2")); + assertServiceFoundOfType(serviceInfos, "mongo-1", MongoServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "mongo-2", MongoServiceInfo.class); } - @Test - public void mongoServiceCreationNoLabelNoTags() { + @Test + public void mongoServiceCreationNoLabelNoTags() { when(mockEnvironment.getEnvValue("VCAP_SERVICES")) - .thenReturn(getServicesPayload( - getMongoServicePayloadNoLabelNoTags("mongo-1", hostname, port, username, password, "inventory-1", "db"), - getMongoServicePayloadNoLabelNoTags("mongo-2", hostname, port, username, password, "inventory-2", "db"))); + .thenReturn(getServicesPayload( + getMongoServicePayloadNoLabelNoTags("mongo-1", hostname, port, username, password, "inventory-1", "db"), + getMongoServicePayloadNoLabelNoTags("mongo-2", hostname, port, username, password, "inventory-2", "db"))); + + List serviceInfos = testCloudConnector.getServiceInfos(); + assertServiceFoundOfType(serviceInfos, "mongo-1", MongoServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "mongo-2", MongoServiceInfo.class); + } - List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "mongo-1")); - assertNotNull(getServiceInfo(serviceInfos, "mongo-2")); - } - private String getMongoServicePayload(String serviceName, String hostname, int port, String username, String password, String db, String name) { - return getMongoServicePayload("test-mongodb-info.json", - serviceName, hostname, port, username, password, db, name); + return getMongoServicePayload("test-mongodb-info.json", + serviceName, hostname, port, username, password, db, name); } - private String getMongoServicePayloadNoLabelNoTags(String serviceName, - String hostname, int port, - String username, String password, String db, String name) { - return getMongoServicePayload("test-mongodb-info-no-label-no-tags.json", - serviceName, hostname, port, username, password, db, name); - } + private String getMongoServicePayloadNoLabelNoTags(String serviceName, + String hostname, int port, + String username, String password, String db, String name) { + return getMongoServicePayload("test-mongodb-info-no-label-no-tags.json", + serviceName, hostname, port, username, password, db, name); + } - private String getMongoServicePayload(String payloadFile, String serviceName, - String hostname, int port, - String username, String password, String db, String name) { - String payload = readTestDataFile(payloadFile); - payload = payload.replace("$serviceName", serviceName); - payload = payload.replace("$hostname", hostname); - payload = payload.replace("$port", Integer.toString(port)); - payload = payload.replace("$username", username); - payload = payload.replace("$password", password); - payload = payload.replace("$db", db); - payload = payload.replace("$name", name); - - return payload; - } + private String getMongoServicePayload(String payloadFile, String serviceName, + String hostname, int port, + String username, String password, String db, String name) { + String payload = readTestDataFile(payloadFile); + payload = payload.replace("$serviceName", serviceName); + payload = payload.replace("$hostname", hostname); + payload = payload.replace("$port", Integer.toString(port)); + payload = payload.replace("$username", username); + payload = payload.replace("$password", password); + payload = payload.replace("$db", db); + payload = payload.replace("$name", name); + + return payload; + } } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMonitoringServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMonitoringServiceTest.java index 4962782..b0e8999 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMonitoringServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMonitoringServiceTest.java @@ -1,12 +1,12 @@ package org.springframework.cloud.cloudfoundry; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.MonitoringServiceInfo; /** * @@ -21,7 +21,7 @@ public class CloudFoundryConnectorMonitoringServiceTest extends AbstractCloudFou .thenReturn(getServicesPayload(getMonitoringServicePayload("monitoring-1"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "monitoring-1")); + assertServiceFoundOfType(serviceInfos, "monitoring-1", MonitoringServiceInfo.class); } private String getMonitoringServicePayload(String serviceName) { diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java index 34cfd5c..a622097 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java @@ -1,7 +1,6 @@ package org.springframework.cloud.cloudfoundry; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; @@ -28,8 +27,9 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1"); MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2"); - assertNotNull(info1); - assertNotNull(info2); + + assertServiceFoundOfType(info1, MysqlServiceInfo.class); + assertServiceFoundOfType(info2, MysqlServiceInfo.class); assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl()); } @@ -46,8 +46,8 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1"); MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2"); - assertNotNull(info1); - assertNotNull(info2); + assertServiceFoundOfType(info1, MysqlServiceInfo.class); + assertServiceFoundOfType(info2, MysqlServiceInfo.class); assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl()); } @@ -64,8 +64,8 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1"); MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2"); - assertNotNull(info1); - assertNotNull(info2); + assertServiceFoundOfType(info1, MysqlServiceInfo.class); + assertServiceFoundOfType(info2, MysqlServiceInfo.class); assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl()); } @@ -82,8 +82,8 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1"); MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2"); - assertNotNull(info1); - assertNotNull(info2); + assertServiceFoundOfType(info1, MysqlServiceInfo.class); + assertServiceFoundOfType(info2, MysqlServiceInfo.class); assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl()); } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorOracleServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorOracleServiceTest.java index d11ecf0..7a23916 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorOracleServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorOracleServiceTest.java @@ -27,7 +27,7 @@ public class CloudFoundryConnectorOracleServiceTest extends AbstractUserProvided List serviceInfos = testCloudConnector.getServiceInfos(); OracleServiceInfo info = (OracleServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME); - assertNotNull(info); + assertServiceFoundOfType(info, OracleServiceInfo.class); assertEquals(getOracleJdbcUrl(INSTANCE_NAME), info.getJdbcUrl()); } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java index 939fe5d..428b6b3 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java @@ -1,7 +1,6 @@ package org.springframework.cloud.cloudfoundry; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; @@ -27,8 +26,9 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou List serviceInfos = testCloudConnector.getServiceInfos(); PostgresqlServiceInfo info1 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-1"); PostgresqlServiceInfo info2 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-2"); - assertNotNull(info1); - assertNotNull(info2); + + assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); + assertServiceFoundOfType(info2, PostgresqlServiceInfo.class); assertEquals(getJdbcUrl("postgres", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("postgres", name2), info2.getJdbcUrl()); } @@ -45,8 +45,9 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou List serviceInfos = testCloudConnector.getServiceInfos(); PostgresqlServiceInfo info1 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-1"); PostgresqlServiceInfo info2 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-2"); - assertNotNull(info1); - assertNotNull(info2); + + assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); + assertServiceFoundOfType(info2, PostgresqlServiceInfo.class); assertEquals(getJdbcUrl("postgres", name1), info1.getJdbcUrl()); assertEquals(getJdbcUrl("postgres", name2), info2.getJdbcUrl()); } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorRedisServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorRedisServiceTest.java index de2e8e1..1be5666 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorRedisServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorRedisServiceTest.java @@ -1,12 +1,12 @@ package org.springframework.cloud.cloudfoundry; -import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.RedisServiceInfo; /** * @@ -22,8 +22,8 @@ public class CloudFoundryConnectorRedisServiceTest extends AbstractCloudFoundryC getRedisServicePayload("redis-2", hostname, port, password, "redis-db"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "redis-1")); - assertNotNull(getServiceInfo(serviceInfos, "redis-2")); + assertServiceFoundOfType(serviceInfos, "redis-1", RedisServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "redis-2", RedisServiceInfo.class); } @Test @@ -34,8 +34,8 @@ public class CloudFoundryConnectorRedisServiceTest extends AbstractCloudFoundryC getRedisServicePayloadNoLabelNoTags("redis-2", hostname, port, password, "redis-db"))); List serviceInfos = testCloudConnector.getServiceInfos(); - assertNotNull(getServiceInfo(serviceInfos, "redis-1")); - assertNotNull(getServiceInfo(serviceInfos, "redis-2")); + assertServiceFoundOfType(serviceInfos, "redis-1", RedisServiceInfo.class); + assertServiceFoundOfType(serviceInfos, "redis-2", RedisServiceInfo.class); } private String getRedisServicePayload(String serviceName, diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorSmtpServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorSmtpServiceTest.java index 261a540..346c7bc 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorSmtpServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorSmtpServiceTest.java @@ -28,7 +28,7 @@ public class CloudFoundryConnectorSmtpServiceTest extends AbstractCloudFoundryCo assertEquals(hostname, smptServiceInfo.getHost()); assertEquals(587, smptServiceInfo.getPort()); assertEquals(username, smptServiceInfo.getUserName()); - assertEquals(password, smptServiceInfo.getPassword()); + assertEquals(password, smptServiceInfo.getPassword()); } private String getSmtpServicePayload(String serviceName, String hostname, diff --git a/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-rabbit-info-no-label-no-tags-secure.json b/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-rabbit-info-no-label-no-tags-secure.json new file mode 100644 index 0000000..8b2742b --- /dev/null +++ b/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-rabbit-info-no-label-no-tags-secure.json @@ -0,0 +1,6 @@ +{ + "name":"$serviceName", + "credentials":{ + "uri": "amqps://$username:$password@$hostname/$virtualHost" + } +} diff --git a/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-ups-info-no-uri.json b/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-ups-info-no-uri.json index e868710..e27a0b2 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-ups-info-no-uri.json +++ b/spring-cloud-cloudfoundry-connector/src/test/resources/org/springframework/cloud/cloudfoundry/test-ups-info-no-uri.json @@ -7,6 +7,7 @@ "port": "$port", "username": "$user", "password": "$password", - "name": "$name" + "name": "$name", + "integer": 123 } } \ No newline at end of file diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/UriBasedServiceInfoCreator.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/UriBasedServiceInfoCreator.java index a76ab3b..9741b1f 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/UriBasedServiceInfoCreator.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/UriBasedServiceInfoCreator.java @@ -2,24 +2,30 @@ package org.springframework.cloud.service; import org.springframework.cloud.ServiceInfoCreator; -public abstract class UriBasedServiceInfoCreator implements - ServiceInfoCreator { +public abstract class UriBasedServiceInfoCreator + implements ServiceInfoCreator { - private final String uriScheme; + private final String[] uriSchemes; - public UriBasedServiceInfoCreator(String uriScheme) { - this.uriScheme = uriScheme; - } + public UriBasedServiceInfoCreator(String... uriSchemes) { + this.uriSchemes = uriSchemes; + } - @Override - public boolean accept(UriBasedServiceData serviceData) { - return serviceData.getUri().toString().startsWith(uriScheme + "://"); - } + @Override + public boolean accept(UriBasedServiceData serviceData) { + String uriString = serviceData.getUri(); + for (String uriScheme : uriSchemes) { + if (uriString.startsWith(uriScheme + "://")) { + return true; + } + } + return false; + } - public abstract SI createServiceInfo(String id, String uri); + public abstract SI createServiceInfo(String id, String uri); - @Override - public SI createServiceInfo(UriBasedServiceData serviceData) { - return createServiceInfo(serviceData.getKey(), serviceData.getUri()); - } + @Override + public SI createServiceInfo(UriBasedServiceData serviceData) { + return createServiceInfo(serviceData.getKey(), serviceData.getUri()); + } } diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/AmqpServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/AmqpServiceInfo.java index 23982c2..75acd5e 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/AmqpServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/AmqpServiceInfo.java @@ -9,18 +9,20 @@ import org.springframework.cloud.util.UriInfo; * Information to access RabbitMQ service. * * @author Ramnivas Laddad + * @author Scott Frederick * */ @ServiceLabel("rabbitmq") public class AmqpServiceInfo extends UriBasedServiceInfo { - public static final String URI_SCHEME = "amqp"; + public static final String AMQP_SCHEME = "amqp"; + public static final String AMQPS_SCHEME = "amqps"; public AmqpServiceInfo(String id, String host, int port, String username, String password, String virtualHost) { - super(id, URI_SCHEME, host, port, username, password, virtualHost); + super(id, AMQP_SCHEME, host, port, username, password, virtualHost); } - public AmqpServiceInfo(String id, String uri) throws CloudException { + public AmqpServiceInfo(String id, String uri) throws CloudException { super(id, uri); } @@ -32,36 +34,27 @@ public class AmqpServiceInfo extends UriBasedServiceInfo { @Override protected UriInfo validateAndCleanUriInfo(UriInfo uriInfo) { if (uriInfo.getScheme() == null) { - throw new IllegalArgumentException("missing scheme in amqp URI: " + uriInfo); + throw new IllegalArgumentException("Missing scheme in amqp URI: " + uriInfo); } if (uriInfo.getHost() == null) { - throw new IllegalArgumentException("missing authority in amqp URI: " + uriInfo); + throw new IllegalArgumentException("Missing authority in amqp URI: " + uriInfo); } - int port = uriInfo.getPort(); - if (port == -1) { - port = 5672; - } - - String userName = uriInfo.getUserName(); - String password = uriInfo.getPassword(); - - if (userName == null || password == null) { - throw new IllegalArgumentException("missing userinfo in amqp URI: " + uriInfo); + if (uriInfo.getUserName() == null || uriInfo.getPassword() == null) { + throw new IllegalArgumentException("Missing userinfo in amqp URI: " + uriInfo); } String path = uriInfo.getPath(); if (path == null) { - // The RabbitMQ default vhost - path = "/"; + throw new IllegalArgumentException("Missing virtual host in amqp URI: " + uriInfo); } else { // Check that the path only has a single segment. As we have an authority component // in the URI, paths always begin with a slash. if (path.indexOf('/') != -1) { - throw new IllegalArgumentException("multiple segments in path of amqp URI: " + uriInfo); + throw new IllegalArgumentException("Multiple segments in path of amqp URI: " + uriInfo); } } - return new UriInfo(uriInfo.getScheme(), uriInfo.getHost(), port, uriInfo.getUserName(), uriInfo.getPassword(), path); + return uriInfo; } } diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MongoServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MongoServiceInfo.java index a332b65..7bc4369 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MongoServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MongoServiceInfo.java @@ -11,10 +11,10 @@ import org.springframework.cloud.service.ServiceInfo.ServiceLabel; @ServiceLabel("mongo") public class MongoServiceInfo extends UriBasedServiceInfo { - public static final String URI_SCHEME = "mongodb"; + public static final String MONGODB_SCHEME = "mongodb"; public MongoServiceInfo(String id, String host, int port, String username, String password, String db) { - super(id, URI_SCHEME, host, port, username, password, db); + super(id, MONGODB_SCHEME, host, port, username, password, db); } public MongoServiceInfo(String id, String uri) { diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MysqlServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MysqlServiceInfo.java index f4609eb..289d503 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MysqlServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/MysqlServiceInfo.java @@ -10,11 +10,11 @@ import org.springframework.cloud.service.ServiceInfo.ServiceLabel; @ServiceLabel("mysql") public class MysqlServiceInfo extends RelationalServiceInfo { - public static final String JDBC_URL_TYPE = "mysql"; + private static final String JDBC_URL_TYPE = "mysql"; - public static final String URI_SCHEME = JDBC_URL_TYPE; + public static final String MYSQL_SCHEME = JDBC_URL_TYPE; public MysqlServiceInfo(String id, String url) { - super(id, url, URI_SCHEME); + super(id, url, MYSQL_SCHEME); } } diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/OracleServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/OracleServiceInfo.java index 6d2289d..a73d107 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/OracleServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/OracleServiceInfo.java @@ -5,9 +5,9 @@ import org.springframework.cloud.service.ServiceInfo; @ServiceInfo.ServiceLabel("oracle") public class OracleServiceInfo extends RelationalServiceInfo { - public static final String JDBC_URL_TYPE = "oracle"; + private static final String JDBC_URL_TYPE = "oracle"; - public static final String URI_SCHEME = JDBC_URL_TYPE; + public static final String ORACLE_SCHEME = JDBC_URL_TYPE; public OracleServiceInfo(String id, String url) { super(id, url, JDBC_URL_TYPE); diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/PostgresqlServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/PostgresqlServiceInfo.java index edcace5..ed168ca 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/PostgresqlServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/PostgresqlServiceInfo.java @@ -11,9 +11,9 @@ import org.springframework.cloud.service.ServiceInfo.ServiceLabel; @ServiceLabel("postgresql") public class PostgresqlServiceInfo extends RelationalServiceInfo { - public static final String JDBC_URL_TYPE = "postgresql"; + private static final String JDBC_URL_TYPE = "postgresql"; - public static final String URI_SCHEME = "postgres"; + public static final String POSTGRES_SCHEME = "postgres"; public PostgresqlServiceInfo(String id, String url) { super(id, url, JDBC_URL_TYPE); diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/RedisServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/RedisServiceInfo.java index ab35a8e..485e300 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/RedisServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/RedisServiceInfo.java @@ -11,10 +11,10 @@ import org.springframework.cloud.service.ServiceInfo.ServiceLabel; @ServiceLabel("redis") public class RedisServiceInfo extends UriBasedServiceInfo { - public static final String URI_SCHEME = "redis"; + public static final String REDIS_SCHEME = "redis"; public RedisServiceInfo(String id, String host, int port, String password) { - super(id, URI_SCHEME, host, port, null, password, null); + super(id, REDIS_SCHEME, host, port, null, password, null); } public RedisServiceInfo(String id, String uri) { diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/SmtpServiceInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/SmtpServiceInfo.java index f973626..52ca165 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/SmtpServiceInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/service/common/SmtpServiceInfo.java @@ -4,10 +4,10 @@ import org.springframework.cloud.service.UriBasedServiceInfo; public class SmtpServiceInfo extends UriBasedServiceInfo { - public static final String URI_SCHEME = "smtp"; + public static final String SMTP_SCHEME = "smtp"; public SmtpServiceInfo(String id, String host, int port, String username, String password) { - super(id, URI_SCHEME, host, port, username, password, ""); + super(id, SMTP_SCHEME, host, port, username, password, ""); } public SmtpServiceInfo(String id, String url) { diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/AmqpServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/AmqpServiceInfoCreator.java index 86621f8..303639e 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/AmqpServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/AmqpServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.AmqpServiceInfo; public class AmqpServiceInfoCreator extends HerokuServiceInfoCreator { public AmqpServiceInfoCreator() { - super(AmqpServiceInfo.URI_SCHEME); + super(AmqpServiceInfo.AMQP_SCHEME, AmqpServiceInfo.AMQPS_SCHEME); } @Override diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/HerokuServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/HerokuServiceInfoCreator.java index 81094eb..20c65c8 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/HerokuServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/HerokuServiceInfoCreator.java @@ -10,8 +10,8 @@ import org.springframework.cloud.service.UriBasedServiceInfoCreator; */ public abstract class HerokuServiceInfoCreator extends UriBasedServiceInfoCreator { - public HerokuServiceInfoCreator(String uriScheme) { - super(uriScheme); + public HerokuServiceInfoCreator(String... uriSchemes) { + super(uriSchemes); } /** diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MongoServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MongoServiceInfoCreator.java index d75299e..8694216 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MongoServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MongoServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.MongoServiceInfo; public class MongoServiceInfoCreator extends HerokuServiceInfoCreator { public MongoServiceInfoCreator() { - super(MongoServiceInfo.URI_SCHEME); + super(MongoServiceInfo.MONGODB_SCHEME); } @Override diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MysqlServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MysqlServiceInfoCreator.java index 73bb8eb..19646bb 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MysqlServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/MysqlServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.MysqlServiceInfo; public class MysqlServiceInfoCreator extends RelationalServiceInfoCreator { public MysqlServiceInfoCreator() { - super(MysqlServiceInfo.URI_SCHEME); + super(MysqlServiceInfo.MYSQL_SCHEME); } @Override diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/PostgresqlServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/PostgresqlServiceInfoCreator.java index 70f47de..837f0fe 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/PostgresqlServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/PostgresqlServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.PostgresqlServiceInfo; public class PostgresqlServiceInfoCreator extends RelationalServiceInfoCreator { public PostgresqlServiceInfoCreator() { - super(PostgresqlServiceInfo.URI_SCHEME); + super(PostgresqlServiceInfo.POSTGRES_SCHEME); } @Override diff --git a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/RedisServiceInfoCreator.java b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/RedisServiceInfoCreator.java index 1757bd7..1f4bd51 100644 --- a/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/RedisServiceInfoCreator.java +++ b/spring-cloud-heroku-connector/src/main/java/org/springframework/cloud/heroku/RedisServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.RedisServiceInfo; public class RedisServiceInfoCreator extends HerokuServiceInfoCreator { public RedisServiceInfoCreator() { - super(RedisServiceInfo.URI_SCHEME); + super(RedisServiceInfo.REDIS_SCHEME); } @Override diff --git a/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorMysqlServiceTest.java b/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorMysqlServiceTest.java index 439a854..c8c94ed 100644 --- a/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorMysqlServiceTest.java +++ b/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorMysqlServiceTest.java @@ -19,7 +19,7 @@ import org.springframework.cloud.service.common.MysqlServiceInfo; */ public class HerokuConnectorMysqlServiceTest extends AbstractHerokuConnectorRelationalServiceTest { public HerokuConnectorMysqlServiceTest() { - super(MysqlServiceInfo.URI_SCHEME); + super(MysqlServiceInfo.MYSQL_SCHEME); } @Test diff --git a/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorPostgresqlServiceTest.java b/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorPostgresqlServiceTest.java index 52d7398..2e03a14 100644 --- a/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorPostgresqlServiceTest.java +++ b/spring-cloud-heroku-connector/src/test/java/org/springframework/cloud/heroku/HerokuConnectorPostgresqlServiceTest.java @@ -19,7 +19,7 @@ import org.springframework.cloud.service.common.PostgresqlServiceInfo; */ public class HerokuConnectorPostgresqlServiceTest extends AbstractHerokuConnectorRelationalServiceTest { public HerokuConnectorPostgresqlServiceTest() { - super(PostgresqlServiceInfo.URI_SCHEME); + super(PostgresqlServiceInfo.POSTGRES_SCHEME); } @Test diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/AmqpServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/AmqpServiceInfoCreator.java index b9dc631..3ce1495 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/AmqpServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/AmqpServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.AmqpServiceInfo; public class AmqpServiceInfoCreator extends LocalConfigServiceInfoCreator{ public AmqpServiceInfoCreator() { - super(AmqpServiceInfo.URI_SCHEME); + super(AmqpServiceInfo.AMQP_SCHEME, AmqpServiceInfo.AMQPS_SCHEME); } @Override diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigServiceInfoCreator.java index 98a8669..184ca46 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigServiceInfoCreator.java @@ -5,7 +5,7 @@ import org.springframework.cloud.service.UriBasedServiceInfoCreator; public abstract class LocalConfigServiceInfoCreator extends UriBasedServiceInfoCreator { - protected LocalConfigServiceInfoCreator(String uriScheme) { - super(uriScheme); + protected LocalConfigServiceInfoCreator(String... uriSchemes) { + super(uriSchemes); } } diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MongoServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MongoServiceInfoCreator.java index 68671ac..411443d 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MongoServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MongoServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.MongoServiceInfo; public class MongoServiceInfoCreator extends LocalConfigServiceInfoCreator{ public MongoServiceInfoCreator() { - super(MongoServiceInfo.URI_SCHEME); + super(MongoServiceInfo.MONGODB_SCHEME); } @Override diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MysqlServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MysqlServiceInfoCreator.java index 0d39262..4978a15 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MysqlServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/MysqlServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.MysqlServiceInfo; public class MysqlServiceInfoCreator extends LocalConfigServiceInfoCreator{ public MysqlServiceInfoCreator() { - super(MysqlServiceInfo.URI_SCHEME); + super(MysqlServiceInfo.MYSQL_SCHEME); } @Override diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/PostgresqlServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/PostgresqlServiceInfoCreator.java index 282da2f..7192404 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/PostgresqlServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/PostgresqlServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.PostgresqlServiceInfo; public class PostgresqlServiceInfoCreator extends LocalConfigServiceInfoCreator{ public PostgresqlServiceInfoCreator() { - super(PostgresqlServiceInfo.URI_SCHEME); + super(PostgresqlServiceInfo.POSTGRES_SCHEME); } @Override diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/RedisServiceInfoCreator.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/RedisServiceInfoCreator.java index 7a9e06f..cef97a2 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/RedisServiceInfoCreator.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/RedisServiceInfoCreator.java @@ -10,7 +10,7 @@ import org.springframework.cloud.service.common.RedisServiceInfo; public class RedisServiceInfoCreator extends LocalConfigServiceInfoCreator{ public RedisServiceInfoCreator() { - super(RedisServiceInfo.URI_SCHEME); + super(RedisServiceInfo.REDIS_SCHEME); } @Override diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/rabbit/RabbitServiceInfoTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/rabbit/RabbitServiceInfoTest.java index 7a3cdbf..e106c4a 100644 --- a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/rabbit/RabbitServiceInfoTest.java +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/rabbit/RabbitServiceInfoTest.java @@ -13,7 +13,7 @@ import org.springframework.cloud.service.common.AmqpServiceInfo; public class RabbitServiceInfoTest { @Test public void uriBasedParsing() { - AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost:12345/myvhost"); + AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost:12345/myvhost"); assertEquals("myhost", serviceInfo.getHost()); assertEquals(12345, serviceInfo.getPort()); @@ -27,6 +27,7 @@ public class RabbitServiceInfoTest { new AmqpServiceInfo("id", "://myuser:mypass@:12345/myvhost"); } + @Test public void amqpsSchemeAccepted() { AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqps://myuser:mypass@myhost:12345/myvhost"); assertEquals("amqps", serviceInfo.getScheme()); @@ -37,12 +38,6 @@ public class RabbitServiceInfoTest { new AmqpServiceInfo("id", "amqp://myuser:mypass@:12345/myvhost"); } - @Test - public void missingPort() { - AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost/myvhost"); - assertEquals(5672, serviceInfo.getPort()); // the default port is 5672 - } - @Test(expected=IllegalArgumentException.class) public void badUserInfo() { new AmqpServiceInfo("id", "amqp://myuser@myhost/myvhost"); @@ -53,10 +48,9 @@ public class RabbitServiceInfoTest { new AmqpServiceInfo("id", "amqp://myhost:12345/myvhost"); } - @Test + @Test(expected=IllegalArgumentException.class) public void missingVirtualHost() { - AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost:12345"); - assertEquals("/", serviceInfo.getVirtualHost()); + new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost:12345"); } @Test(expected=IllegalArgumentException.class)