Michael Blow has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/2546
Change subject: [ASTERIXDB-1424][RT] IPv6 Support ...................................................................... [ASTERIXDB-1424][RT] IPv6 Support Incremental progress towards IPv6 functionality Change-Id: I6fdb97b89529632a47ecab12fb4c62c2ec7082e5 --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java M hyracks-fullstack/hyracks/hyracks-util/pom.xml M hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java M hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java M hyracks-fullstack/pom.xml 5 files changed, 83 insertions(+), 7 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/46/2546/1 diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java index 8dd4290..6b632a1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java @@ -18,6 +18,8 @@ */ package org.apache.asterix.api.http.server; +import static org.apache.hyracks.util.NetworkUtil.toHostPort; + import java.io.IOException; import java.io.PrintWriter; import java.net.InetSocketAddress; @@ -131,8 +133,7 @@ ArrayNode replicasArray = OBJECT_MAPPER.createArrayNode(); for (IPartitionReplica replica : replicas) { final ObjectNode replicaJson = OBJECT_MAPPER.createObjectNode(); - final InetSocketAddress location = replica.getIdentifier().getLocation(); - replicaJson.put("location", location.getHostString() + ":" + location.getPort()); + replicaJson.put("location", toHostPort(replica.getIdentifier().getLocation())); replicaJson.put("status", replica.getStatus().toString()); replicasArray.add(replicaJson); } diff --git a/hyracks-fullstack/hyracks/hyracks-util/pom.xml b/hyracks-fullstack/hyracks/hyracks-util/pom.xml index 212673e..ff5f622 100644 --- a/hyracks-fullstack/hyracks/hyracks-util/pom.xml +++ b/hyracks-fullstack/hyracks/hyracks-util/pom.xml @@ -79,10 +79,22 @@ <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-text</artifactId> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + </dependency> </dependencies> </project> diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java index f9f45c1..93827e6 100644 --- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java +++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java @@ -19,9 +19,15 @@ package org.apache.hyracks.util; import java.io.IOException; +import java.net.InetSocketAddress; import java.net.StandardSocketOptions; +import java.net.URI; +import java.net.URISyntaxException; import java.nio.channels.SocketChannel; +import org.apache.http.HttpHost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.conn.util.InetAddressUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -46,4 +52,56 @@ } } } + + public static URI toUri(HttpHost host) throws URISyntaxException { + return builderFrom(host).build(); + } + + public static URI toUri(HttpHost host, String path) throws URISyntaxException { + return builderFrom(host).setPath(path).build(); + } + + public static URIBuilder builderFrom(HttpHost host) { + return new URIBuilder().setHost(host.getHostName()).setPort(host.getPort()).setScheme(host.getSchemeName()); + } + + public static String toHostPort(String host, String port) { + if (InetAddressUtils.isIPv6Address(host)) { + return "[" + host + "]:" + port; + } else { + return host + ":" + port; + } + } + + public static String toHostPort(String host, int port) { + if (InetAddressUtils.isIPv6Address(host)) { + return "[" + host + "]:" + port; + } else { + return host + ":" + port; + } + } + + public static String toHostPort(InetSocketAddress address) { + return toHostPort(address.getHostString(), address.getPort()); + } + + public static InetSocketAddress parseInetSocketAddress(String hostPortString) { + int lastColon = hostPortString.lastIndexOf(':'); + String host = decodeIPv6LiteralHost(hostPortString.substring(0, lastColon)); + int port = Integer.parseInt(hostPortString.substring(lastColon + 1)); + return new InetSocketAddress(host, port); + } + + public static String encodeIPv6LiteralHost(String hostname) { + if (InetAddressUtils.isIPv6Address(hostname)) { + return "[" + hostname + "]"; + } else { + return hostname; + } + } + + public static String decodeIPv6LiteralHost(String hostname) { + return hostname.length() > 0 && hostname.charAt(0) == '[' ? hostname.substring(1, hostname.length() - 1) + : hostname; + } } diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java index b457c79..11be0ba 100644 --- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java +++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java @@ -23,7 +23,7 @@ import java.util.regex.Pattern; import org.apache.commons.collections4.map.LRUMap; -import org.apache.commons.lang3.text.WordUtils; +import org.apache.commons.text.WordUtils; public class StringUtil { private static final Map<String, String> CAMEL_CACHE = Collections.synchronizedMap(new LRUMap<>(1024)); diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml index 393119d..a1e8c42 100644 --- a/hyracks-fullstack/pom.xml +++ b/hyracks-fullstack/pom.xml @@ -133,6 +133,11 @@ <version>2.6</version> </dependency> <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-text</artifactId> + <version>1.2</version> + </dependency> + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.4</version> -- To view, visit https://asterix-gerrit.ics.uci.edu/2546 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6fdb97b89529632a47ecab12fb4c62c2ec7082e5 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow <mb...@apache.org>