From d4179cbd1d802cdf8911f276a66f10b4c71ceb08 Mon Sep 17 00:00:00 2001 From: Scott Frederick Date: Mon, 23 Oct 2017 16:03:40 -0500 Subject: [PATCH] Provide a default value for the AMQP port if not provided in the URI. --- .../CloudFoundryConnectorAmqpServiceTest.java | 1 + .../cloud/service/common/AmqpServiceInfo.java | 14 ++++++++ .../service/common/AmqpServiceInfoTest.java | 33 +++++++++++++++++++ 3 files changed, 48 insertions(+) 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 23d920c..ef540e5 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 @@ -86,6 +86,7 @@ public class CloudFoundryConnectorAmqpServiceTest extends AbstractCloudFoundryCo assertNotNull(amqpServiceInfo.getUri()); assertTrue(amqpServiceInfo.getUri().contains(hostname)); assertEquals("v/host1", amqpServiceInfo.getVirtualHost()); + assertEquals(5672, amqpServiceInfo.getPort()); assertNotNull(amqpServiceInfo.getManagementUri()); assertTrue(amqpServiceInfo.getManagementUri().contains(hostname)); 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 9f7686b..18abdb8 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 @@ -18,6 +18,8 @@ import java.util.List; */ @ServiceLabel("rabbitmq") public class AmqpServiceInfo extends UriBasedServiceInfo { + private static final Integer DEFAULT_AMQP_PORT = 5672; + private static final Integer DEFAULT_AMQPS_PORT = 5671; public static final String AMQP_SCHEME = "amqp"; public static final String AMQPS_SCHEME = "amqps"; @@ -87,6 +89,18 @@ public class AmqpServiceInfo extends UriBasedServiceInfo { return managementUris; } + @Override + public int getPort() { + if (super.getPort() == -1) { + if (getScheme().equals(AMQP_SCHEME)) { + return DEFAULT_AMQP_PORT; + } else if (getScheme().equals(AMQPS_SCHEME)) { + return DEFAULT_AMQPS_PORT; + } + } + return super.getPort(); + } + @Override protected UriInfo validateAndCleanUriInfo(UriInfo uriInfo) { if (uriInfo.getScheme() == null) { diff --git a/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/AmqpServiceInfoTest.java b/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/AmqpServiceInfoTest.java index 3f8f069..7cc7509 100644 --- a/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/AmqpServiceInfoTest.java +++ b/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/AmqpServiceInfoTest.java @@ -55,6 +55,39 @@ public class AmqpServiceInfoTest { assertEquals("myvhost", serviceInfo.getVirtualHost()); } + @Test + public void uriBasedParsingAmqpDefaultPort() { + AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost/myvhost"); + + assertEquals("myhost", serviceInfo.getHost()); + assertEquals(5672, serviceInfo.getPort()); + assertEquals("myuser", serviceInfo.getUserName()); + assertEquals("mypass", serviceInfo.getPassword()); + assertEquals("myvhost", serviceInfo.getVirtualHost()); + } + + @Test + public void uriBasedParsingAmqpsDefaultPort() { + AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqps://myuser:mypass@myhost/myvhost"); + + assertEquals("myhost", serviceInfo.getHost()); + assertEquals(5671, serviceInfo.getPort()); + assertEquals("myuser", serviceInfo.getUserName()); + assertEquals("mypass", serviceInfo.getPassword()); + assertEquals("myvhost", serviceInfo.getVirtualHost()); + } + + @Test + public void uriBasedParsingUnknownSchemeDefaultPort() { + AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqpx://myuser:mypass@myhost/myvhost"); + + assertEquals("myhost", serviceInfo.getHost()); + assertEquals(-1, serviceInfo.getPort()); + assertEquals("myuser", serviceInfo.getUserName()); + assertEquals("mypass", serviceInfo.getPassword()); + assertEquals("myvhost", serviceInfo.getVirtualHost()); + } + @Test public void uriBasedParsingEncodedVhost() { AmqpServiceInfo serviceInfo = new AmqpServiceInfo("id", "amqp://myuser:mypass@myhost:12345/my%2Fvhost");