From e201bbcb6b4216d0969dca0cd9e18fcca2790a42 Mon Sep 17 00:00:00 2001 From: camilesing Date: Mon, 13 Sep 2021 10:09:17 +0800 Subject: [PATCH] improve error msg obscure when connect url port miss --- .../java/org/influxdb/InfluxDBFactory.java | 25 +++++++++++++++++++ .../org/influxdb/InfluxDBFactoryTest.java | 14 +++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/main/java/org/influxdb/InfluxDBFactory.java b/src/main/java/org/influxdb/InfluxDBFactory.java index aee28d73a..1db474fc5 100644 --- a/src/main/java/org/influxdb/InfluxDBFactory.java +++ b/src/main/java/org/influxdb/InfluxDBFactory.java @@ -6,6 +6,8 @@ import okhttp3.OkHttpClient; import org.influxdb.impl.Preconditions; +import java.net.URL; +import java.net.MalformedURLException; import java.util.Objects; @@ -27,6 +29,7 @@ public enum InfluxDBFactory { */ public static InfluxDB connect(final String url) { Preconditions.checkNonEmptyString(url, "url"); + checkUrl(url); return new InfluxDBImpl(url, null, null, new OkHttpClient.Builder()); } @@ -45,6 +48,7 @@ public static InfluxDB connect(final String url) { public static InfluxDB connect(final String url, final String username, final String password) { Preconditions.checkNonEmptyString(url, "url"); Preconditions.checkNonEmptyString(username, "username"); + checkUrl(url); return new InfluxDBImpl(url, username, password, new OkHttpClient.Builder()); } @@ -60,6 +64,7 @@ public static InfluxDB connect(final String url, final String username, final St public static InfluxDB connect(final String url, final OkHttpClient.Builder client) { Preconditions.checkNonEmptyString(url, "url"); Objects.requireNonNull(client, "client"); + checkUrl(url); return new InfluxDBImpl(url, null, null, client); } @@ -79,6 +84,7 @@ public static InfluxDB connect(final String url, final OkHttpClient.Builder clie */ public static InfluxDB connect(final String url, final String username, final String password, final OkHttpClient.Builder client) { + checkUrl(url); return connect(url, username, password, client, ResponseFormat.JSON); } @@ -103,6 +109,25 @@ public static InfluxDB connect(final String url, final String username, final St Preconditions.checkNonEmptyString(url, "url"); Preconditions.checkNonEmptyString(username, "username"); Objects.requireNonNull(client, "client"); + checkUrl(url); return new InfluxDBImpl(url, username, password, client, responseFormat); } + + /** + * Check url is legal + */ + private static void checkUrl(final String url) { + String colon = ":"; + if (!url.contains(colon) || url.endsWith(colon)) { + throw new IllegalArgumentException(String.format("The url [%s] port cannot be null", url)); + } + try { + URL urlObj = new URL(url); + if (-1 == urlObj.getPort()) { + throw new IllegalArgumentException(String.format("The url [%s] port cannot be null", url)); + } + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + } } diff --git a/src/test/java/org/influxdb/InfluxDBFactoryTest.java b/src/test/java/org/influxdb/InfluxDBFactoryTest.java index 74ebfab70..dd4e67799 100644 --- a/src/test/java/org/influxdb/InfluxDBFactoryTest.java +++ b/src/test/java/org/influxdb/InfluxDBFactoryTest.java @@ -54,4 +54,18 @@ public void testShouldThrowIllegalArgumentWithInvalidUrl() { InfluxDBFactory.connect("invalidUrl"); }); } + + @Test + public void testUrlNotContainsColon() { + Assertions.assertThrows(IllegalArgumentException.class, () -> { + InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP()); + }); + } + + @Test + public void testUrlEndWithColon() { + Assertions.assertThrows(IllegalArgumentException.class, () -> { + InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP() + ":"); + }); + } }