package org.mercury_im.messenger.transport.xmpp; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.tcp.XMPPTCPConnection; import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration; import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.impl.JidCreate; import org.mercury_im.messenger.Messenger; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.PasswordAuthentication; public class XmppTcpConnectionFactory extends XmppConnectionFactory { public XmppTcpConnectionFactory(Messenger messenger) { super(messenger); } @Override protected XMPPTCPConnectionConfiguration getConfiguration(Account account) { XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); configBuilder.setConnectTimeout(20 * 1000); if (account.getAuthentication() instanceof PasswordAuthentication) { PasswordAuthentication authPassword = (PasswordAuthentication) account.getAuthentication(); EntityBareJid accountAddress = JidCreate.entityBareFromOrThrowUnchecked(account.getAddress()); configBuilder.setXmppAddressAndPassword(accountAddress, authPassword.getPassword()); } return configBuilder.build(); } @Override protected XMPPConnection createXmppConnection(XMPPTCPConnectionConfiguration configuration) { return new XMPPTCPConnection(configuration); } }