Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/PomHierarchyComposite.java (renamed from org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java)39
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/util/ParentGatherer.java (renamed from org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ParentGatherer.java)2
-rw-r--r--org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java35
-rw-r--r--org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java143
-rw-r--r--org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java34
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java3
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java2
-rw-r--r--org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java2
-rw-r--r--org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java29
-rw-r--r--org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java18
-rw-r--r--org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties1
11 files changed, 251 insertions, 57 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/PomHierarchyComposite.java
index 64294320..c55a01d8 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/PomHierarchyComposite.java
@@ -1,12 +1,23 @@
-
-package org.eclipse.m2e.editor.composites;
+/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.m2e.core.ui.internal.components;
import java.lang.reflect.InvocationTargetException;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
-import org.apache.maven.project.MavenProject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -16,19 +27,22 @@ import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IInputSelectionProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import org.apache.maven.project.MavenProject;
+
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.project.IMavenProjectFacade;
+import org.eclipse.m2e.core.ui.internal.util.ParentGatherer;
public class PomHierarchyComposite extends Composite implements IInputSelectionProvider {
@@ -230,4 +244,15 @@ public class PomHierarchyComposite extends Composite implements IInputSelectionP
public List<MavenProject> getHierarchy() {
return hierarchy;
}
+
+ public MavenProject fromSelection() {
+ ISelection selection = pomsViewer.getSelection();
+ if(selection instanceof IStructuredSelection) {
+ Object obj = ((IStructuredSelection) selection).getFirstElement();
+ if(obj instanceof MavenProject) {
+ return (MavenProject) obj;
+ }
+ }
+ return null;
+ }
}
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ParentGatherer.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/util/ParentGatherer.java
index 7801a0e7..148dd008 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ParentGatherer.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/util/ParentGatherer.java
@@ -9,7 +9,7 @@
* Sonatype, Inc. - initial API and implementation
*******************************************************************************/
-package org.eclipse.m2e.editor.composites;
+package org.eclipse.m2e.core.ui.internal.util;
import java.util.LinkedList;
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java
index 1c647b00..7a1e5104 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java
@@ -11,9 +11,20 @@
package org.eclipse.m2e.core.internal;
+import java.io.File;
+import java.util.Stack;
+
import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+import org.apache.maven.project.MavenProject;
+
public class M2EUtils {
@@ -61,4 +72,28 @@ public class M2EUtils {
return cause == null ? rootCause : cause;
}
+ /*
+ * Find the pom associated with a MavenProject
+ */
+ public static IFile getPomFile(MavenProject project) {
+ //XXX copied from XmlUtils.extractProject()
+ File file = new File(project.getFile().toURI());
+ IPath path = Path.fromOSString(file.getAbsolutePath());
+ Stack<IFile> stack = new Stack<IFile>();
+ //here we need to find the most inner project to the path.
+ //we do so by shortening the path and remembering all the resources identified.
+ // at the end we pick the last one from the stack. is there a catch to it?
+ IFile ifile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
+ if(ifile != null) {
+ stack.push(ifile);
+ }
+ while(path.segmentCount() > 1) {
+ IResource ires = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
+ if(ires != null && ires instanceof IFile) {
+ stack.push((IFile) ires);
+ }
+ path = path.removeFirstSegments(1);
+ }
+ return stack.empty() ? null : stack.pop();
+ }
}
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
new file mode 100644
index 00000000..729924a7
--- /dev/null
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.m2e.editor.xml.internal.lifecycle;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.project.MavenProject;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.internal.M2EUtils;
+import org.eclipse.m2e.core.project.IMavenProjectFacade;
+import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite;
+
+
+public class LifecycleMappingDialog extends Dialog implements ISelectionChangedListener {
+
+ private PomHierarchyComposite pomComposite;
+
+ private CLabel status;
+
+ private IFile pomFile;
+
+ private IMavenProjectFacade facade;
+
+ private String pluginGroupId;
+
+ private String pluginArtifactId;
+
+ private String pluginVersion;
+
+ private MavenProject pluginProject;
+
+ public LifecycleMappingDialog(Shell parentShell, IFile pom, String pluginGroupId, String pluginArtifactId,
+ String pluginVersion) {
+ super(parentShell);
+ facade = MavenPlugin.getMavenProjectRegistry().create(pom, true, new NullProgressMonitor());
+ this.pluginGroupId = pluginGroupId;
+ this.pluginArtifactId = pluginArtifactId;
+ this.pluginVersion = pluginVersion;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite container = (Composite) super.createDialogArea(parent);
+ Label label = new Label(container, SWT.NONE);
+ label.setText("Select location to place ignore");
+ pomComposite = new PomHierarchyComposite(container, SWT.BORDER);
+ pomComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ pomComposite.addSelectionChangedListener(this);
+ pomComposite.computeHeirarchy(facade, new IRunnableContext() {
+
+ public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable)
+ throws InvocationTargetException, InterruptedException {
+ runnable.run(new NullProgressMonitor());
+ }
+ });
+ status = new CLabel(container, SWT.WRAP);
+ status.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false));
+
+ pluginProject = locatePlugin();
+ return container;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ getButton(OK).setEnabled(false);
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ MavenProject project = pomComposite.fromSelection();
+ if(getButton(OK) != null) {
+ getButton(OK).setEnabled(project != null && project.getFile() != null);
+ }
+ updateStatus(project);
+ }
+
+ private void updateStatus(MavenProject project) {
+ if(project.getFile() == null) {
+ status.setText("Non-workspace pom");
+ status.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK));
+ } else if(project.equals(pluginProject)) {
+ status.setText("Plugin definition in selected pom.");
+ status.setImage(null);
+ } else {
+ status.setText("");
+ status.setImage(null);
+ }
+ }
+
+ @Override
+ protected void okPressed() {
+ pomFile = M2EUtils.getPomFile(pomComposite.fromSelection());
+ super.okPressed();
+ }
+
+ /*
+ * Should only be called after dialog has closed with OK return code
+ */
+ public IFile getPomFile() {
+ return pomFile;
+ }
+
+ 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;
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java
index 7ab80136..a07c130c 100644
--- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java
@@ -12,6 +12,8 @@
package org.eclipse.m2e.editor.xml.internal.lifecycle;
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument;
+
import java.io.IOException;
import org.slf4j.Logger;
@@ -26,17 +28,19 @@ import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposalExtension5;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext;
+import org.eclipse.jface.window.Window;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IMarkerResolution;
+import org.eclipse.ui.internal.Workbench;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.texteditor.MarkerAnnotation;
import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.lifecyclemapping.model.PluginExecutionAction;
-
-import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*;
+import org.eclipse.m2e.core.ui.internal.editing.PomEdits.OperationTuple;
import org.eclipse.m2e.editor.xml.internal.Messages;
public class LifecycleMappingProposal implements ICompletionProposal, ICompletionProposalExtension5, IMarkerResolution {
@@ -61,8 +65,7 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio
public void apply(final IDocument doc) {
try {
- performOnDOMDocument(new OperationTuple(doc, createOperation()));
- marker.delete();
+ perform();
} catch(IOException e) {
log.error("Error generating code in pom.xml", e); //$NON-NLS-1$
} catch(CoreException e) {
@@ -70,6 +73,26 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio
}
}
+ private void perform() throws IOException, CoreException {
+ final IFile[] pomFile = new IFile[1];
+ Workbench.getInstance().getDisplay().syncExec(new Runnable() {
+
+ public void run() {
+ LifecycleMappingDialog dialog = new LifecycleMappingDialog(Display.getCurrent().getActiveShell(),
+ (IFile) marker.getResource(), marker.getAttribute(IMavenConstants.MARKER_ATTR_GROUP_ID, ""), marker
+ .getAttribute(IMavenConstants.MARKER_ATTR_ARTIFACT_ID, ""), marker.getAttribute(
+ IMavenConstants.MARKER_ATTR_VERSION, ""));
+ dialog.setBlockOnOpen(true);
+ if(dialog.open() == Window.OK) {
+ pomFile[0] = dialog.getPomFile();
+ }
+ }
+ });
+ if(pomFile[0] != null) {
+ performOnDOMDocument(new OperationTuple(pomFile[0], createOperation()));
+ }
+ }
+
private LifecycleMappingOperation createOperation() {
String pluginGroupId = marker.getAttribute(IMavenConstants.MARKER_ATTR_GROUP_ID, ""); //$NON-NLS-1$
String pluginArtifactId = marker.getAttribute(IMavenConstants.MARKER_ATTR_ARTIFACT_ID, ""); //$NON-NLS-1$
@@ -129,8 +152,7 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio
public void run(final IMarker marker) {
try {
- performOnDOMDocument(new OperationTuple((IFile) marker.getResource(), createOperation()));
- marker.delete();
+ perform();
} catch(IOException e) {
log.error("Error generating code in pom.xml", e); //$NON-NLS-1$
} catch(CoreException e) {
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
index e23bf0d1..8a315f8c 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
@@ -46,9 +46,10 @@ import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.core.ui.internal.dialogs.EditDependencyDialog;
import org.eclipse.m2e.core.ui.internal.dialogs.MavenRepositorySearchDialog;
-import org.eclipse.m2e.core.ui.internal.editing.PomHelper;
import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation;
import org.eclipse.m2e.core.ui.internal.editing.PomEdits.OperationTuple;
+import org.eclipse.m2e.core.ui.internal.editing.PomHelper;
+import org.eclipse.m2e.core.ui.internal.util.ParentGatherer;
import org.eclipse.m2e.editor.MavenEditorImages;
import org.eclipse.m2e.editor.MavenEditorPlugin;
import org.eclipse.m2e.editor.dialogs.ManageDependenciesDialog;
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
index 444b6304..6e19c569 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java
@@ -46,6 +46,7 @@ import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
+import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite;
import org.eclipse.m2e.core.ui.internal.dialogs.AbstractMavenDialog;
import org.eclipse.m2e.core.ui.internal.editing.PomEdits.CompoundOperation;
import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation;
@@ -54,7 +55,6 @@ import org.eclipse.m2e.core.ui.internal.editing.PomHelper;
import org.eclipse.m2e.editor.MavenEditorPlugin;
import org.eclipse.m2e.editor.composites.DependencyLabelProvider;
import org.eclipse.m2e.editor.composites.ListEditorContentProvider;
-import org.eclipse.m2e.editor.composites.PomHierarchyComposite;
import org.eclipse.m2e.editor.pom.ValueProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java
index 1da68781..cb6380f5 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java
@@ -46,6 +46,8 @@ public class Messages extends NLS {
public static String ExcludeArtifactRefactoring_unableToLocateProject;
+ public static String ExcludeWizardPage_dependenciesManagedIn;
+
public static String ExcludeWizardPage_errorNonWorkspacePom;
public static String ExcludeWizardPage_errorSelectPom;
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java
index b451345e..5597843d 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.m2e.refactoring.exclude;
-import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -19,22 +18,17 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.Stack;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Exclusion;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.ltk.core.refactoring.Change;
@@ -43,6 +37,7 @@ import org.eclipse.ltk.core.refactoring.Refactoring;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.ArtifactKey;
+import org.eclipse.m2e.core.internal.M2EUtils;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.ui.internal.editing.AddDependencyOperation;
import org.eclipse.m2e.core.ui.internal.editing.AddExclusionOperation;
@@ -264,26 +259,8 @@ public class ExcludeArtifactRefactoring extends Refactoring {
}
private IFile getFile(MavenProject project) throws CoreException {
- //XXX copied from XmlUtils.extractProject()
- File file = new File(project.getFile().toURI());
- IPath path = Path.fromOSString(file.getAbsolutePath());
- Stack<IFile> stack = new Stack<IFile>();
- //here we need to find the most inner project to the path.
- //we do so by shortening the path and remembering all the resources identified.
- // at the end we pick the last one from the stack. is there a catch to it?
- IFile ifile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
- if (ifile != null) {
- stack.push(ifile);
- }
- while(path.segmentCount() > 1) {
- IResource ires = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
- if(ires != null && ires instanceof IFile) {
- stack.push((IFile)ires);
- }
- path = path.removeFirstSegments(1);
- }
- IFile res = stack.empty() ? null : stack.pop();
-
+ IFile res = M2EUtils.getPomFile(project);
+
if(res == null) {
throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, NLS.bind(
Messages.ExcludeArtifactRefactoring_failedToLocatePom, project.toString())));
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java
index ab022947..bd2029b9 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java
@@ -11,13 +11,11 @@
package org.eclipse.m2e.refactoring.exclude;
import org.apache.maven.project.MavenProject;
-import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
-import org.eclipse.m2e.editor.composites.PomHierarchyComposite;
+import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite;
import org.eclipse.m2e.refactoring.Messages;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
@@ -128,7 +126,7 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL
private void updateState() {
ExcludeArtifactRefactoring refactoring = (ExcludeArtifactRefactoring) getRefactoring();
if (hierarchy.getSelection()) {
- MavenProject project = fromSelection(pomHierarchy.getSelection());
+ MavenProject project = pomHierarchy.fromSelection();
updateStatusBar(project);
refactoring.setExclusionPoint(project);
} else {
@@ -145,7 +143,7 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL
setStatus(Messages.ExcludeWizardPage_errorNonWorkspacePom);
setPageComplete(false);
} else if((project = isAboveDependencyManagement(project)) != null) {
- setStatus(NLS.bind("Dependencies managed in {0}.",
+ setStatus(NLS.bind(Messages.ExcludeWizardPage_dependenciesManagedIn,
toString(project)));
setPageComplete(false);
} else {
@@ -161,16 +159,6 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL
updateState();
}
- private MavenProject fromSelection(ISelection selection) {
- if(selection instanceof IStructuredSelection) {
- Object obj = ((IStructuredSelection) selection).getFirstElement();
- if(obj instanceof MavenProject) {
- return (MavenProject) obj;
- }
- }
- return null;
- }
-
private MavenProject isAboveDependencyManagement(MavenProject project) {
for(MavenProject cProject : pomHierarchy.getHierarchy()) {
if(project == cProject) {
diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties
index bf990e26..729960bc 100644
--- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties
+++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties
@@ -10,6 +10,7 @@ ExcludeArtifactRefactoring_errorCreatingRefactoring=Errors occurred creating ref
ExcludeArtifactRefactoring_failedToLocateArtifact=Unable to locate source for dependency {0} in the workspace.
ExcludeArtifactRefactoring_failedToLocatePom=Failed to locate pom in workspace for: {0}
ExcludeArtifactRefactoring_noTargets=Unable to locate source for dependency.
+ExcludeWizardPage_dependenciesManagedIn=Dependencies managed in {0}.
ExcludeWizardPage_errorNonWorkspacePom=Changes must occur within the workspace
ExcludeWizardPage_errorSelectPom=Select a pom in the workspace.
ExcludeWizardPage_location=Select pom to place exclusion

Back to the top