You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by aa...@apache.org on 2022/07/11 05:42:04 UTC

[rocketmq-clients] 02/02: Java: adapt to the endpoint format which is start with http/https

This is an automated email from the ASF dual-hosted git repository.

aaronai pushed a commit to branch java_dev
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git

commit 00fba55810d968e45c8221531cf5017f63a05779
Author: Aaron Ai <ya...@gmail.com>
AuthorDate: Mon Jul 11 13:41:22 2022 +0800

    Java: adapt to the endpoint format which is start with http/https
---
 .../rocketmq/client/java/route/Endpoints.java      | 11 +++++-
 .../rocketmq/client/java/route/EndpointsTest.java  | 46 ++++++++++++++++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/java/client/src/main/java/org/apache/rocketmq/client/java/route/Endpoints.java b/java/client/src/main/java/org/apache/rocketmq/client/java/route/Endpoints.java
index 4a4f562..4b73461 100644
--- a/java/client/src/main/java/org/apache/rocketmq/client/java/route/Endpoints.java
+++ b/java/client/src/main/java/org/apache/rocketmq/client/java/route/Endpoints.java
@@ -29,6 +29,10 @@ import java.util.regex.Pattern;
 public class Endpoints {
     public static final int DEFAULT_PORT = 80;
 
+    @SuppressWarnings("HttpUrlsUsage")
+    public static final String HTTP_PREFIX = "http://";
+    public static final String HTTPS_PREFIX = "https://";
+
     private static final Pattern IPV4_HOST_PATTERN = Pattern.compile("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0"
         + "-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])*$");
     private static final String ENDPOINT_SEPARATOR = ";";
@@ -78,7 +82,6 @@ public class Endpoints {
         this.facade = facadeBuilder.substring(0, facadeBuilder.length() - 1);
     }
 
-    @SuppressWarnings("UnstableApiUsage")
     public Endpoints(String endpoints) {
         final String[] addressesStr = endpoints.split(ENDPOINT_SEPARATOR);
         this.addresses = new ArrayList<>();
@@ -96,6 +99,12 @@ public class Endpoints {
             this.facade = scheme.getPrefix() + endpoints.replace(ENDPOINT_SEPARATOR, ADDRESS_SEPARATOR);
             return;
         }
+        if (endpoints.startsWith(HTTP_PREFIX)) {
+            endpoints = endpoints.substring(HTTP_PREFIX.length());
+        }
+        if (endpoints.startsWith(HTTPS_PREFIX)) {
+            endpoints = endpoints.substring(HTTPS_PREFIX.length());
+        }
         final int index = endpoints.lastIndexOf(COLON);
         int port = index > 0 ? Integer.parseInt(endpoints.substring(1 + index)) : DEFAULT_PORT;
         String host = index > 0 ? endpoints.substring(0, index) : endpoints;
diff --git a/java/client/src/test/java/org/apache/rocketmq/client/java/route/EndpointsTest.java b/java/client/src/test/java/org/apache/rocketmq/client/java/route/EndpointsTest.java
index c45673d..d20abc0 100644
--- a/java/client/src/test/java/org/apache/rocketmq/client/java/route/EndpointsTest.java
+++ b/java/client/src/test/java/org/apache/rocketmq/client/java/route/EndpointsTest.java
@@ -122,4 +122,50 @@ public class EndpointsTest {
         Assert.assertEquals("rocketmq.apache.org", address.getHost());
         Assert.assertEquals(8081, address.getPort());
     }
+
+    @Test
+    @SuppressWarnings("HttpUrlsUsage")
+    public void testEndpointsWithDomainAndHttpPrefix() {
+        final Endpoints endpoints = new Endpoints("http://rocketmq.apache.org");
+        Assert.assertEquals(AddressScheme.DOMAIN_NAME, endpoints.getScheme());
+        final Iterator<Address> iterator = endpoints.getAddresses().iterator();
+
+        final Address address = iterator.next();
+        Assert.assertEquals("rocketmq.apache.org", address.getHost());
+        Assert.assertEquals(80, address.getPort());
+    }
+
+    @Test
+    public void testEndpointsWithDomainAndHttpsPrefix() {
+        final Endpoints endpoints = new Endpoints("https://rocketmq.apache.org");
+        Assert.assertEquals(AddressScheme.DOMAIN_NAME, endpoints.getScheme());
+        final Iterator<Address> iterator = endpoints.getAddresses().iterator();
+
+        final Address address = iterator.next();
+        Assert.assertEquals("rocketmq.apache.org", address.getHost());
+        Assert.assertEquals(80, address.getPort());
+    }
+
+    @Test
+    @SuppressWarnings("HttpUrlsUsage")
+    public void testEndpointsWithDomainPortAndHttpPrefix() {
+        final Endpoints endpoints = new Endpoints("http://rocketmq.apache.org:8081");
+        Assert.assertEquals(AddressScheme.DOMAIN_NAME, endpoints.getScheme());
+        final Iterator<Address> iterator = endpoints.getAddresses().iterator();
+
+        final Address address = iterator.next();
+        Assert.assertEquals("rocketmq.apache.org", address.getHost());
+        Assert.assertEquals(8081, address.getPort());
+    }
+
+    @Test
+    public void testEndpointsWithDomainPortAndHttpsPrefix() {
+        final Endpoints endpoints = new Endpoints("https://rocketmq.apache.org:8081");
+        Assert.assertEquals(AddressScheme.DOMAIN_NAME, endpoints.getScheme());
+        final Iterator<Address> iterator = endpoints.getAddresses().iterator();
+
+        final Address address = iterator.next();
+        Assert.assertEquals("rocketmq.apache.org", address.getHost());
+        Assert.assertEquals(8081, address.getPort());
+    }
 }
\ No newline at end of file