in ratis-common/src/main/java/org/apache/ratis/util/NetUtils.java [69:97]
static InetSocketAddress createSocketAddr(String target, int defaultPort) {
target = Objects.requireNonNull(target, "target == null").trim();
boolean hasScheme = target.contains("://");
if (!hasScheme && target.charAt(0) == '/') {
target = target.substring(1);
}
final URI uri;
try {
uri = new URI(hasScheme? target: "dummy://"+target);
} catch (URISyntaxException e) {
throw new IllegalArgumentException("Failed to create URI from target " + target, e);
}
final String host = uri.getHost();
int port = uri.getPort();
if (port == -1) {
port = defaultPort;
}
final String path = uri.getPath();
if (host == null) {
throw new IllegalArgumentException("Host is null in " + target);
} else if (port < 0) {
throw new IllegalArgumentException("Port = " + port + " < 0 in " + target);
} else if (!hasScheme && path != null && !path.isEmpty()) {
throw new IllegalArgumentException("Unexpected path in " + target);
}
return createSocketAddrForHost(host, port);
}