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;