diff options
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java')
-rw-r--r-- | providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java index 5a8f15f19..a8057fa04 100644 --- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java +++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransferHelper.java @@ -17,6 +17,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.ecf.core.identity.IDFactory; import org.eclipse.ecf.core.identity.Namespace; import org.eclipse.ecf.core.security.IConnectContext; @@ -29,6 +30,7 @@ import org.eclipse.ecf.filetransfer.ISendFileTransferContainerAdapter; import org.eclipse.ecf.filetransfer.SendFileTransferException; import org.eclipse.ecf.filetransfer.events.IFileTransferEvent; import org.eclipse.ecf.filetransfer.identity.IFileID; +import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin; import org.eclipse.ecf.provider.xmpp.XMPPContainer; import org.eclipse.ecf.provider.xmpp.identity.XMPPFileID; import org.eclipse.ecf.provider.xmpp.identity.XMPPFileNamespace; @@ -38,6 +40,11 @@ import org.jivesoftware.smackx.filetransfer.FileTransferManager; public class XMPPOutgoingFileTransferHelper implements ISendFileTransferContainerAdapter { + /** + * + */ + private static final String OUTGOING_REQUEST_TIMEOUT = "outgoingRequestTimeout"; + List transferListeners = new ArrayList(); List incomingListeners = new ArrayList(); @@ -88,7 +95,23 @@ public class XMPPOutgoingFileTransferHelper implements ISendFileTransferContaine final XMPPFileID fileID = (XMPPFileID) targetReceiver; - final XMPPOutgoingFileTransfer fileTransfer = new XMPPOutgoingFileTransfer(manager, fileID.getXMPPID(), localFileToSend, progressListener); + int requestTimeout = -1; + if (options != null) { + final Object option = options.get(OUTGOING_REQUEST_TIMEOUT); + if (option != null) { + if (option instanceof String) { + try { + requestTimeout = Integer.valueOf((String) option).intValue(); + } catch (final NumberFormatException e) { + // Ignore + } + } else if (option instanceof Integer) { + requestTimeout = ((Integer) option).intValue(); + } + } + } + + final XMPPOutgoingFileTransfer fileTransfer = new XMPPOutgoingFileTransfer(manager, fileID.getXMPPID(), localFileToSend, progressListener, requestTimeout); try { fileTransfer.startSend(localFileToSend.getFile(), localFileToSend.getDescription()); @@ -177,7 +200,12 @@ public class XMPPOutgoingFileTransferHelper implements ISendFileTransferContaine * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ public Object getAdapter(Class adapter) { - return null; + if (adapter == null) + return null; + if (adapter.isInstance(this)) + return this; + final IAdapterManager adapterManager = XmppPlugin.getDefault().getAdapterManager(); + return (adapterManager == null) ? null : adapterManager.loadAdapter(this, adapter.getName()); } } |