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