diff options
author | Roland Grunberg | 2017-07-05 18:43:52 +0000 |
---|---|---|
committer | Roland Grunberg | 2017-07-05 19:31:40 +0000 |
commit | 10186b23166edb61d6ab65bb9ec5944d0cdb7236 (patch) | |
tree | ade7f6c72d7c34c5fa7f0fa3c5b8ead0f79b5030 | |
parent | 72011775818f98d6fa0e94840412323063e535bf (diff) | |
download | org.eclipse.linuxtools-10186b23166edb61d6ab65bb9ec5944d0cdb7236.tar.gz org.eclipse.linuxtools-10186b23166edb61d6ab65bb9ec5944d0cdb7236.tar.xz org.eclipse.linuxtools-10186b23166edb61d6ab65bb9ec5944d0cdb7236.zip |
Name remote java launch after container and fix connection opening.
- The Remote java launch configuration name is seen in Debug view so it
should be named after the container
- Attempt to open a connection if it exists but isn't in an active state
- Use different error messages for the case of a connection not being
found, and a connection not being active
Change-Id: I3d1b705b49c3eeb2b352156c76c9c9778e863a56
Reviewed-on: https://git.eclipse.org/r/100759
Tested-by: Hudson CI
Reviewed-by: Roland Grunberg <rgrunber@redhat.com>
4 files changed, 38 insertions, 6 deletions
diff --git a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/ContainerVMRunner.java b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/ContainerVMRunner.java index a5016daa06..a0966c50d4 100644 --- a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/ContainerVMRunner.java +++ b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/ContainerVMRunner.java @@ -34,6 +34,7 @@ public class ContainerVMRunner extends StandardVMRunner { private String ipAddress = null; private boolean isListening = false; private List<String> extraDirs; + private IDockerContainerInfo containerInfo; public ContainerVMRunner(IVMInstall vmInstance) { super(vmInstance); @@ -160,6 +161,10 @@ public class ContainerVMRunner extends StandardVMRunner { return extraDirs; } + public IDockerContainerInfo getContainerInfo () { + return containerInfo; + } + private class JavaAppInContainerLaunchListener implements IContainerLaunchListener { @Override @@ -175,6 +180,7 @@ public class ContainerVMRunner extends StandardVMRunner { @Override public void containerInfo(IDockerContainerInfo info) { ipAddress = info.networkSettings().ipAddress(); + containerInfo = info; } } diff --git a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/JavaAppInContainerLaunchDelegate.java b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/JavaAppInContainerLaunchDelegate.java index db37271a59..3e94ccdfcc 100644 --- a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/JavaAppInContainerLaunchDelegate.java +++ b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/JavaAppInContainerLaunchDelegate.java @@ -42,6 +42,8 @@ import org.eclipse.jdt.launching.IVMInstall; import org.eclipse.jdt.launching.VMRunnerConfiguration; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.linuxtools.docker.core.DockerConnectionManager; +import org.eclipse.linuxtools.docker.core.DockerException; +import org.eclipse.linuxtools.docker.core.IDockerContainerInfo; import org.eclipse.linuxtools.docker.core.IDockerImage; import org.eclipse.linuxtools.internal.docker.core.DockerConnection; import org.eclipse.linuxtools.internal.docker.core.TCPConnectionSettings; @@ -71,7 +73,7 @@ public class JavaAppInContainerLaunchDelegate extends AbstractJavaLaunchConfigur try { DockerConnection conn = (DockerConnection) DockerConnectionManager.getInstance().getConnectionByUri(connectionURI); - if (conn == null || !conn.isOpen()) { + if (conn == null) { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { @@ -81,6 +83,23 @@ public class JavaAppInContainerLaunchDelegate extends AbstractJavaLaunchConfigur } }); return; + } else if (!conn.isOpen()) { + try { + conn.open(false); + } catch (DockerException e) { + } + + if (!conn.isOpen()) { + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + MessageDialog.openError(Display.getDefault().getActiveShell() + , Messages.JavaAppInContainerLaunchDelegate_connection_not_active_title + , Messages.bind(Messages.JavaAppInContainerLaunchDelegate_connection_not_active_text, connectionURI)); + } + }); + return; + } } IDockerImage img = conn.getImage(imageID); @@ -190,11 +209,6 @@ public class JavaAppInContainerLaunchDelegate extends AbstractJavaLaunchConfigur } if (ILaunchManager.DEBUG_MODE.equals(mode)) { - ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); - ILaunchConfigurationType type = manager.getLaunchConfigurationType(IJavaLaunchConfigurationConstants.ID_REMOTE_JAVA_APPLICATION); - ILaunchConfiguration cfgForAttach = type.newInstance(null, "attach_to_container"); //$NON-NLS-1$ - ILaunchConfigurationWorkingCopy wc = cfgForAttach.getWorkingCopy(); - while (runner.getIPAddress() == null || !runner.isListening()) { try { Thread.sleep(100); @@ -202,6 +216,14 @@ public class JavaAppInContainerLaunchDelegate extends AbstractJavaLaunchConfigur } } + IDockerContainerInfo info = runner.getContainerInfo(); + String configName = info.name().startsWith("/") ? info.name().substring(1) : info.name(); + + ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); + ILaunchConfigurationType type = manager.getLaunchConfigurationType(IJavaLaunchConfigurationConstants.ID_REMOTE_JAVA_APPLICATION); + ILaunchConfiguration cfgForAttach = type.newInstance(null, configName); + ILaunchConfigurationWorkingCopy wc = cfgForAttach.getWorkingCopy(); + String ip = runner.getIPAddress(); // The container has an IP and is listening // Can we reach it ? Or is it on a different network. diff --git a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/Messages.java b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/Messages.java index 5f0f3c1542..fa75d03d2e 100644 --- a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/Messages.java +++ b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/Messages.java @@ -19,6 +19,8 @@ public class Messages extends NLS { public static String ImageSelectionDialog_connection_label; public static String ImageSelectionDialog_image_label; public static String ImageSelectionDialog_title; + public static String JavaAppInContainerLaunchDelegate_connection_not_active_title; + public static String JavaAppInContainerLaunchDelegate_connection_not_active_text; public static String JavaAppInContainerLaunchDelegate_connection_not_found_title; public static String JavaAppInContainerLaunchDelegate_connection_not_found_text; public static String JavaAppInContainerLaunchDelegate_Creating_source_locator____2; diff --git a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/messages.properties b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/messages.properties index 74d72a0322..a9266519d2 100644 --- a/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/messages.properties +++ b/containers/org.eclipse.linuxtools.jdt.docker.launcher/src/org/eclipse/linuxtools/jdt/docker/launcher/messages.properties @@ -3,6 +3,8 @@ ContainerVMRunner_Unable_to_locate_executable_for__0__1=Unable to locate the JVM ImageSelectionDialog_connection_label=Connection : ImageSelectionDialog_image_label=Image : ImageSelectionDialog_title=Image Selection +JavaAppInContainerLaunchDelegate_connection_not_active_title=Connection not active +JavaAppInContainerLaunchDelegate_connection_not_active_text=The connection with the URI {0} exists, but could not be activated. Please enable it, or select a different connection. JavaAppInContainerLaunchDelegate_connection_not_found_title=Connection not found JavaAppInContainerLaunchDelegate_connection_not_found_text=No connection with the URI {0} could be found. Please enable it, or select a different connection. JavaAppInContainerLaunchDelegate_Creating_source_locator____2=Creating source locator... |