connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/registry/Registry.java
branchRCL_2_4
changeset 902 ce3a3250a628
parent 857 d66843399035
child 937 c2a0b0241151
--- a/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/registry/Registry.java	Fri Feb 05 10:32:30 2010 -0600
+++ b/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/registry/Registry.java	Fri Feb 05 15:37:04 2010 -0600
@@ -515,21 +515,30 @@
 		}
 	}
 	
-	public IConnection ensureConnection(String id, IService service) throws CoreException {
+	public ISelectedConnectionInfo ensureConnection(String id, IService service) throws CoreException {
 		Check.checkArg(service);
-		IConnection connection = findConnection(id);
-		if (!isCompatibleConnection(connection, service)) {
-			connection = getCompatibleConnectionFromUser(service);
-			if (connection == null) {
+		final IConnection[] connectionHolder = { findConnection(id) };
+		final String[] storableIdHolder = { id };
+		if (!isCompatibleConnection(connectionHolder[0], service)) {
+			connectionHolder[0] = getCompatibleConnectionFromUser(service, storableIdHolder);
+			if (connectionHolder[0] == null) {
 				throw new CoreException(
 						Logging.newStatus(RemoteConnectionsActivator.getDefault(), IStatus.ERROR, 
 								Messages.getString("Registry.NoCompatibleConnectionMsg"))); //$NON-NLS-1$
 			}
 		}
-		return connection;
+		return new ISelectedConnectionInfo() {
+			public String getStorableId() {
+				return storableIdHolder[0];
+			}
+			
+			public IConnection getConnection() {
+				return connectionHolder[0];
+			}
+		};
 	}
 
-	private IConnection getCompatibleConnectionFromUser(final IService service) {
+	private IConnection getCompatibleConnectionFromUser(final IService service, final String[] storableIdHolder) {
 		final IConnection[] connectionHolder = { null };
 		if (!WorkbenchUtils.isJUnitRunning()) {
 			Display.getDefault().syncExec(new Runnable() {
@@ -589,8 +598,10 @@
 						}
 					};
 					dialog.setBlockOnOpen(true);
-					if (dialog.open() == Dialog.OK)
-						connectionHolder[0] = findConnection(ui.getSelectedConnection());
+					if (dialog.open() == Dialog.OK) {
+						storableIdHolder[0] = ui.getSelectedConnection();
+						connectionHolder[0] = findConnection(storableIdHolder[0]);
+					}
 				}
 			});
 		}