Class ConnectionConfiguration.Builder<B extends ConnectionConfiguration.Builder<B,C>,C extends ConnectionConfiguration>
- Type Parameters:
B
- the builder type parameter.C
- the resulting connection configuration type parameter.
- Direct Known Subclasses:
BOSHConfiguration.Builder
,ModularXmppClientToServerConnectionConfiguration.Builder
,XMPPTCPConnectionConfiguration.Builder
- Enclosing class:
- ConnectionConfiguration
This is an abstract class that uses the builder design pattern and the "getThis() trick" to recover the type of the builder in a class hierarchies with a self-referential generic supertype. Otherwise chaining of build instructions from the superclasses followed by build instructions of a subclass would not be possible, because the superclass build instructions would return the builder of the superclass and not the one of the subclass. You can read more about it a Angelika Langer's Generics FAQ, especially the entry What is the "getThis()" trick?.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddEnabledSaslMechanism
(String saslMechanism) Add the given mechanism to the enabled ones.addEnabledSaslMechanism
(Collection<String> saslMechanisms) Enable the given SASL mechanisms.Allownull
or the empty String as username.abstract C
build()
static KeyManager[]
getKeyManagersFrom
(String keystoreType, String keystorePath, CallbackHandler callbackHandler, String pkcs11Library) protected abstract B
getThis()
Perform anonymous authentication using SASL ANONYMOUS.performSaslExternalAuthentication
(SSLContext sslContext) Perform authentication using SASL EXTERNAL.setAuthzid
(EntityBareJid authzid) Set the XMPP address to be used as authorization identity.setCallbackHandler
(CallbackHandler callbackHandler) Deprecated.setCompressionEnabled
(boolean compressionEnabled) Sets if the connection is going to use compression (default false).setCustomX509TrustManager
(X509TrustManager x509TrustManager) setDebuggerFactory
(SmackDebuggerFactory debuggerFactory) Set the Smack debugger factory used to construct Smack debuggers.setDnssecMode
(ConnectionConfiguration.DnssecMode dnssecMode) setEnabledSSLCiphers
(String[] enabledSSLCiphers) Set the enabled SSL/TLS ciphers.setEnabledSSLProtocols
(String[] enabledSSLProtocols) Set the enabled SSL/TLS protocols.setHost
(CharSequence host) Set the name of the host providing the XMPP service.Set the name of the host providing the XMPP service.setHostAddress
(InetAddress address) Set the Internet address of the host providing the XMPP service.setHostnameVerifier
(HostnameVerifier verifier) Set the HostnameVerifier used to verify the hostname of SSLSockets used by XMPP connections created with this ConnectionConfiguration.setKeyManager
(KeyManager keyManager) Set theKeyManager
s to initialize theSSLContext
used by Smack to establish the XMPP connection.setKeyManagers
(KeyManager[] keyManagers) Set theKeyManager
s to initialize theSSLContext
used by Smack to establish the XMPP connection.setKeystorePath
(String keystorePath) Deprecated.set a keystore-path awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.setKeystoreType
(String keystoreType) Deprecated.set a key-type awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.setLanguage
(Locale language) Set the stream language.setPKCS11Library
(String pkcs11Library) Deprecated.set a PKCS11-library awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.setPort
(int port) setProxyInfo
(ProxyInfo proxyInfo) Set the information about the Proxy used for the connection.setResource
(CharSequence resource) Set the resource we are requesting from the server.setResource
(Resourcepart resource) Set the resource we are requesting from the server.setSecurityMode
(ConnectionConfiguration.SecurityMode securityMode) Sets the TLS security mode used when making the connection.setSendPresence
(boolean sendPresence) Sets if an initial available presence will be sent to the server.setServiceName
(DomainBareJid serviceName) Deprecated.usesetXmppDomain(DomainBareJid)
instead.setSocketFactory
(SocketFactory socketFactory) Sets the socket factory used to create new xmppConnection sockets.setSslContextFactory
(SslContextFactory sslContextFactory) Sets a custom SSLContext for creating SSL sockets.setSslContextSecureRandom
(SecureRandom secureRandom) Set theSecureRandom
used to initialize theSSLContext
used by Smack to establish the XMPP connection.setStanzaIdSourceFactory
(StanzaIdSourceFactory stanzaIdSourceFactory) Set the factory for stanza ID sources to use.setUsernameAndPassword
(CharSequence username, String password) Set the XMPP entities username and password.setXmppAddressAndPassword
(CharSequence jid, String password) Convenience method to configure the username, password and XMPP service domain.setXmppAddressAndPassword
(EntityBareJid jid, String password) Convenience method to configure the username, password and XMPP service domain.setXmppDomain
(String xmppServiceDomain) Set the XMPP domain.setXmppDomain
(DomainBareJid xmppDomain) Set the XMPP domain.
-
Constructor Details
-
Builder
protected Builder()
-
-
Method Details
-
setXmppAddressAndPassword
public B setXmppAddressAndPassword(CharSequence jid, String password) throws XmppStringprepException Convenience method to configure the username, password and XMPP service domain.- Parameters:
jid
- the XMPP address of the user.password
- the password of the user.- Returns:
- a reference to this builder.
- Throws:
XmppStringprepException
- in case the XMPP address is not valid.- Since:
- 4.4.0
- See Also:
-
setXmppAddressAndPassword
Convenience method to configure the username, password and XMPP service domain. The localpart of the provided JID is used as username and the domanipart is used as XMPP service domain.Please note that this does and can not configure the client XMPP address. XMPP services are not required to assign bound JIDs where the localpart matches the username and the domainpart matches the verified domainpart. Although most services will follow that pattern.
- Parameters:
jid
- TODO javadoc me pleasepassword
- TODO javadoc me please- Returns:
- a reference to this builder.
- Since:
- 4.4.0
-
setUsernameAndPassword
Set the XMPP entities username and password.The username is usually the localpart of the clients JID. But some SASL mechanisms or services may require a different format (e.g. the full JID) as used authorization identity.
- Parameters:
username
- the username or authorization identitypassword
- the password or token used to authenticate- Returns:
- a reference to this builder.
-
setServiceName
Deprecated.usesetXmppDomain(DomainBareJid)
instead.Set the XMPP domain. The XMPP domain is what follows after the '@' sign in XMPP addresses (JIDs).- Parameters:
serviceName
- the service name- Returns:
- a reference to this builder.
-
setXmppDomain
Set the XMPP domain. The XMPP domain is what follows after the '@' sign in XMPP addresses (JIDs).- Parameters:
xmppDomain
- the XMPP domain.- Returns:
- a reference to this builder.
-
setXmppDomain
Set the XMPP domain. The XMPP domain is what follows after the '@' sign in XMPP addresses (JIDs).- Parameters:
xmppServiceDomain
- the XMPP domain.- Returns:
- a reference to this builder.
- Throws:
XmppStringprepException
- if the given string is not a domain bare JID.
-
setResource
Set the resource we are requesting from the server.If
resource
isnull
, the default, then the server will automatically create a resource for the client. Note that XMPP clients only suggest this resource to the server. XMPP servers are allowed to ignore the client suggested resource and instead assign a completely different resource (see RFC 6120 § 7.7.1).- Parameters:
resource
- the resource to use.- Returns:
- a reference to this builder.
- See Also:
-
setLanguage
Set the stream language.- Parameters:
language
- the language to use.- Returns:
- a reference to this builder.
- See Also:
-
setResource
Set the resource we are requesting from the server.- Parameters:
resource
- the non-null CharSequence to use a resource.- Returns:
- a reference ot this builder.
- Throws:
XmppStringprepException
- if the CharSequence is not a valid resourcepart.- See Also:
-
setHostAddress
Set the Internet address of the host providing the XMPP service. If set, then this will overwrite anything set viasetHost(CharSequence)
.- Parameters:
address
- the Internet address of the host providing the XMPP service.- Returns:
- a reference to this builder.
- Since:
- 4.2
-
setHost
Set the name of the host providing the XMPP service. This method takes DNS names and IP addresses.- Parameters:
host
- the DNS name of the host providing the XMPP service.- Returns:
- a reference to this builder.
-
setHost
Set the name of the host providing the XMPP service. Note that this method does only allow DNS names and not IP addresses. UsesetHostAddress(InetAddress)
if you want to explicitly set the Internet address of the host providing the XMPP service.- Parameters:
host
- the DNS name of the host providing the XMPP service.- Returns:
- a reference to this builder.
-
setPort
-
setPort
-
setCallbackHandler
Deprecated.set a callback-handler awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.Sets 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.- Parameters:
callbackHandler
- to obtain information, such as the password or principal information during the SASL authentication.- Returns:
- a reference to this builder.
-
setDnssecMode
-
setCustomX509TrustManager
-
setSecurityMode
Sets the TLS security mode used when making the connection. By default, the mode isConnectionConfiguration.SecurityMode.required
.- Parameters:
securityMode
- the security mode.- Returns:
- a reference to this builder.
-
setKeyManagers
Set theKeyManager
s to initialize theSSLContext
used by Smack to establish the XMPP connection.- Parameters:
keyManagers
- an array ofKeyManager
s to initialize theSSLContext
with.- Returns:
- a reference to this builder.
- Since:
- 4.4.5
-
setKeyManager
Set theKeyManager
s to initialize theSSLContext
used by Smack to establish the XMPP connection.- Parameters:
keyManager
- theKeyManager
s to initialize theSSLContext
with.- Returns:
- a reference to this builder.
- Since:
- 4.4.5
- See Also:
-
setSslContextSecureRandom
Set theSecureRandom
used to initialize theSSLContext
used by Smack to establish the XMPP connection. Note that you usually do not need (nor want) to set this. Because if theSecureRandom
is not explicitly set, Smack will initialize theSSLContext
withnull
asSecureRandom
argument. And all saneSSLContext
implementations will then select a safe secure random source by default.- Parameters:
secureRandom
- theSecureRandom
to initialize theSSLContext
with.- Returns:
- a reference to this builder.
- Since:
- 4.4.5
-
setKeystorePath
Deprecated.set a keystore-path awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.Sets the path to the keystore file. The key store file contains the certificates that may be used to authenticate the client to the server, in the event the server requests or requires it.- Parameters:
keystorePath
- the path to the keystore file.- Returns:
- a reference to this builder.
-
setKeystoreType
Deprecated.set a key-type awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.Sets the keystore type.- Parameters:
keystoreType
- the keystore type.- Returns:
- a reference to this builder.
-
setPKCS11Library
Deprecated.set a PKCS11-library awareKeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.Sets the PKCS11 library file location, needed when the Keystore type is PKCS11.- Parameters:
pkcs11Library
- the path to the PKCS11 library file.- Returns:
- a reference to this builder.
-
setSslContextFactory
Sets a custom SSLContext for creating SSL sockets.For more information on how to create a SSLContext see Java Secure Socket Extension (JSEE) Reference Guide: Creating Your Own X509TrustManager
- Parameters:
sslContextFactory
- the custom SSLContext for new sockets.- Returns:
- a reference to this builder.
-
setEnabledSSLProtocols
Set the enabled SSL/TLS protocols.- Parameters:
enabledSSLProtocols
- TODO javadoc me please- Returns:
- a reference to this builder.
-
setEnabledSSLCiphers
Set the enabled SSL/TLS ciphers.- Parameters:
enabledSSLCiphers
- the enabled SSL/TLS ciphers- Returns:
- a reference to this builder.
-
setHostnameVerifier
Set the HostnameVerifier used to verify the hostname of SSLSockets used by XMPP connections created with this ConnectionConfiguration.- Parameters:
verifier
- TODO javadoc me please- Returns:
- a reference to this builder.
-
setSendPresence
Sets if an initial available presence will be sent to the server. By default, * an available presence will be sent to the server indicating that this presence is not online and available to receive messages. If you want to log in without being 'noticed' then pass afalse
value.- Parameters:
sendPresence
- true if an initial available presence will be sent while logging in.- Returns:
- a reference to this builder.
-
enableDefaultDebugger
-
setDebuggerFactory
Set the Smack debugger factory used to construct Smack debuggers.- Parameters:
debuggerFactory
- the Smack debugger factory.- Returns:
- a reference to this builder.
-
setSocketFactory
Sets the socket factory used to create new xmppConnection sockets. This is useful when connecting through SOCKS5 proxies.- Parameters:
socketFactory
- used to create new sockets.- Returns:
- a reference to this builder.
-
setProxyInfo
Set the information about the Proxy used for the connection.- Parameters:
proxyInfo
- the Proxy information.- Returns:
- a reference to this builder.
-
allowEmptyOrNullUsernames
Allownull
or the empty String as username. Some SASL mechanisms (e.g. SASL External) may also signal the username (as "authorization identity"), in which case Smack should not throw an IllegalArgumentException when the username is not set.- Returns:
- a reference to this builder.
-
performSaslAnonymousAuthentication
Perform anonymous authentication using SASL ANONYMOUS. Your XMPP service must support this authentication mechanism. This method also callsaddEnabledSaslMechanism(String)
with "ANONYMOUS" as argument.- Returns:
- a reference to this builder.
-
performSaslExternalAuthentication
Perform authentication using SASL EXTERNAL. Your XMPP service must support this authentication mechanism. This method also callsaddEnabledSaslMechanism(String)
with "EXTERNAL" as argument. It also callsallowEmptyOrNullUsernames()
andsetSecurityMode(ConnectionConfiguration.SecurityMode)
toConnectionConfiguration.SecurityMode.required
.- Parameters:
sslContext
- custom SSLContext to be used.- Returns:
- a reference to this builder.
-
addEnabledSaslMechanism
Add the given mechanism to the enabled ones. SeeaddEnabledSaslMechanism(Collection)
for a discussion about enabled SASL mechanisms.- Parameters:
saslMechanism
- the name of the mechanism to enable.- Returns:
- a reference to this builder.
-
addEnabledSaslMechanism
Enable the given SASL mechanisms. If you never add a mechanism to the set of enabled ones, all mechanisms known to Smack will be enabled. Only explicitly enable particular SASL mechanisms if you want to limit the used mechanisms to the enabled ones.- Parameters:
saslMechanisms
- a collection of names of mechanisms to enable.- Returns:
- a reference to this builder.
-
setAuthzid
Set the XMPP address to be used as authorization identity.In XMPP, authorization identities are bare jids. In general, callers should allow the server to select the authorization identifier automatically, and not call this. Note that setting the authzid does not set the XMPP service domain, which should typically match. Calling this will also SASL CRAM, since this mechanism does not support authzid.
- Parameters:
authzid
- The BareJid to be requested as the authorization identifier.- Returns:
- a reference to this builder.
- Since:
- 4.2
- See Also:
-
setCompressionEnabled
Sets if the connection is going to use compression (default false). Compression is only activated if the server offers compression. With compression network traffic can be reduced up to 90%. By default,compression is disabled.- Parameters:
compressionEnabled
- if the connection is going to use compression on the HTTP level.- Returns:
- a reference to this object.
-
setStanzaIdSourceFactory
Set the factory for stanza ID sources to use.- Parameters:
stanzaIdSourceFactory
- the factory for stanza ID sources to use.- Returns:
- a reference to this builder.
- Since:
- 4.4
-
build
-
getThis
-
getKeyManagersFrom
public static KeyManager[] getKeyManagersFrom(String keystoreType, String keystorePath, CallbackHandler callbackHandler, String pkcs11Library) throws NoSuchMethodException, SecurityException, ClassNotFoundException, KeyStoreException, NoSuchProviderException, NoSuchAlgorithmException, CertificateException, IOException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, UnsupportedCallbackException, UnrecoverableKeyException - Throws:
NoSuchMethodException
SecurityException
ClassNotFoundException
KeyStoreException
NoSuchProviderException
NoSuchAlgorithmException
CertificateException
IOException
InstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetException
UnsupportedCallbackException
UnrecoverableKeyException
-
KeyManager
viasetKeyManager(KeyManager)
orsetKeyManagers(KeyManager[])
, created bygetKeyManagersFrom(String, String, CallbackHandler, String)
, instead.