From cf2f51f8ff041b0c47132befc12b6dc4216c4f16 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Mon, 16 Feb 2015 18:29:48 -0500 Subject: [PATCH] Bug 460059 - Add handling of file scheme for Local connection. LocalFileManager is renamed to LocalFileService to fit in with the standard naming. Change-Id: I2ac49c64346709bdde0f3b38034cefaea3df913f Signed-off-by: Doug Schaefer --- bundles/org.eclipse.remote.core/plugin.xml | 10 ++++++++++ .../internal/core/RemoteConnectionType.java | 13 ++++++++++++- ...calFileManager.java => LocalFileService.java} | 16 ++++++++++++++-- 3 files changed, 36 insertions(+), 3 deletions(-) rename bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/{LocalFileManager.java => LocalFileService.java} (78%) diff --git a/bundles/org.eclipse.remote.core/plugin.xml b/bundles/org.eclipse.remote.core/plugin.xml index 9ed983dc93f..bedfc2973f3 100644 --- a/bundles/org.eclipse.remote.core/plugin.xml +++ b/bundles/org.eclipse.remote.core/plugin.xml @@ -23,6 +23,16 @@ factory="org.eclipse.remote.internal.core.services.local.LocalConnectionPropertyService$Factory" service="org.eclipse.remote.core.IRemoteConnectionPropertyService"> + + + + diff --git a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java index cfe95677390..6dd8ca0e628 100644 --- a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java +++ b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java @@ -196,7 +196,18 @@ public class RemoteConnectionType implements IRemoteConnectionType { @Override public IRemoteConnection getConnection(URI uri) { - return connections.get(uri.getAuthority()); + IRemoteConnection connection = connections.get(uri.getAuthority()); + if (connection != null) { + return connection; + } + + // If it's a file: scheme we must be the local connection type, just return our + // hopefully one connection, the Local connection. + if (uri.getScheme().equals("file") && !connections.isEmpty()) { //$NON-NLS-1$ + return connections.values().iterator().next(); + } + + return null; } @Override diff --git a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileManager.java b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java similarity index 78% rename from bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileManager.java rename to bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java index 5577850b453..cc420745959 100644 --- a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileManager.java +++ b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java @@ -20,15 +20,27 @@ import org.eclipse.core.runtime.Path; import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteFileService; import org.eclipse.remote.core.IRemoteProcessService; +import org.eclipse.remote.core.IRemoteConnection.Service; -public class LocalFileManager implements IRemoteFileService { +public class LocalFileService implements IRemoteFileService { private final IRemoteConnection connection; - public LocalFileManager(IRemoteConnection connection) { + public LocalFileService(IRemoteConnection connection) { this.connection = connection; } + public static class Factory implements IRemoteFileService.Factory { + @SuppressWarnings("unchecked") + @Override + public T getService(IRemoteConnection remoteConnection, Class service) { + if (IRemoteFileService.class.equals(service)) { + return (T) new LocalFileService(remoteConnection); + } + return null; + } + } + @Override public IRemoteConnection getRemoteConnection() { return connection;