From 2ed74458882cae145ae7bab18014f6fb35c4d9f7 Mon Sep 17 00:00:00 2001 From: Greg Watson Date: Sat, 14 Sep 2013 17:56:48 -0500 Subject: [PATCH] [404967] - Minor API tweaks. Signed-off-by: Greg Watson --- .../eclipse/remote/core/tests/ConnectionTests.java | 12 +++++------- .../eclipse/remote/core/tests/FileStoreTests.java | 13 ++++++------- .../eclipse/remote/core/tests/ProcessTests.java | 13 ++++++------- .../internal/remote/core/messages/Messages.java | 1 + .../remote/core/messages/messages.properties | 1 + .../services/local/LocalConnectionManager.java | 6 ++++-- .../services/local/LocalConnectionWorkingCopy.java | 14 +++++++++----- .../remote/core/IRemoteConnectionManager.java | 11 +++++++---- .../remote/core/IRemoteConnectionWorkingCopy.java | 10 ++++++++-- .../remote/jsch/core/JSchConnectionManager.java | 5 +++-- .../jsch/core/JSchConnectionWorkingCopy.java | 4 +++- .../remote/ui/widgets/RemoteConnectionWidget.java | 3 +-- 12 files changed, 54 insertions(+), 39 deletions(-) diff --git a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ConnectionTests.java b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ConnectionTests.java index 031e6258e45..8c198d888c7 100644 --- a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ConnectionTests.java +++ b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ConnectionTests.java @@ -122,16 +122,14 @@ public class ConnectionTests extends TestCase { assertNotNull(fRemoteConnectionManager); try { - fRemoteConnection = fRemoteConnectionManager.newConnection("test_connection"); //$NON-NLS-1$ + IRemoteConnectionWorkingCopy wc = fRemoteConnectionManager.newConnection("test_connection"); //$NON-NLS-1$ + wc.setAddress(HOST); + wc.setUsername(USERNAME); + wc.setPassword(PASSWORD); + fRemoteConnection = wc.save(); } catch (RemoteConnectionException e) { fail(e.getMessage()); } - assertNotNull(fRemoteConnection); - IRemoteConnectionWorkingCopy wc = fRemoteConnection.getWorkingCopy(); - wc.setAddress(HOST); - wc.setUsername(USERNAME); - wc.setPassword(PASSWORD); - wc.save(); try { fRemoteConnection.open(new NullProgressMonitor()); diff --git a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/FileStoreTests.java b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/FileStoreTests.java index bae01de8c66..a14121cc5d3 100644 --- a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/FileStoreTests.java +++ b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/FileStoreTests.java @@ -129,16 +129,15 @@ public class FileStoreTests extends TestCase { assertNotNull(fRemoteConnectionManager); try { - fRemoteConnection = fRemoteConnectionManager.newConnection(CONNECTION_NAME); + IRemoteConnectionWorkingCopy wc = fRemoteConnectionManager.newConnection(CONNECTION_NAME); + wc.setAddress(HOST); + wc.setUsername(USERNAME); + wc.setPassword(PASSWORD); + fRemoteConnection = wc.save(); + assertNotNull(fRemoteConnection); } catch (RemoteConnectionException e) { fail(e.getMessage()); } - assertNotNull(fRemoteConnection); - IRemoteConnectionWorkingCopy wc = fRemoteConnection.getWorkingCopy(); - wc.setAddress(HOST); - wc.setUsername(USERNAME); - wc.setPassword(PASSWORD); - wc.save(); try { fRemoteConnection.open(new NullProgressMonitor()); diff --git a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ProcessTests.java b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ProcessTests.java index d0655df27c6..775aa5977c9 100644 --- a/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ProcessTests.java +++ b/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/ProcessTests.java @@ -180,16 +180,15 @@ public class ProcessTests extends TestCase { assertNotNull(connMgr); try { - fRemoteConnection = connMgr.newConnection("test_connection"); //$NON-NLS-1$ + IRemoteConnectionWorkingCopy wc = connMgr.newConnection("test_connection"); //$NON-NLS-1$ + wc.setAddress(HOST); + wc.setUsername(USERNAME); + wc.setPassword(PASSWORD); + fRemoteConnection = wc.save(); + assertNotNull(fRemoteConnection); } catch (RemoteConnectionException e) { fail(e.getLocalizedMessage()); } - assertNotNull(fRemoteConnection); - IRemoteConnectionWorkingCopy wc = fRemoteConnection.getWorkingCopy(); - wc.setAddress(HOST); - wc.setUsername(USERNAME); - wc.setPassword(PASSWORD); - wc.save(); try { fRemoteConnection.open(new NullProgressMonitor()); diff --git a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/Messages.java b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/Messages.java index 85f3c408735..b36c29dbfd6 100644 --- a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/Messages.java +++ b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/Messages.java @@ -8,6 +8,7 @@ public class Messages extends NLS { public static String LocalConnection_2; public static String RemoteServicesProxy_0; public static String RemoteServicesProxy_1; + public static String Unable_to_create_new_local_connections; static { // initialize resource bundle diff --git a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/messages.properties b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/messages.properties index 0f135cf346e..501161fef7d 100644 --- a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/messages.properties +++ b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/messages/messages.properties @@ -1,4 +1,5 @@ LocalConnection_1=localhost LocalConnection_2=Port forwarding not supported +Unable_to_create_new_local_connections=Unable to create new local connections RemoteServicesProxy_0=Missing {0} attribute RemoteServicesProxy_1=Failed to instantiate factory: {0} in type: {1} in plugin: {2} diff --git a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionManager.java b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionManager.java index edf48e4f029..f0f889896ef 100644 --- a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionManager.java +++ b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionManager.java @@ -15,8 +15,10 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.filesystem.EFS; +import org.eclipse.internal.remote.core.messages.Messages; import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnectionManager; +import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; import org.eclipse.remote.core.IRemoteServices; import org.eclipse.remote.core.exception.RemoteConnectionException; @@ -78,8 +80,8 @@ public class LocalConnectionManager implements IRemoteConnectionManager { * .lang.String) */ @Override - public IRemoteConnection newConnection(String name) throws RemoteConnectionException { - return fLocalConnection; + public IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException { + throw new RemoteConnectionException(Messages.Unable_to_create_new_local_connections); } /* diff --git a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionWorkingCopy.java b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionWorkingCopy.java index 6c295bb9007..8462d0062ec 100644 --- a/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionWorkingCopy.java +++ b/org.eclipse.remote.core/src/org/eclipse/internal/remote/core/services/local/LocalConnectionWorkingCopy.java @@ -10,12 +10,21 @@ *******************************************************************************/ package org.eclipse.internal.remote.core.services.local; +import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; public class LocalConnectionWorkingCopy extends LocalConnection implements IRemoteConnectionWorkingCopy { + private final LocalConnection fOriginal; + public LocalConnectionWorkingCopy(LocalConnection connection) { super(connection.getRemoteServices()); + fOriginal = connection; + } + + @Override + public IRemoteConnection save() { + return fOriginal; } @Override @@ -47,9 +56,4 @@ public class LocalConnectionWorkingCopy extends LocalConnection implements IRemo public void setUsername(String username) { // Do nothing } - - @Override - public void save() { - // Do nothing - } } diff --git a/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionManager.java b/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionManager.java index 4ac76394b20..7cdf0f10b0c 100644 --- a/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionManager.java +++ b/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionManager.java @@ -54,17 +54,20 @@ public interface IRemoteConnectionManager { public List getConnections(); /** - * Creates a new remote connection named with supplied name. The connection - * attributes will be the default for the implementation. + * Creates a new remote connection named with supplied name. The connection attributes will be the default for the + * implementation. + * + * Returns a working copy of the remote connection. Callers must call {@link IRemoteConnectionWorkingCopy#save()} before the + * connection can be used. * * @param name * name of the connection - * @return a new connection with the supplied name + * @return a new connection working copy with the supplied name * @throws RemoteConnectionException * if connection creation failed * @since 5.0 */ - public IRemoteConnection newConnection(String name) throws RemoteConnectionException; + public IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException; /** * Remove a connection and all resources associated with it. diff --git a/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java b/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java index d5f3cb85f8e..4aecbd69295 100644 --- a/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java +++ b/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java @@ -11,6 +11,14 @@ package org.eclipse.remote.core; public interface IRemoteConnectionWorkingCopy extends IRemoteConnection { + /** + * Saves this working copy to its original connection and returns a handle to the resulting connection. Has no effect if this + * connection does not need saving. + * + * @return saved connection + */ + public IRemoteConnection save(); + /** * Set the address for this connection * @@ -60,6 +68,4 @@ public interface IRemoteConnectionWorkingCopy extends IRemoteConnection { * @param username */ public void setUsername(String username); - - public void save(); } diff --git a/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionManager.java b/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionManager.java index 43139b366fc..0a8cddfbbce 100644 --- a/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionManager.java +++ b/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionManager.java @@ -22,6 +22,7 @@ import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.internal.remote.jsch.core.messages.Messages; import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnectionManager; +import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; import org.eclipse.remote.core.IRemoteServices; import org.eclipse.remote.core.exception.RemoteConnectionException; import org.osgi.service.prefs.BackingStoreException; @@ -111,11 +112,11 @@ public class JSchConnectionManager implements IRemoteConnectionManager { /** * @since 5.0 */ - public IRemoteConnection newConnection(String name) throws RemoteConnectionException { + public IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException { if (getConnection(name) != null) { throw new RemoteConnectionException(Messages.JSchConnectionManager_connection_with_this_name_exists); } - return createConnection(name); + return createConnection(name).getWorkingCopy(); } public void add(JSchConnection conn) { diff --git a/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionWorkingCopy.java b/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionWorkingCopy.java index 4ff26d027df..f7075e1526c 100644 --- a/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionWorkingCopy.java +++ b/org.eclipse.remote.jsch.core/src/org/eclipse/internal/remote/jsch/core/JSchConnectionWorkingCopy.java @@ -13,6 +13,7 @@ package org.eclipse.internal.remote.jsch.core; import java.util.Collections; import java.util.Map; +import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnectionChangeEvent; import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; @@ -139,7 +140,7 @@ public class JSchConnectionWorkingCopy extends JSchConnection implements IRemote * * @see org.eclipse.remote.core.IRemoteConnectionWorkingCopy#save() */ - public void save() { + public IRemoteConnection save() { JSchConnectionAttributes info = fOriginal.getInfo(); info.getAttributes().clear(); info.getAttributes().putAll(fWorkingAttributes.getAttributes()); @@ -152,6 +153,7 @@ public class JSchConnectionWorkingCopy extends JSchConnection implements IRemote } info.save(); getManager().add(fOriginal); + return fOriginal; } /* diff --git a/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java b/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java index 1854ed08ac9..a745ffb95c1 100644 --- a/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java +++ b/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java @@ -396,8 +396,7 @@ public class RemoteConnectionWidget extends Composite { if (getUIConnectionManager() != null) { IRemoteConnectionWorkingCopy conn = getUIConnectionManager().newConnection(getShell(), fAttrHints, fAttrHintValues); if (conn != null) { - conn.save(); - handleRemoteServiceSelected(conn); + handleRemoteServiceSelected(conn.save()); handleConnectionSelected(); } }