| /**************************************************************************** |
| * Copyright (c) 2004 Composent, Inc. and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Composent, Inc. - initial API and implementation |
| *****************************************************************************/ |
| |
| package org.eclipse.ecf.tests.provider.filetransfer.xmpp; |
| |
| import java.io.File; |
| import java.io.FileOutputStream; |
| |
| import org.eclipse.ecf.core.IContainer; |
| import org.eclipse.ecf.core.identity.ID; |
| import org.eclipse.ecf.core.identity.IDCreateException; |
| import org.eclipse.ecf.core.identity.IDFactory; |
| import org.eclipse.ecf.core.identity.Namespace; |
| import org.eclipse.ecf.filetransfer.IFileTransferListener; |
| import org.eclipse.ecf.filetransfer.IIncomingFileTransferRequestListener; |
| import org.eclipse.ecf.filetransfer.ISendFileTransferContainerAdapter; |
| import org.eclipse.ecf.filetransfer.events.IFileTransferEvent; |
| import org.eclipse.ecf.filetransfer.events.IFileTransferRequestEvent; |
| import org.eclipse.ecf.filetransfer.events.IIncomingFileTransferReceiveDoneEvent; |
| import org.eclipse.ecf.filetransfer.identity.FileCreateException; |
| import org.eclipse.ecf.filetransfer.identity.FileIDFactory; |
| import org.eclipse.ecf.filetransfer.identity.IFileID; |
| import org.eclipse.ecf.tests.ContainerAbstractTestCase; |
| |
| /** |
| * |
| */ |
| public class XMPPOutgoingTest extends ContainerAbstractTestCase { |
| |
| private static final String TESTSRCPATH = "test.src"; |
| private static final String TESTSRCFILE = TESTSRCPATH + "/test.txt"; |
| |
| private static final String TESTTARGETPATH = "test.target"; |
| |
| static final String XMPP_CONTAINER = "ecf.xmpp.smack"; |
| |
| protected ISendFileTransferContainerAdapter adapter0, adapter1 = null; |
| |
| protected String getClientContainerName() { |
| return XMPP_CONTAINER; |
| } |
| |
| protected ISendFileTransferContainerAdapter getOutgoingFileTransfer(int client) { |
| final IContainer c = getClient(client); |
| if (c != null) |
| return (ISendFileTransferContainerAdapter) c.getAdapter(ISendFileTransferContainerAdapter.class); |
| else |
| return null; |
| } |
| |
| protected IFileTransferListener getFileTransferListener(final String prefix) { |
| return new IFileTransferListener() { |
| public void handleTransferEvent(IFileTransferEvent event) { |
| System.out.println(prefix + ".handleTransferEvent(" + event + ")"); |
| if (event instanceof IIncomingFileTransferReceiveDoneEvent) { |
| |
| } |
| } |
| }; |
| } |
| |
| File incomingDirectory = null; |
| File incomingFile = null; |
| |
| /* (non-Javadoc) |
| * @see junit.framework.TestCase#tearDown() |
| */ |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| if (incomingFile != null) |
| incomingFile.delete(); |
| incomingFile = null; |
| if (incomingDirectory != null) |
| incomingDirectory.delete(); |
| incomingDirectory = null; |
| } |
| |
| protected IIncomingFileTransferRequestListener requestListener = new IIncomingFileTransferRequestListener() { |
| |
| public void handleFileTransferRequest(IFileTransferRequestEvent event) { |
| System.out.println("receiver.handleFileTransferRequest(" + event + ")"); |
| incomingDirectory = new File(TESTTARGETPATH); |
| incomingDirectory.mkdirs(); |
| incomingFile = new File(incomingDirectory, event.getFileTransferInfo().getFile().getName()); |
| try { |
| FileOutputStream fos = new FileOutputStream(incomingFile); |
| event.accept(fos, receiverTransferListener); |
| //event.accept(f); |
| } catch (Exception e) { |
| e.printStackTrace(System.err); |
| fail("exception calling accept for receive file transfer"); |
| } |
| } |
| |
| }; |
| |
| protected IFileTransferListener senderTransferListener = getFileTransferListener("sender"); |
| protected IFileTransferListener receiverTransferListener = getFileTransferListener("receiver"); |
| |
| protected ID getServerConnectID(int client) { |
| final IContainer container = getClient(client); |
| final Namespace connectNamespace = container.getConnectNamespace(); |
| final String username = getUsername(client); |
| try { |
| return IDFactory.getDefault().createID(connectNamespace, username); |
| } catch (final IDCreateException e) { |
| e.printStackTrace(System.err); |
| fail("Could not create server connect ID"); |
| return null; |
| } |
| } |
| |
| protected IFileID createFileID(ISendFileTransferContainerAdapter adapter, ID clientID, String filename) throws FileCreateException { |
| return FileIDFactory.getDefault().createFileID(adapter.getOutgoingNamespace(), new Object[] {clientID, filename}); |
| } |
| |
| public void testTwoClientsToSendAndReceive() throws Exception { |
| // Setup two clients. Client 0 is the receiver, client 1 is the sender |
| setClientCount(2); |
| clients = createClients(); |
| adapter0 = getOutgoingFileTransfer(0); |
| adapter0.addListener(requestListener); |
| adapter1 = getOutgoingFileTransfer(1); |
| for (int i = 0; i < 2; i++) { |
| connectClient(i); |
| } |
| |
| final IFileID targetID = createFileID(adapter1, getServerConnectID(0), TESTSRCFILE); |
| adapter1.sendOutgoingRequest(targetID, new File(TESTSRCFILE), senderTransferListener, null); |
| |
| sleep(20000); |
| |
| disconnectClients(); |
| |
| } |
| |
| } |