diff --git a/smack-core/src/main/java/org/jivesoftware/smack/SmackException.java b/smack-core/src/main/java/org/jivesoftware/smack/SmackException.java index d9ef9881a..38263ad44 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/SmackException.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/SmackException.java @@ -169,10 +169,22 @@ public class SmackException extends Exception { failedAddresses = new ArrayList(0); } - public ConnectionException(List failedAddresses) { + private ConnectionException(String message, List failedAddresses) { + super(message); this.failedAddresses = failedAddresses; } + public static ConnectionException from(List failedAddresses) { + StringBuilder sb = new StringBuilder("The following addresses failed: "); + for (HostAddress hostAddress : failedAddresses) { + sb.append(hostAddress.getErrorMessage()); + sb.append(", "); + } + // Remove the last whitespace + sb.deleteCharAt(sb.length()); + return new ConnectionException(sb.toString(), failedAddresses); + } + public List getFailedAddresses() { return failedAddresses; } diff --git a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java index c1b1bbe57..32ab7ca69 100644 --- a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java +++ b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java @@ -592,7 +592,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection { // There are no more host addresses to try // throw an exception and report all tried // HostAddresses in the exception - throw new ConnectionException(failedAddresses); + throw ConnectionException.from(failedAddresses); } } socketClosed = false;