From fee63b39bc3f0f44a81798dba9f48c295a104570 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 14 Mar 2015 13:22:55 +0300 Subject: [PATCH] ipv6 formatting fixed. #121 --- .../java/org/redisson/ClusterServersConfig.java | 8 +++----- .../org/redisson/MasterSlaveServersConfig.java | 13 +++++-------- .../org/redisson/SentinelServersConfig.java | 8 +++----- .../java/org/redisson/SingleServerConfig.java | 8 +++----- .../connection/ClusterConnectionManager.java | 4 ++-- .../redisson/connection/ClusterNodeInfo.java | 9 ++++++--- .../redisson/connection/ClusterPartition.java | 16 +++++++++++----- .../MasterSlaveConnectionManager.java | 9 --------- src/main/java/org/redisson/misc/URIBuilder.java | 17 +++++++++++++++++ 9 files changed, 50 insertions(+), 42 deletions(-) create mode 100644 src/main/java/org/redisson/misc/URIBuilder.java diff --git a/src/main/java/org/redisson/ClusterServersConfig.java b/src/main/java/org/redisson/ClusterServersConfig.java index a3c74f20f..41bb678cb 100644 --- a/src/main/java/org/redisson/ClusterServersConfig.java +++ b/src/main/java/org/redisson/ClusterServersConfig.java @@ -20,6 +20,8 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; +import org.redisson.misc.URIBuilder; + public class ClusterServersConfig extends BaseMasterSlaveServersConfig { /** @@ -49,11 +51,7 @@ public class ClusterServersConfig extends BaseMasterSlaveServersConfig { /** @@ -48,17 +49,13 @@ public class MasterSlaveServersConfig extends BaseMasterSlaveServersConfig { private List sentinelAddresses = new ArrayList(); @@ -45,11 +47,7 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig { /** @@ -82,11 +84,7 @@ public class SingleServerConfig extends BaseConfig { * @param address */ public SingleServerConfig setAddress(String address) { - try { - this.address = new URI("//" + address); - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Can't parse " + address); - } + this.address = URIBuilder.create(address); return this; } public URI getAddress() { diff --git a/src/main/java/org/redisson/connection/ClusterConnectionManager.java b/src/main/java/org/redisson/connection/ClusterConnectionManager.java index 37952f5c8..62d12db71 100644 --- a/src/main/java/org/redisson/connection/ClusterConnectionManager.java +++ b/src/main/java/org/redisson/connection/ClusterConnectionManager.java @@ -117,8 +117,8 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { if (!newMasterPart.getMasterAddress().equals(part.getMasterAddress())) { log.debug("changing master from {} to {} for {}", part.getMasterAddress(), newMasterPart.getMasterAddress(), newMasterPart.getEndSlot()); - URI newUri = toURI(newMasterPart.getMasterAddress()); - URI oldUri = toURI(part.getMasterAddress()); + URI newUri = newMasterPart.getMasterAddress(); + URI oldUri = part.getMasterAddress(); changeMaster(newMasterPart.getEndSlot(), newUri.getHost(), newUri.getPort()); slaveDown(newMasterPart.getEndSlot(), oldUri.getHost(), oldUri.getPort()); diff --git a/src/main/java/org/redisson/connection/ClusterNodeInfo.java b/src/main/java/org/redisson/connection/ClusterNodeInfo.java index afe87b866..357e1bcad 100644 --- a/src/main/java/org/redisson/connection/ClusterNodeInfo.java +++ b/src/main/java/org/redisson/connection/ClusterNodeInfo.java @@ -15,15 +15,18 @@ */ package org.redisson.connection; +import java.net.URI; import java.util.ArrayList; import java.util.List; +import org.redisson.misc.URIBuilder; + public class ClusterNodeInfo { public enum Flag {SLAVE, MASTER, MYSELF, FAIL}; private String nodeId; - private String address; + private URI address; private List flags = new ArrayList(); private String slaveOf; @@ -37,11 +40,11 @@ public class ClusterNodeInfo { this.nodeId = nodeId; } - public String getAddress() { + public URI getAddress() { return address; } public void setAddress(String address) { - this.address = address; + this.address = URIBuilder.create(address); } public List getFlags() { diff --git a/src/main/java/org/redisson/connection/ClusterPartition.java b/src/main/java/org/redisson/connection/ClusterPartition.java index 73bbe091c..6618243dd 100644 --- a/src/main/java/org/redisson/connection/ClusterPartition.java +++ b/src/main/java/org/redisson/connection/ClusterPartition.java @@ -15,16 +15,19 @@ */ package org.redisson.connection; +import java.net.URI; import java.util.ArrayList; import java.util.List; +import org.redisson.misc.URIBuilder; + public class ClusterPartition { private int startSlot; private int endSlot; private boolean masterFail; - private String masterAddress; - private List slaveAddresses = new ArrayList(); + private URI masterAddress; + private List slaveAddresses = new ArrayList(); public void setMasterFail(boolean masterFail) { this.masterFail = masterFail; @@ -47,17 +50,20 @@ public class ClusterPartition { this.endSlot = endSlot; } - public String getMasterAddress() { + public URI getMasterAddress() { return masterAddress; } public void setMasterAddress(String masterAddress) { + setMasterAddress(URIBuilder.create(masterAddress)); + } + public void setMasterAddress(URI masterAddress) { this.masterAddress = masterAddress; } - public void addSlaveAddress(String address) { + public void addSlaveAddress(URI address) { slaveAddresses.add(address); } - public List getSlaveAddresses() { + public List getSlaveAddresses() { return slaveAddresses; } diff --git a/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index 71016decc..8940540af 100644 --- a/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -25,7 +25,6 @@ import io.netty.util.concurrent.FutureListener; import io.netty.util.concurrent.Promise; import java.net.URI; -import java.net.URISyntaxException; import java.util.Collection; import java.util.HashSet; import java.util.Map.Entry; @@ -646,14 +645,6 @@ public class MasterSlaveConnectionManager implements ConnectionManager { return getEntry(slot).nextPubSubConnection(); } - protected URI toURI(String url) { - try { - return new URI("//" + url); - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Can't parse " + url); - } - } - protected void returnSubscribeConnection(int slot, PubSubConnectionEntry entry) { this.getEntry(slot).returnSubscribeConnection(entry); } diff --git a/src/main/java/org/redisson/misc/URIBuilder.java b/src/main/java/org/redisson/misc/URIBuilder.java new file mode 100644 index 000000000..d50aa9664 --- /dev/null +++ b/src/main/java/org/redisson/misc/URIBuilder.java @@ -0,0 +1,17 @@ +package org.redisson.misc; + +import java.net.URI; + +public class URIBuilder { + + public static URI create(String uri) { + String[] parts = uri.split(":"); + if (parts.length-1 >= 3) { + String port = parts[parts.length-1]; + uri = "[" + uri.replace(":" + port, "") + "]:" + port; + } + + return URI.create("//" + uri); + } + +}