Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2008-04-07 21:39:36 +0000
committerslewis2008-04-07 21:39:36 +0000
commit199f95e2ea1f2bda3b9ffc516fca2312d867d6fa (patch)
tree8d3cd156789ed8b2a1e0230964b0658482811449 /providers/bundles/org.eclipse.ecf.provider.filetransfer
parentefe0e5819ed079d86f0bf9559fb7925e731c877e (diff)
downloadorg.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')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/Activator.java23
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/internal/provider/filetransfer/IURLConnectionModifier.java27
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java7
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java6
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() {

Back to the top