@ -13,6 +13,7 @@
import net.java.sip.communicator.service.protocol.* ;
import net.java.sip.communicator.service.protocol.FileTransfer ;
import net.java.sip.communicator.service.protocol.event.* ;
import net.java.sip.communicator.service.protocol.event.FileTransferListener ;
import net.java.sip.communicator.util.* ;
import org.jivesoftware.smack.* ;
@ -53,10 +54,10 @@ public class OperationSetFileTransferJabberImpl
private JabberFileTransferListener jabberFileTransferListener ;
/ * *
* A list of listeners registered for message events .
* A list of listeners registered for file transfer events .
* /
private Vector < FileTransfer Request Listener> fileTransferListeners
= new Vector < FileTransfer Request Listener> ( ) ;
private Vector < FileTransfer Listener> fileTransferListeners
= new Vector < FileTransfer Listener> ( ) ;
/ * *
* Constructor
@ -103,8 +104,14 @@ public FileTransfer sendFile( Contact toContact,
outgoingTransfer
= new OutgoingFileTransferJabberImpl ( transfer ) ;
// Notify all interested listeners that a file transfer has been
// created.
fireFileTransferCreated ( outgoingTransfer ) ;
// Send the file through the Jabber file transfer.
transfer . sendFile ( file , "Sending file." ) ;
// Start the status and progress thread.
new FileTransferProgressThread (
transfer , outgoingTransfer ) . start ( ) ;
}
@ -146,7 +153,7 @@ public FileTransfer sendFile( Contact toContact,
* @param listener the < tt > FileTransferRequestListener < / tt > to add
* /
public void addFileTransferRequestListener (
FileTransfer Request Listener listener )
FileTransfer Listener listener )
{
synchronized ( fileTransferListeners )
{
@ -165,7 +172,7 @@ public void addFileTransferRequestListener(
* @param listener the < tt > FileTransferRequestListener < / tt > to remove
* /
public void removeFileTransferRequestListener (
FileTransfer Request Listener listener )
FileTransfer Listener listener )
{
synchronized ( fileTransferListeners )
{
@ -242,7 +249,7 @@ else if (evt.getNewState() == RegistrationState.UNREGISTERED)
* Listener for Jabber incoming file transfer requests .
* /
private class JabberFileTransferListener
implements FileTransferListener
implements org. jivesoftware . smackx . filetransfer . FileTransferListener
{
/ * *
* Function called when a jabber file transfer request arrive .
@ -254,7 +261,9 @@ public void fileTransferRequest(FileTransferRequest request)
// Create a global incoming file transfer request.
IncomingFileTransferRequest incomingFileTransferRequest
= new IncomingFileTransferRequestJabberImpl (
jabberProvider , request ) ;
jabberProvider ,
OperationSetFileTransferJabberImpl . this ,
request ) ;
// Create an event associated to this global request.
FileTransferRequestEvent fileTransferRequestEvent
@ -274,18 +283,41 @@ public void fileTransferRequest(FileTransferRequest request)
* /
private void fireFileTransferRequest ( FileTransferRequestEvent event )
{
Iterator < FileTransferRequestListener > listeners = null ;
Iterator < FileTransferListener > listeners = null ;
synchronized ( fileTransferListeners )
{
listeners = new ArrayList < FileTransferListener >
( fileTransferListeners ) . iterator ( ) ;
}
while ( listeners . hasNext ( ) )
{
FileTransferListener listener = listeners . next ( ) ;
listener . fileTransferRequestReceived ( event ) ;
}
}
/ * *
* Delivers the file transfer to all registered listeners .
*
* @param fileTransfer the < tt > FileTransfer < / tt > that we ' d like delivered to
* all registered file transfer listeners .
* /
void fireFileTransferCreated ( FileTransfer fileTransfer )
{
Iterator < FileTransferListener > listeners = null ;
synchronized ( fileTransferListeners )
{
listeners = new ArrayList < FileTransferRequestListener >
listeners = new ArrayList < FileTransfer Listener>
( fileTransferListeners ) . iterator ( ) ;
}
while ( listeners . hasNext ( ) )
{
FileTransferRequestListener listener = listeners . next ( ) ;
FileTransfer Listener listener = listeners . next ( ) ;
listener . incomingRequestReceived ( event ) ;
listener . fileTransferCreated( fileTransfer ) ;
}
}