Bug 508655 - DockerException in DockerConnection.open

Removed the call to `Activator.log(e)` when a problem occurs
while testing the connection settings in the wizard. Instead,
the exception's message is displayed in the error dialog, which
is more explicit to the user (no need to look for the reason
in the Error Log). Same pattern is applied on both
`NewDockerConnection` page and `EditDockerConnection` page.

Also, fixed a few generics warnings in the `NewDockerConnectionPage`
class.

Change-Id: Iac9d1df4c5f1f61268317ce3461b90284c1d1144
Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
Reviewed-on: https://git.eclipse.org/r/86346
Tested-by: Hudson CI
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/EditDockerConnectionPage.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/EditDockerConnectionPage.java
index 87f6419..19075bd 100644
--- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/EditDockerConnectionPage.java
+++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/EditDockerConnectionPage.java
@@ -406,7 +406,7 @@
 		return new SelectionAdapter() {
 
 			@Override
-			public void widgetSelected(SelectionEvent e) {
+			public void widgetSelected(final SelectionEvent event) {
 				try {
 					getWizard().getContainer().run(true, false, monitor -> {
 						monitor.beginTask(WizardMessages.getString(
@@ -418,12 +418,13 @@
 							dockerConnection.close();
 							// ping succeeded
 							displaySuccessDialog();
-						} catch (DockerException e1) {
+						} catch (DockerException e) {
 							// only log if there's an underlying cause.
-							if (e1.getCause() != null) {
-								Activator.log(e1);
+							if (e.getCause() != null) {
+								displayErrorDialog(e.getCause());
+							} else {
+								displayErrorDialog(e);
 							}
-							displayErrorDialog();
 						}
 					});
 				} catch (InvocationTargetException | InterruptedException o_O) {
@@ -443,12 +444,14 @@
 				);
 			}
 
-			private void displayErrorDialog() {
+			private void displayErrorDialog(final Throwable cause) {
 				displayDialog(
 						WizardMessages
 								.getString("DockerConnectionPage.failure"), //$NON-NLS-1$
 						WizardMessages
-								.getString("DockerConnectionPage.pingFailure"), //$NON-NLS-1$
+								.getFormattedString(
+										"DockerConnectionPage.pingFailure", //$NON-NLS-1$
+										cause.getMessage()),
 						SWT.ICON_ERROR, new String[] { WizardMessages
 								.getString("DockerConnectionPage.ok") } //$NON-NLS-1$
 				);
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/NewDockerConnectionPage.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/NewDockerConnectionPage.java
index 35bef24..09b1d68 100644
--- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/NewDockerConnectionPage.java
+++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/NewDockerConnectionPage.java
@@ -290,35 +290,43 @@
 				.addSelectionListener(onTestConnectionButtonSelection());
 
 		// observe
+		@SuppressWarnings("unchecked")
 		final IObservableValue<String> connectionNameModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.CONNECTION_NAME)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<Boolean> unixSocketBindingModeModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.UNIX_SOCKET_BINDING_MODE)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<String> unixSocketPathModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.UNIX_SOCKET_PATH)
 				.observe(model);
 
-		final IObservableValue customConnectionSettingsModelObservable = BeanProperties
+		@SuppressWarnings("unchecked")
+		final IObservableValue<Boolean> customConnectionSettingsModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.CUSTOM_SETTINGS)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<Boolean> tcpConnectionBindingModeModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.TCP_CONNECTION_BINDING_MODE)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<String> tcpCertPathModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.TCP_CERT_PATH)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<Boolean> tcpTlsVerifyModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.TCP_TLS_VERIFY)
 				.observe(model);
+		@SuppressWarnings("unchecked")
 		final IObservableValue<String> tcpHostModelObservable = BeanProperties
 				.value(NewDockerConnectionPageModel.class,
 						NewDockerConnectionPageModel.TCP_HOST)
@@ -541,7 +549,7 @@
 				bindingModeSelectionControls);
 	}
 
-	private IValueChangeListener onCustomConnectionSettingsSelection(
+	private IValueChangeListener<Boolean> onCustomConnectionSettingsSelection(
 			final Control[] bindingModeSelectionControls,
 			final Control[] unixSocketControls, final Control[] tcpAuthControls,
 			final Control[] tcpConnectionControls) {
@@ -572,7 +580,7 @@
 		};
 	}
 
-	private IValueChangeListener onTcpAuthSelection(
+	private IValueChangeListener<Boolean> onTcpAuthSelection(
 			final Control[] tcpAuthControls) {
 		return event -> setWidgetsEnabled(model.isCustomSettings()
 				&& model.isTcpConnectionBindingMode() && model.isTcpTLSVerify(),
@@ -605,7 +613,7 @@
 		return new SelectionAdapter() {
 
 			@Override
-			public void widgetSelected(SelectionEvent e) {
+			public void widgetSelected(final SelectionEvent event) {
 				try {
 					getWizard().getContainer().run(true, false, monitor -> {
 						monitor.beginTask(WizardMessages.getString(
@@ -618,12 +626,16 @@
 							dockerConnection.close();
 							// ping succeeded
 							displaySuccessDialog();
-						} catch (DockerException e1) {
-							// only log if there's an underlying cause.
-							if (e1.getCause() != null) {
-								Activator.log(e1);
+						} catch (DockerException e) {
+							// only log if there's an underlying cause, but not
+							// as an error
+							// because there's no need to report such problems
+							// in Eclipse.org AERI
+							if (e.getCause() != null) {
+								displayErrorDialog(e.getCause());
+							} else {
+								displayErrorDialog(e);
 							}
-							displayErrorDialog();
 						}
 					});
 				} catch (InvocationTargetException | InterruptedException o_O) {
@@ -643,12 +655,14 @@
 				);
 			}
 
-			private void displayErrorDialog() {
+			private void displayErrorDialog(final Throwable cause) {
 				displayDialog(
 						WizardMessages
 								.getString("DockerConnectionPage.failure"), //$NON-NLS-1$
 						WizardMessages
-								.getString("DockerConnectionPage.pingFailure"), //$NON-NLS-1$
+								.getFormattedString(
+										"DockerConnectionPage.pingFailure", //$NON-NLS-1$
+										cause.getMessage()),
 						SWT.ICON_ERROR, new String[] { WizardMessages
 								.getString("DockerConnectionPage.ok") } //$NON-NLS-1$
 				);
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/WizardMessages.properties b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/WizardMessages.properties
index 710c0b4..7de953f 100644
--- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/WizardMessages.properties
+++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/wizards/WizardMessages.properties
@@ -203,7 +203,7 @@
 DockerConnectionPage.pingSuccess=Ping succeeded!
 DockerConnectionPage.ok=OK
 DockerConnectionPage.failure=Failure
-DockerConnectionPage.pingFailure=Ping failed!
+DockerConnectionPage.pingFailure=Ping failed: {0}
 DockerConnection.failure=Failure
 DockerConnection.failMessage=Failed to connect!
 DockerConnectionPage.validation.missingConnectionName.msg=Provide a unique name to identify the new connection.