diff --git a/smack-core/src/main/java/org/jivesoftware/smack/ConnectionConfiguration.java b/smack-core/src/main/java/org/jivesoftware/smack/ConnectionConfiguration.java index d14a82d46..77adc4382 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/ConnectionConfiguration.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/ConnectionConfiguration.java @@ -646,7 +646,7 @@ public abstract class ConnectionConfiguration { /** * Set the Internet address of the host providing the XMPP service. If set, then this will overwrite anything - * set via {@link #setHost(String)}. + * set via {@link #setHost(CharSequence)}. * * @param address the Internet address of the host providing the XMPP service. * @return a reference to this builder. @@ -658,16 +658,29 @@ public abstract class ConnectionConfiguration { } /** - * Set the name of the host providing the XMPP service. Note that this method does only allow DNS names and not - * IP addresses. Use {@link #setHostAddress(InetAddress)} if you want to explicitly set the Internet address of - * the host providing the XMPP service. + * Set the name of the host providing the XMPP service. This method takes DNS names and + * IP addresses. * * @param host the DNS name of the host providing the XMPP service. * @return a reference to this builder. */ - public B setHost(String host) { - DnsName hostDnsName = DnsName.from(host); - return setHost(hostDnsName); + public B setHost(CharSequence host) { + String fqdnOrIpString = host.toString(); + if (InetAddressUtil.isIpAddress(fqdnOrIpString)) { + InetAddress hostInetAddress; + try { + hostInetAddress = InetAddress.getByName(fqdnOrIpString); + } + catch (UnknownHostException e) { + // Should never happen. + throw new AssertionError(e); + } + setHostAddress(hostInetAddress); + } else { + DnsName dnsName = DnsName.from(fqdnOrIpString); + setHost(dnsName); + } + return getThis(); } /** @@ -691,23 +704,12 @@ public abstract class ConnectionConfiguration { * @see #setHost(DnsName) * @see #setHostAddress(InetAddress) * @since 4.3.2 + * @deprecated use {@link #setHost(CharSequence)} instead. */ + @Deprecated + // TODO: Remove in Smack 4.5. public B setHostAddressByNameOrIp(CharSequence fqdnOrIp) { - String fqdnOrIpString = fqdnOrIp.toString(); - if (InetAddressUtil.isIpAddress(fqdnOrIp)) { - InetAddress hostInetAddress; - try { - hostInetAddress = InetAddress.getByName(fqdnOrIpString); - } - catch (UnknownHostException e) { - // Should never happen. - throw new AssertionError(e); - } - setHostAddress(hostInetAddress); - } else { - setHost(fqdnOrIpString); - } - return getThis(); + return setHost(fqdnOrIp); } public B setPort(int port) { diff --git a/smack-core/src/test/java/org/jivesoftware/smack/ConnectionConfigurationTest.java b/smack-core/src/test/java/org/jivesoftware/smack/ConnectionConfigurationTest.java index 6637eae56..163937c07 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/ConnectionConfigurationTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/ConnectionConfigurationTest.java @@ -1,6 +1,6 @@ /** * - * Copyright 2018 Florian Schmaus. + * Copyright 2018-2019 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ public class ConnectionConfigurationTest { DummyConnectionConfiguration.Builder builder = newUnitTestBuilder(); final String ip = "192.168.0.1"; - builder.setHostAddressByNameOrIp(ip); + builder.setHost(ip); DummyConnectionConfiguration connectionConfiguration = builder.build(); assertEquals('/' + ip, connectionConfiguration.getHostAddress().toString()); @@ -39,7 +39,7 @@ public class ConnectionConfigurationTest { DummyConnectionConfiguration.Builder builder = newUnitTestBuilder(); final String fqdn = "foo.example.org"; - builder.setHostAddressByNameOrIp(fqdn); + builder.setHost(fqdn); DummyConnectionConfiguration connectionConfiguration = builder.build(); assertEquals(fqdn, connectionConfiguration.getHost().toString());