diff options
author | slewis | 2008-04-07 21:39:36 +0000 |
---|---|---|
committer | slewis | 2008-04-07 21:39:36 +0000 |
commit | 199f95e2ea1f2bda3b9ffc516fca2312d867d6fa (patch) | |
tree | 8d3cd156789ed8b2a1e0230964b0658482811449 /providers/bundles/org.eclipse.ecf.provider.filetransfer | |
parent | efe0e5819ed079d86f0bf9559fb7925e731c877e (diff) | |
download | org.eclipse.ecf-199f95e2ea1f2bda3b9ffc516fca2312d867d6fa.tar.gz org.eclipse.ecf-199f95e2ea1f2bda3b9ffc516fca2312d867d6fa.tar.xz org.eclipse.ecf-199f95e2ea1f2bda3b9ffc516fca2312d867d6fa.zip |
Changes to hook into org.eclipse.ecf.ssl and org.eclipse.ecf.provider.filetransfer.ssl for bug 224196.
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.filetransfer')
4 files changed, 60 insertions, 3 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 afa85f669..08daccb9c 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 @@ -79,6 +79,8 @@ public class Activator implements BundleActivator { private ServiceTracker proxyServiceTracker = null; + private IURLConnectionModifier urlConnectionModifier = null; + private IRegistryChangeListener registryChangeListener = new IRegistryChangeListener() { public void registryChanged(IRegistryChangeEvent event) { @@ -174,6 +176,18 @@ public class Activator implements BundleActivator { public void start(BundleContext ctxt) throws Exception { plugin = this; this.context = ctxt; + + // initialize the default url connection modifier for ssl + try { + Class urlConnectionModifierClass = Class.forName("org.eclipse.ecf.internal.provider.filetransfer.ssl.ECFURLConnectionModifier"); //$NON-NLS-1$ + urlConnectionModifier = (IURLConnectionModifier) urlConnectionModifierClass.newInstance(); + urlConnectionModifier.init(ctxt); + } catch (ClassNotFoundException e) { + // will occur if fragment is not installed or not on proper execution environment + } catch (Throwable t) { + log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), "Unexpected Error in Activator.start", t)); //$NON-NLS-1$ + } + fileTransferServiceRegistration = ctxt.registerService(IRetrieveFileTransferFactory.class.getName(), new IRetrieveFileTransferFactory() { public IRetrieveFileTransfer newInstance() { return new MultiProtocolRetrieveAdapter(); @@ -202,6 +216,11 @@ public class Activator implements BundleActivator { if (registry != null) { registry.removeRegistryChangeListener(registryChangeListener); } + + if (urlConnectionModifier != null) { + urlConnectionModifier.dispose(); + urlConnectionModifier = null; + } if (extensionRegistryTracker != null) { extensionRegistryTracker.close(); extensionRegistryTracker = null; @@ -612,4 +631,8 @@ public class Activator implements BundleActivator { return adapterManager; } + public IURLConnectionModifier getURLConnectionModifier() { + return urlConnectionModifier; + } + } diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/IURLConnectionModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/IURLConnectionModifier.java new file mode 100644 index 000000000..67a7e5fc8 --- /dev/null +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/IURLConnectionModifier.java @@ -0,0 +1,27 @@ +/**************************************************************************** + * Copyright (c) 2008 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.internal.provider.filetransfer; + +import java.net.URLConnection; +import org.osgi.framework.BundleContext; + +/** + * + */ +public interface IURLConnectionModifier { + + public void init(BundleContext context); + + public void setSocketFactoryForConnection(URLConnection urlConnection); + + public void dispose(); +} diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java index a31ffac8f..86596147b 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java @@ -22,8 +22,7 @@ import org.eclipse.ecf.core.util.ProxyAddress; import org.eclipse.ecf.filetransfer.IRemoteFile; import org.eclipse.ecf.filetransfer.IRemoteFileSystemListener; import org.eclipse.ecf.filetransfer.identity.IFileID; -import org.eclipse.ecf.internal.provider.filetransfer.Activator; -import org.eclipse.ecf.internal.provider.filetransfer.Messages; +import org.eclipse.ecf.internal.provider.filetransfer.*; import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper; /** @@ -63,6 +62,10 @@ public class URLFileSystemBrowser extends AbstractFileSystemBrowser { setupProxies(); setupAuthentication(); URLConnection urlConnection = directoryOrFile.openConnection(); + IURLConnectionModifier connectionModifier = Activator.getDefault().getURLConnectionModifier(); + if (connectionModifier != null) { + connectionModifier.setSocketFactoryForConnection(urlConnection); + } InputStream ins = urlConnection.getInputStream(); ins.close(); remoteFiles = new IRemoteFile[1]; 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 9e8255054..eeb292ed6 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 @@ -13,7 +13,7 @@ import java.net.*; import org.eclipse.ecf.core.security.*; import org.eclipse.ecf.core.util.Proxy; import org.eclipse.ecf.filetransfer.*; -import org.eclipse.ecf.internal.provider.filetransfer.Messages; +import org.eclipse.ecf.internal.provider.filetransfer.*; import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper; import org.eclipse.osgi.util.NLS; @@ -64,6 +64,10 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans protected void connect() throws IOException { setupTimeouts(); urlConnection = getRemoteFileURL().openConnection(); + IURLConnectionModifier connectionModifier = Activator.getDefault().getURLConnectionModifier(); + if (connectionModifier != null) { + connectionModifier.setSocketFactoryForConnection(urlConnection); + } } protected boolean isConnected() { |