diff options
author | slewis | 2007-03-06 23:08:51 +0000 |
---|---|---|
committer | slewis | 2007-03-06 23:08:51 +0000 |
commit | 446d77d8a9be13c1444c5ad86c1f78934e8c69e0 (patch) | |
tree | 6479f242b4d92aa3afe5af293eef03fd7adff274 /providers/bundles/org.eclipse.ecf.provider.filetransfer | |
parent | e8c17d6095f2b9b303e8fc7843f418537e6db694 (diff) | |
download | org.eclipse.ecf-446d77d8a9be13c1444c5ad86c1f78934e8c69e0.tar.gz org.eclipse.ecf-446d77d8a9be13c1444c5ad86c1f78934e8c69e0.tar.xz org.eclipse.ecf-446d77d8a9be13c1444c5ad86c1f78934e8c69e0.zip |
Added IRetrieveFileTransferFactory service interface and service implementation, also added client test code in org.eclipse.ecf.tests.filetransfer.
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.filetransfer')
5 files changed, 40 insertions, 15 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java index a7eaba85c..bd097f3ea 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java @@ -4,8 +4,12 @@ import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.Plugin; +import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer; +import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory; +import org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; import org.osgi.util.tracker.ServiceTracker; /** @@ -13,17 +17,19 @@ import org.osgi.util.tracker.ServiceTracker; */ public class Activator extends Plugin { - private static final String URL_HANDLER_PROTOCOL_NAME = "url.handler.protocol"; + private static final String URL_HANDLER_PROTOCOL_NAME = "url.handler.protocol"; //$NON-NLS-1$ - private static final String URLSTREAM_HANDLER_SERVICE_NAME = "org.osgi.service.url.URLStreamHandlerService"; + private static final String URLSTREAM_HANDLER_SERVICE_NAME = "org.osgi.service.url.URLStreamHandlerService"; //$NON-NLS-1$ // The plug-in ID - public static final String PLUGIN_ID = "org.eclipse.ecf.provider.filetransfer"; + public static final String PLUGIN_ID = "org.eclipse.ecf.provider.filetransfer"; //$NON-NLS-1$ // The shared instance private static Activator plugin; - BundleContext context; + private BundleContext context; + + private ServiceRegistration fileTransferServiceRegistration; /** * The constructor @@ -40,6 +46,13 @@ public class Activator extends Plugin { super.start(context); plugin = this; this.context = context; + fileTransferServiceRegistration = context.registerService( + IRetrieveFileTransferFactory.class.getName(), + new IRetrieveFileTransferFactory() { + public IRetrieveFileTransfer newInstance() { + return new MultiProtocolRetrieveAdapter(); + } + }, null); } /* @@ -49,8 +62,12 @@ public class Activator extends Plugin { */ public void stop(BundleContext context) throws Exception { plugin = null; - super.stop(context); this.context = null; + if (fileTransferServiceRegistration != null) { + fileTransferServiceRegistration.unregister(); + fileTransferServiceRegistration = null; + } + super.stop(context); } /** diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java index 302150dcb..b45376047 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java @@ -67,6 +67,8 @@ public abstract class AbstractRetrieveFileTransfer implements protected Exception exception; protected long fileLength = -1; + + protected Map options = null; protected URL getRemoteFileURL() { return remoteFileURL; @@ -87,6 +89,10 @@ public abstract class AbstractRetrieveFileTransfer implements protected void setFileLength(long length) { fileLength = length; } + + protected Map getOptions() { + return options; + } public AbstractRetrieveFileTransfer() { } @@ -243,7 +249,7 @@ public abstract class AbstractRetrieveFileTransfer implements * * @throws IncomingFileTransferException */ - protected abstract void openStreams(Map options) + protected abstract void openStreams() throws IncomingFileTransferException; /* @@ -266,7 +272,8 @@ public abstract class AbstractRetrieveFileTransfer implements this.exception = null; this.fileLength = 0; this.remoteFileID = remoteFileID; - + this.options = options; + try { this.remoteFileURL = remoteFileID.getURL(); } catch (MalformedURLException e) { @@ -277,7 +284,7 @@ public abstract class AbstractRetrieveFileTransfer implements remoteFileID), e); //$NON-NLS-1$ } this.listener = transferListener; - openStreams(options); + openStreams(); } public Namespace getRetrieveNamespace() { diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/HttpClientRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/HttpClientRetrieveFileTransfer.java index 206f0b73a..acd5b2f64 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/HttpClientRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/HttpClientRetrieveFileTransfer.java @@ -14,7 +14,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; -import java.util.Map; import javax.security.auth.login.LoginException; @@ -172,7 +171,10 @@ public class HttpClientRetrieveFileTransfer extends } } - protected void openStreams(Map options) + /* (non-Javadoc) + * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#openStreams() + */ + protected void openStreams() throws IncomingFileTransferException { String urlString = getRemoteFileURL().toString(); diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/MultiProtocolRetrieveAdapter.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/MultiProtocolRetrieveAdapter.java index a0560ea01..89c4e140d 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/MultiProtocolRetrieveAdapter.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/MultiProtocolRetrieveAdapter.java @@ -24,6 +24,7 @@ import org.eclipse.ecf.filetransfer.IFileTransferListener; import org.eclipse.ecf.filetransfer.IRetrieveFileTransferContainerAdapter; import org.eclipse.ecf.filetransfer.IncomingFileTransferException; import org.eclipse.ecf.filetransfer.identity.IFileID; +import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer; import org.eclipse.ecf.internal.provider.filetransfer.Messages; import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace; @@ -33,7 +34,7 @@ import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace; * retriever. */ public class MultiProtocolRetrieveAdapter implements - IRetrieveFileTransferContainerAdapter { + IRetrieveFileTransfer { IConnectContext connectContext = null; Proxy proxy = null; diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java index 2dd2ebb0a..0ae613efa 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java @@ -15,7 +15,6 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; -import java.util.Map; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.security.IConnectContext; @@ -39,14 +38,13 @@ public class UrlConnectionRetrieveFileTransfer extends protected IFileID fileid = null; /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#openStreams(java.util.Map) + * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#openStreams() */ - protected void openStreams(Map options) + protected void openStreams() throws IncomingFileTransferException { URL theURL = null; try { - theURL = getRemoteFileURL(); urlConnection = theURL.openConnection(); setInputStream(urlConnection.getInputStream()); |