Skip to content

Commit 0aeadb7

Browse files
committed
improve error msg obscure when connect url port miss
1 parent 920aa06 commit 0aeadb7

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

src/main/java/org/influxdb/InfluxDBFactory.java

+8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import okhttp3.OkHttpClient;
77
import org.influxdb.impl.Preconditions;
88

9+
import java.net.URL;
10+
import java.net.MalformedURLException;
911
import java.util.Objects;
1012

1113

@@ -27,6 +29,7 @@ public enum InfluxDBFactory {
2729
*/
2830
public static InfluxDB connect(final String url) {
2931
Preconditions.checkNonEmptyString(url, "url");
32+
Preconditions.checkHasPort(url);
3033
return new InfluxDBImpl(url, null, null, new OkHttpClient.Builder());
3134
}
3235

@@ -44,6 +47,7 @@ public static InfluxDB connect(final String url) {
4447
*/
4548
public static InfluxDB connect(final String url, final String username, final String password) {
4649
Preconditions.checkNonEmptyString(url, "url");
50+
Preconditions.checkHasPort(url);
4751
Preconditions.checkNonEmptyString(username, "username");
4852
return new InfluxDBImpl(url, username, password, new OkHttpClient.Builder());
4953
}
@@ -59,6 +63,7 @@ public static InfluxDB connect(final String url, final String username, final St
5963
*/
6064
public static InfluxDB connect(final String url, final OkHttpClient.Builder client) {
6165
Preconditions.checkNonEmptyString(url, "url");
66+
Preconditions.checkHasPort(url);
6267
Objects.requireNonNull(client, "client");
6368
return new InfluxDBImpl(url, null, null, client);
6469
}
@@ -79,6 +84,7 @@ public static InfluxDB connect(final String url, final OkHttpClient.Builder clie
7984
*/
8085
public static InfluxDB connect(final String url, final String username, final String password,
8186
final OkHttpClient.Builder client) {
87+
Preconditions.checkHasPort(url);
8288
return connect(url, username, password, client, ResponseFormat.JSON);
8389
}
8490

@@ -101,8 +107,10 @@ public static InfluxDB connect(final String url, final String username, final St
101107
public static InfluxDB connect(final String url, final String username, final String password,
102108
final OkHttpClient.Builder client, final ResponseFormat responseFormat) {
103109
Preconditions.checkNonEmptyString(url, "url");
110+
Preconditions.checkHasPort(url);
104111
Preconditions.checkNonEmptyString(username, "username");
105112
Objects.requireNonNull(client, "client");
106113
return new InfluxDBImpl(url, username, password, client, responseFormat);
107114
}
115+
108116
}

src/main/java/org/influxdb/impl/Preconditions.java

+23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.influxdb.impl;
22

3+
import java.net.URL;
4+
import java.net.MalformedURLException;
5+
36
/**
47
* Functions for parameter validation.
58
*
@@ -59,4 +62,24 @@ public static void checkDuration(final String duration, final String name) throw
5962
+ " for " + name);
6063
}
6164
}
65+
66+
/**
67+
* Check url is legal
68+
* @param url the server url
69+
* @throws IllegalArgumentException if the port of url is miss
70+
*/
71+
public static void checkHasPort(final String url) throws IllegalArgumentException{
72+
String colon = ":";
73+
if (!url.contains(colon) || url.endsWith(colon)) {
74+
throw new IllegalArgumentException(String.format("The url [%s] port cannot be null", url));
75+
}
76+
try {
77+
URL urlObj = new URL(url);
78+
if (-1 == urlObj.getPort()) {
79+
throw new IllegalArgumentException(String.format("The url [%s] port cannot be null", url));
80+
}
81+
} catch (MalformedURLException e) {
82+
throw new RuntimeException(e);
83+
}
84+
}
6285
}

src/test/java/org/influxdb/InfluxDBFactoryTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,16 @@ public void testShouldThrowIllegalArgumentWithInvalidUrl() {
5454
InfluxDBFactory.connect("invalidUrl");
5555
});
5656
}
57+
58+
@Test
59+
public void testUrlNotContainsColon() {
60+
Assertions.assertThrows(IllegalArgumentException.class, () ->
61+
InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP()));
62+
}
63+
64+
@Test
65+
public void testUrlEndWithColon() {
66+
Assertions.assertThrows(IllegalArgumentException.class, () ->
67+
InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP() + ":"));
68+
}
5769
}

0 commit comments

Comments
 (0)