432436 use runtime name to identify runtimes WIP
Change-Id: Ic2c2f210065775805418e37b47df00b83237f35f
Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntime.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntime.java
index 3f03aa0..c4bad9a 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntime.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntime.java
@@ -33,6 +33,9 @@
public abstract void createLauncherConfiguration(IMavenLauncherConfiguration collector, IProgressMonitor monitor)
throws CoreException;
+ /**
+ * @since 1.5
+ */
public abstract String getName();
public abstract String getLocation();
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntimeManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntimeManager.java
index 73f38e5..437c427 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntimeManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenRuntimeManager.java
@@ -78,7 +78,7 @@
return getEmbeddedRuntime();
}
MavenRuntime runtime = getRuntimeByName(selected);
- return runtime != null ? runtime : getEmbeddedRuntime();
+ return runtime != null && runtime.isAvailable() ? runtime : getEmbeddedRuntime();
}
private MavenEmbeddedRuntime getEmbeddedRuntime() {
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/launch/MavenEmbeddedRuntime.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/launch/MavenEmbeddedRuntime.java
index afb2e2e..6668e3f 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/launch/MavenEmbeddedRuntime.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/launch/MavenEmbeddedRuntime.java
@@ -221,7 +221,7 @@
StringBuilder sb = new StringBuilder();
sb.append("Embedded (").append(getVersion()); //$NON-NLS-1$
if(embedder != null) {
- String version = (String) embedder.getHeaders().get(Constants.BUNDLE_VERSION);
+ String version = embedder.getHeaders().get(Constants.BUNDLE_VERSION);
sb.append('/').append(version);
}
sb.append(')');
diff --git a/org.eclipse.m2e.launching/src/org/eclipse/m2e/internal/launch/MavenLaunchUtils.java b/org.eclipse.m2e.launching/src/org/eclipse/m2e/internal/launch/MavenLaunchUtils.java
index 0768fab..7b3c231 100644
--- a/org.eclipse.m2e.launching/src/org/eclipse/m2e/internal/launch/MavenLaunchUtils.java
+++ b/org.eclipse.m2e.launching/src/org/eclipse/m2e/internal/launch/MavenLaunchUtils.java
@@ -52,11 +52,11 @@
public static MavenRuntime getMavenRuntime(ILaunchConfiguration configuration) throws CoreException {
MavenRuntimeManager runtimeManager = MavenPlugin.getMavenRuntimeManager();
- String location = configuration.getAttribute(MavenLaunchConstants.ATTR_RUNTIME, ""); //$NON-NLS-1$
- MavenRuntime runtime = runtimeManager.getRuntime(location);
+ String name = configuration.getAttribute(MavenLaunchConstants.ATTR_RUNTIME, ""); //$NON-NLS-1$
+ MavenRuntime runtime = runtimeManager.getRuntimeByName(name);
if(runtime == null) {
throw new CoreException(new Status(IStatus.ERROR, MavenLaunchConstants.PLUGIN_ID, -1, //
- NLS.bind(Messages.MavenLaunchUtils_error_no_maven_install, location), null));
+ NLS.bind(Messages.MavenLaunchUtils_error_no_maven_install, name), null));
}
return runtime;
}
diff --git a/org.eclipse.m2e.launching/src/org/eclipse/m2e/ui/internal/launch/MavenRuntimeSelector.java b/org.eclipse.m2e.launching/src/org/eclipse/m2e/ui/internal/launch/MavenRuntimeSelector.java
index 8e21849..fe8aafc 100644
--- a/org.eclipse.m2e.launching/src/org/eclipse/m2e/ui/internal/launch/MavenRuntimeSelector.java
+++ b/org.eclipse.m2e.launching/src/org/eclipse/m2e/ui/internal/launch/MavenRuntimeSelector.java
@@ -17,6 +17,8 @@
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -25,6 +27,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -36,16 +39,18 @@
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.MavenRuntime;
import org.eclipse.m2e.core.embedder.MavenRuntimeManager;
+import org.eclipse.m2e.core.internal.launch.AbstractMavenRuntime;
/**
* @since 1.4
*/
+@SuppressWarnings("restriction")
public class MavenRuntimeSelector extends Composite {
ComboViewer runtimeComboViewer;
- private MavenRuntimeManager runtimeManager;
+ private static final MavenRuntimeManager runtimeManager = MavenPlugin.getMavenRuntimeManager();
public MavenRuntimeSelector(final Composite mainComposite) {
super(mainComposite, SWT.NONE);
@@ -74,11 +79,33 @@
}
});
+ runtimeComboViewer.setLabelProvider(new ILabelProvider() {
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void dispose() {
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public String getText(Object element) {
+ AbstractMavenRuntime runtime = (AbstractMavenRuntime) element;
+ return runtime.isLegacy() ? runtime.toString() : runtime.getName();
+ }
+
+ public Image getImage(Object element) {
+ return null;
+ }
+ });
try {
- runtimeManager = MavenPlugin.getMavenRuntimeManager();
- runtimeComboViewer.setInput(runtimeManager.getMavenRuntimes());
- runtimeComboViewer.setSelection(new StructuredSelection(runtimeManager.getDefaultRuntime()));
+ setInput();
} catch(NullPointerException e) {
// ignore, this only happens inside windowbuilder
}
@@ -90,13 +117,16 @@
public void widgetSelected(SelectionEvent e) {
PreferencesUtil.createPreferenceDialogOn(mainComposite.getShell(),
"org.eclipse.m2e.core.preferences.MavenInstallationsPreferencePage", null, null).open(); //$NON-NLS-1$
- MavenRuntimeManager runtimeManager = MavenPlugin.getMavenRuntimeManager();
- runtimeComboViewer.setInput(runtimeManager.getMavenRuntimes());
- runtimeComboViewer.setSelection(new StructuredSelection(runtimeManager.getDefaultRuntime()));
+ setInput();
}
});
}
+ protected void setInput() {
+ runtimeComboViewer.setInput(runtimeManager.getMavenRuntimes());
+ runtimeComboViewer.setSelection(new StructuredSelection(runtimeManager.getDefaultRuntime()));
+ }
+
public void setSelectRuntime(MavenRuntime runtime) {
this.runtimeComboViewer.setSelection(new StructuredSelection(runtime));
}
@@ -111,13 +141,13 @@
}
public void initializeFrom(ILaunchConfiguration configuration) {
- String location = "";
+ String name = "";
try {
- location = configuration.getAttribute(MavenLaunchConstants.ATTR_RUNTIME, ""); //$NON-NLS-1$
+ name = configuration.getAttribute(MavenLaunchConstants.ATTR_RUNTIME, ""); //$NON-NLS-1$
} catch(CoreException ex) {
// TODO log
}
- MavenRuntime runtime = runtimeManager.getRuntime(location);
+ MavenRuntime runtime = runtimeManager.getRuntimeByName(name);
if(runtime != null) {
setSelectRuntime(runtime);
}
@@ -125,6 +155,6 @@
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
MavenRuntime runtime = getSelectedRuntime();
- configuration.setAttribute(MavenLaunchConstants.ATTR_RUNTIME, runtime.getLocation());
+ configuration.setAttribute(MavenLaunchConstants.ATTR_RUNTIME, runtime.getName());
}
}