Entry point retrieval file transfer adapter. This adapter interface allows
providers to expose file retrieval semantics to clients in a transport
independent manner. To be used, a non-null adapter reference must be returned
from a call to
IContainer#getAdapter(Class). Once a non-null
reference is retrieved, then it may be used to send a retrieve request.
Events will then be asynchronously delivered to the provided listener to
complete file transfer.
For example, to retrieve a remote file and store it in a local file:
// Get IRetrieveFileTransferContainerAdapter adapter
IRetrieveFileTransferContainerAdapter ftc = (IRetrieveFileTransferContainerAdapter) container
.getAdapter(IRetrieveFileTransferContainerAdapter.class);
if (ftc != null) {
// Create listener for receiving/responding to asynchronous file transfer events
IFileTransferListener listener = new IFileTransferListener() {
public void handleTransferEvent(IFileTransferEvent event) {
// If incoming receive start event, respond by specifying local file to save to
if (event instanceof IIncomingFileTransferReceiveStartEvent) {
IIncomingFileTransferReceiveStartEvent rse = (IIncomingFileTransferReceiveStartEvent) event;
try {
rse.receive(new File("composent.main.page.html"));
} catch (IOException e) {
// Handle exception appropriately
}
}
}
};
// Identify file to retrieve and create ID
IFileID remoteFileID = FileIDFactory.getDefault().createID(
ftc.getRetrieveNamespace(), "http://www.composent.com/index.html");
// Actually make request to start retrieval. The listener provided will then be notified asynchronously
// as file transfer events occur
ftc.sendRetrieveRequest(remoteFileID, listener, null);
}
Where the IFileTransferEvent subtypes
for the receiver will be:
-
IIncomingFileTransferReceiveStartEvent
-
IIncomingFileTransferReceiveDataEvent
-
IIncomingFileTransferReceiveDoneEvent