Class ConnectionConfiguration

  • Direct Known Subclasses:
    BOSHConfiguration, ModularXmppClientToServerConnectionConfiguration, XMPPTCPConnectionConfiguration

    public abstract class ConnectionConfiguration
    extends java.lang.Object
    The connection configuration used for XMPP client-to-server connections. A well configured XMPP service will typically only require you to provide two parameters: The XMPP address, also known as the JID, of the user and the password. All other configuration parameters could ideally be determined automatically by Smack. Hence it is often enough to call ConnectionConfiguration.Builder.setXmppAddressAndPassword(CharSequence, String).

    Technically there are typically at least two parameters required: Some kind of credentials for authentication. And the XMPP service domain. The credentials often consists of a username and password use for the SASL authentication. But there are also other authentication mechanisms, like client side certificates, which do not require a particular username and password.

    There are some misconceptions about XMPP client-to-server parameters: The first is that the username used for authentication will be equal to the localpart of the bound XMPP address after authentication. While this is usually true, it is not required. Technically the username used for authentication and the resulting XMPP address are completely independent from each other. The second common misconception steers from the terms "XMPP host" and "XMPP service domain": An XMPP service host is a system which hosts one or multiple XMPP domains. The "XMPP service domain" will be usually the domainpart of the bound JID. This domain is used to verify the remote endpoint, typically using TLS. This third misconception is that the XMPP service domain is required to become the domainpart of the bound JID. Again, while this is very common to be true, it is not strictly required.

    • Method Detail

      • getXmppServiceDomainAsDnsNameIfPossible

        public DnsName getXmppServiceDomainAsDnsNameIfPossible()
        Returns the XMPP service domain as DNS name if possible. Note that since not every XMPP address domainpart is a valid DNS name, this method may return null.
        Returns:
        the XMPP service domain as DNS name or null.
        Since:
        4.3.4
      • getEnabledSSLProtocols

        public java.lang.String[] getEnabledSSLProtocols()
        Return the enabled SSL/TLS protocols.
        Returns:
        the enabled SSL/TLS protocols
      • getEnabledSSLCiphers

        public java.lang.String[] getEnabledSSLCiphers()
        Return the enabled SSL/TLS ciphers.
        Returns:
        the enabled SSL/TLS ciphers
      • getCallbackHandler

        public javax.security.auth.callback.CallbackHandler getCallbackHandler()
        Returns a CallbackHandler to obtain information, such as the password or principal information during the SASL authentication. A CallbackHandler will be used ONLY if no password was specified during the login while using SASL authentication.
        Returns:
        a CallbackHandler to obtain information, such as the password or principal information during the SASL authentication.
      • getSocketFactory

        public javax.net.SocketFactory getSocketFactory()
        Returns the socket factory used to create new xmppConnection sockets. This is useful when connecting through SOCKS5 proxies.
        Returns:
        socketFactory used to create new sockets.
      • getProxyInfo

        public ProxyInfo getProxyInfo()
        Get the configured proxy information (if any).
        Returns:
        the configured proxy information or null.
      • getUsername

        public java.lang.CharSequence getUsername()
        Returns the username to use when trying to reconnect to the server.
        Returns:
        the username to use when trying to reconnect to the server.
      • getPassword

        public java.lang.String getPassword()
        Returns the password to use when trying to reconnect to the server.
        Returns:
        the password to use when trying to reconnect to the server.
      • getResource

        public Resourcepart getResource()
        Returns the resource to use when trying to reconnect to the server.
        Returns:
        the resource to use when trying to reconnect to the server.
      • getLanguage

        public java.util.Locale getLanguage()
        Returns the stream language to use when connecting to the server.
        Returns:
        the stream language to use when connecting to the server.
      • getXmlLang

        public java.lang.String getXmlLang()
        Returns the xml:lang string of the stream language to use when connecting to the server.

        If the developer sets the language to null, this will also return null, leading to the removal of the xml:lang tag from the stream. If a Locale("") is configured, this will return "", which can be used as an override.

        Returns:
        the stream language to use when connecting to the server.
      • isSendPresence

        public boolean isSendPresence()
        Returns true if an available presence should be sent when logging in while reconnecting.
        Returns:
        true if an available presence should be sent when logging in while reconnecting
      • isCompressionEnabled

        public boolean isCompressionEnabled()
        Returns true if the connection is going to use stream compression. Stream compression will be requested after TLS was established (if TLS was enabled) and only if the server offered stream compression. With stream compression network traffic can be reduced up to 90%. By default compression is disabled.
        Returns:
        true if the connection is going to use stream compression.
      • isEnabledSaslMechanism

        public boolean isEnabledSaslMechanism​(java.lang.String saslMechanism)
        Check if the given SASL mechansism is enabled in this connection configuration.
        Parameters:
        saslMechanism - TODO javadoc me please
        Returns:
        true if the given SASL mechanism is enabled, false otherwise.
      • getEnabledSaslMechanisms

        public java.util.Set<java.lang.String> getEnabledSaslMechanisms()
        Return the explicitly enabled SASL mechanisms. May return null if no SASL mechanisms where explicitly enabled, i.e. all SALS mechanisms supported and announced by the service will be considered.
        Returns:
        the enabled SASL mechanisms or null.