Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Fedorenko2011-08-03 07:25:22 -0400
committerIgor Fedorenko2011-08-03 07:25:22 -0400
commit9b0f9f606581c7e5385cdcf01cdaa90b1ce63fad (patch)
tree4363c6ff6992f31d7f3cd728120106cd13056cf2 /org.eclipse.m2e.editor.xml
parent9f1a4bad630f4c22430279c6a77e3a4bbc9df4e6 (diff)
downloadm2e-core-9b0f9f606581c7e5385cdcf01cdaa90b1ce63fad.tar.gz
m2e-core-9b0f9f606581c7e5385cdcf01cdaa90b1ce63fad.tar.xz
m2e-core-9b0f9f606581c7e5385cdcf01cdaa90b1ce63fad.zip
350443 - Quickfix for lifecycle mapping ignore does not always work
Fixed a problem when quick fix dialog did not appear right after workbench restart, when MavenProject cache was not primed yet. The code now calls getMavenProject(IProgressMonitor), which loads MavenProject instance as necessary. Fixed a problem when quick-fix failed if plugin was using ${prop} version. Unfortunately, the code will still fail if plugin groupId or artifactId are defined using properties, but I to fix that association between elements of effective and original project model is necessary, but Maven does not currently provide it. Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (limited to 'org.eclipse.m2e.editor.xml')
-rw-r--r--org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java36
1 files changed, 27 insertions, 9 deletions
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java
index 2ed6ef84..a2b86977 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java
@@ -8,10 +8,13 @@
* Contributors:
* Sonatype, Inc. - initial API and implementation
*******************************************************************************/
+
package org.eclipse.m2e.editor.xml.internal.lifecycle;
+import java.io.File;
import java.lang.reflect.InvocationTargetException;
+import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
@@ -40,6 +43,7 @@ import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite;
+@SuppressWarnings("restriction")
public class LifecycleMappingDialog extends Dialog implements ISelectionChangedListener {
private PomHierarchyComposite pomComposite;
@@ -105,7 +109,9 @@ public class LifecycleMappingDialog extends Dialog implements ISelectionChangedL
//350439
//set selection here, because we listen on changes and update the ok button.
//but the button is not created until super is called here..
- pomComposite.setSelection(new StructuredSelection(pluginProject));
+ if(pluginProject != null) {
+ pomComposite.setSelection(new StructuredSelection(pluginProject));
+ }
}
public void selectionChanged(SelectionChangedEvent event) {
@@ -143,16 +149,28 @@ public class LifecycleMappingDialog extends Dialog implements ISelectionChangedL
}
private MavenProject locatePlugin() {
- for (MavenProject project : pomComposite.getHierarchy()) {
- if (project.getOriginalModel().getBuild() != null) {
- for (Plugin plugin : project.getOriginalModel().getBuild().getPlugins()) {
- if(plugin.getGroupId().equals(pluginGroupId) && plugin.getArtifactId().equals(pluginArtifactId)
- && (plugin.getVersion() == null || pluginVersion.equals(plugin.getVersion()))) {
- return project;
- }
- }
+ MavenProject project = facade.getMavenProject(); // if we got here, facade.getMavenProject can be null
+
+ Plugin plugin = project.getPlugin(pluginGroupId + ":" + pluginArtifactId);
+
+ if(plugin == null) {
+ return null; // can't really happy
+ }
+
+ InputLocation location = plugin.getLocation("");
+
+ if(location == null || location.getSource() == null || location.getSource().getLocation() == null) {
+ // that's odd. where does this come from???
+ return null;
+ }
+
+ File basedir = new File(location.getSource().getLocation()).getParentFile(); // should be canonical file already
+ for(MavenProject other : pomComposite.getHierarchy()) {
+ if(basedir.equals(other.getBasedir())) {
+ return other;
}
}
+
return null;
}
}

Back to the top