Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilos Kleint2011-03-16 06:41:25 +0000
committerMilos Kleint2011-03-18 07:35:08 +0000
commit46d74526611a22dfc17099478c5843180c080a6d (patch)
treea190d05acd6b35496babdaea0684140ab613871c
parente54306e6d65590a4240615cea7f1764950cb46f2 (diff)
downloadm2e-core-46d74526611a22dfc17099478c5843180c080a6d.tar.gz
m2e-core-46d74526611a22dfc17099478c5843180c080a6d.tar.xz
m2e-core-46d74526611a22dfc17099478c5843180c080a6d.zip
the final step of removing emf pom model from the editor
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/EditDependencyDialog.java33
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java381
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependencyLabelProvider.java84
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java18
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/DependenciesPage.java16
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java109
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditorPage.java201
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/OverviewPage.java21
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/ValueProvider.java1
-rw-r--r--org.eclipse.m2e.integration.tests.common/src/org/eclipse/m2e/integration/tests/common/UIIntegrationTestCase.java18
10 files changed, 381 insertions, 501 deletions
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/EditDependencyDialog.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/EditDependencyDialog.java
index 2f1fb208..8426f4ef 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/EditDependencyDialog.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/EditDependencyDialog.java
@@ -14,15 +14,16 @@ package org.eclipse.m2e.core.ui.internal.dialogs;
import static org.eclipse.m2e.core.ui.internal.util.Util.nvl;
import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*;
+import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.text.IDocument;
import org.eclipse.m2e.core.ui.internal.Messages;
+import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation;
import org.eclipse.m2e.core.ui.internal.editing.PomHelper;
import org.eclipse.m2e.core.ui.internal.search.util.Packaging;
import org.eclipse.m2e.core.ui.internal.util.M2EUIUtils;
import org.eclipse.m2e.core.ui.internal.util.ProposalUtil;
-import org.eclipse.m2e.model.edit.pom.Dependency;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -76,6 +77,8 @@ public class EditDependencyDialog extends AbstractMavenDialog {
private final boolean dependencyManagement;
+ private Operation resultOperation;
+
/**
*
* @param parent
@@ -195,32 +198,38 @@ public class EditDependencyDialog extends AbstractMavenDialog {
return superComposite;
}
+
+ public Operation getEditOperation() {
+ return resultOperation;
+ }
protected void computeResult() {
- try {
- performOnDOMDocument(new OperationTuple(document, new Operation() {
+ final String groupId = valueOrNull(groupIdText.getText());
+ final String artifactId = valueOrNull(artifactIdText.getText());
+ final String version = valueOrNull(versionText.getText());
+ final String type = valueOrNull(typeCombo.getText());
+ final String scope = valueOrNull(scopeCombo.getText());
+ final String classifier = valueOrNull(classifierText.getText());
+ final String system = valueOrNull(systemPathText.getText());
+ final boolean optional = optionalButton.getSelection();
+ resultOperation = new Operation() {
public void process(Document document) {
Element depsEl = dependencyManagement ? getChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT, DEPENDENCIES) : getChild(document.getDocumentElement(), DEPENDENCIES);
- Element dep = PomHelper.addOrUpdateDependency(depsEl, valueOrNull(groupIdText.getText()),
- valueOrNull(artifactIdText.getText()), valueOrNull(versionText.getText()),
- valueOrNull(typeCombo.getText()), valueOrNull(scopeCombo.getText()), valueOrNull(classifierText.getText()));
- String system = valueOrNull(systemPathText.getText());
+ Element dep = PomHelper.addOrUpdateDependency(depsEl, groupId,
+ artifactId, version,
+ type, scope, classifier);
if (system != null) {
setText(getChild(dep, SYSTEM_PATH), system);
} else {
removeChild(dep, findChild(dep, SYSTEM_PATH));
}
- boolean optional = optionalButton.getSelection();
if (optional) {
setText(getChild(dep, OPTIONAL), Boolean.toString(optional));
} else {
removeChild(dep, findChild(dep, OPTIONAL));
}
}
- }));
- } catch (Exception e) {
- LOG.error("error updating dependency", e);
- }
+ };
}
private String valueOrNull(String value) {
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 f7ddab6e..bfbcbde2 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
@@ -21,14 +21,13 @@ import java.util.LinkedList;
import java.util.List;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -59,10 +58,6 @@ import org.eclipse.m2e.editor.pom.MavenPomEditorPage;
import org.eclipse.m2e.editor.pom.SearchControl;
import org.eclipse.m2e.editor.pom.SearchMatcher;
import org.eclipse.m2e.editor.pom.ValueProvider;
-import org.eclipse.m2e.model.edit.pom.Dependency;
-import org.eclipse.m2e.model.edit.pom.DependencyManagement;
-import org.eclipse.m2e.model.edit.pom.Model;
-import org.eclipse.m2e.model.edit.pom.PomPackage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.ModifyEvent;
@@ -91,8 +86,6 @@ import org.w3c.dom.Element;
public class DependenciesComposite extends Composite {
private static final Logger log = LoggerFactory.getLogger(DependenciesComposite.class);
- protected static PomPackage POM_PACKAGE = PomPackage.eINSTANCE;
-
protected MavenPomEditorPage editorPage;
MavenPomEditor pomEditor;
@@ -120,10 +113,6 @@ public class DependenciesComposite extends Composite {
Action openWebPageAction;
- // model
-
- Model model;
-
final DependencyLabelProvider dependencyLabelProvider = new DependencyLabelProvider(true);
final DependencyLabelProvider dependencyManagementLabelProvider = new DependencyLabelProvider();
@@ -138,6 +127,10 @@ public class DependenciesComposite extends Composite {
DependenciesComparator<Dependency> dependencyManagementComparator;
+ private List<DependenciesComposite.Dependency> dependencies;
+ private List<DependenciesComposite.Dependency> manageddependencies;
+
+
public DependenciesComposite(Composite composite, MavenPomEditorPage editorPage, int flags, MavenPomEditor pomEditor) {
super(composite, flags);
this.editorPage = editorPage;
@@ -182,7 +175,7 @@ public class DependenciesComposite extends Composite {
public void widgetSelected(SelectionEvent e) {
final List<Object> dependencyList = dependenciesEditor.getSelection();
try {
- performOnDOMDocument(new OperationTuple(editorPage.getPomEditor().getDocument(), new Operation() {
+ editorPage.performEditOperation( new Operation() {
public void process(Document document) {
Element deps = findChild(document.getDocumentElement(), DEPENDENCIES);
if (deps == null) {
@@ -192,18 +185,17 @@ public class DependenciesComposite extends Composite {
for (Object dependency : dependencyList) {
if (dependency instanceof Dependency) {
Element dep = findChild(deps, DEPENDENCY,
- childEquals(GROUP_ID, ((Dependency)dependency).getGroupId()),
- childEquals(ARTIFACT_ID, ((Dependency)dependency).getArtifactId()));
+ childEquals(GROUP_ID, ((Dependency)dependency).groupId),
+ childEquals(ARTIFACT_ID, ((Dependency)dependency).artifactId));
removeChild(deps, dep);
}
}
removeIfNoChildElement(deps);
}
- }));
- } catch (Exception x) {
- log.error("error removing dependencies", x);
+ }, log, "error removing dependencies");
+ } finally {
+ setDependenciesInput();
}
- setDependenciesInput();
}
});
@@ -214,10 +206,14 @@ public class DependenciesComposite extends Composite {
Dependency dependency = (Dependency) selection;
EditDependencyDialog d = new EditDependencyDialog(getShell(), false, editorPage
.getProject(), editorPage.getPomEditor().getMavenProject(), editorPage.getPomEditor().getDocument());
- d.setDependency(dependency);
+ d.setDependency(toApacheDependency(dependency));
if(d.open() == Window.OK) {
- setDependenciesInput();
- dependenciesEditor.setSelection(Collections.singletonList((Object) dependency));
+ try {
+ editorPage.performEditOperation(d.getEditOperation(), log, "Error updating dependency");
+ } finally {
+ setDependenciesInput();
+ dependenciesEditor.setSelection(Collections.singletonList((Object) dependency));
+ }
}
} else if (selection instanceof org.apache.maven.model.Dependency) {
/*
@@ -225,6 +221,7 @@ public class DependenciesComposite extends Composite {
*/
}
}
+
});
dependenciesSection.setClient(dependenciesEditor);
@@ -250,30 +247,23 @@ public class DependenciesComposite extends Composite {
getShell(), Messages.DependenciesComposite_action_selectDependency, editorPage.getPomEditor().getMavenProject(), editorPage.getProject(), false);
if(addDepDialog.open() == Window.OK) {
- IndexedArtifactFile dep = (IndexedArtifactFile) addDepDialog.getFirstResult();
- final org.apache.maven.model.Dependency dependency = dep.getDependency();
- String selectedScope = addDepDialog.getSelectedScope();
- dependency.setScope(selectedScope);
-
- if (dep.version == null) {
- dependency.setVersion(null);
- }
+ final IndexedArtifactFile dep = (IndexedArtifactFile) addDepDialog.getFirstResult();
+ final String selectedScope = addDepDialog.getSelectedScope();
try {
- performOnDOMDocument(new OperationTuple(editorPage.getPomEditor().getDocument(), new Operation() {
+ editorPage.performEditOperation(new Operation() {
public void process(Document document) {
Element depsEl = getChild(document.getDocumentElement(), DEPENDENCIES);
PomHelper.addOrUpdateDependency(depsEl,
- dependency.getGroupId(), dependency.getArtifactId(),
- dependency.getVersion(), dependency.getType(), dependency.getScope(), dependency.getClassifier());
+ dep.group, dep.artifact,
+ dep.version, dep.type, selectedScope, dep.classifier);
}
- }));
- } catch(Exception e1) {
- log.error("errror adding dependency", e1);
- }
-
- setDependenciesInput();
- if (model.getDependencies() != null && model.getDependencies().size() > 0) {
- dependenciesEditor.setSelection(Collections.<Object>singletonList(model.getDependencies().get(model.getDependencies().size() - 1)));
+ }, log, "errror adding dependency");
+ } finally {
+ setDependenciesInput();
+ List<Dependency> deps = getDependencies();
+ if (deps.size() > 0) {
+ dependenciesEditor.setSelection(Collections.<Object>singletonList(deps.get(deps.size() - 1)));
+ }
}
}
}
@@ -393,7 +383,7 @@ public class DependenciesComposite extends Composite {
public void widgetSelected(SelectionEvent e) {
final List<Dependency> dependencyList = dependencyManagementEditor.getSelection();
try {
- performOnDOMDocument(new OperationTuple(editorPage.getPomEditor().getDocument(), new Operation() {
+ editorPage.performEditOperation(new Operation() {
public void process(Document document) {
Element deps = findChild(findChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT), DEPENDENCIES);
if (deps == null) {
@@ -402,15 +392,16 @@ public class DependenciesComposite extends Composite {
}
for (Dependency dependency : dependencyList) {
Element dep = findChild(deps, DEPENDENCY,
- childEquals(GROUP_ID, dependency.getGroupId()),
- childEquals(ARTIFACT_ID, dependency.getArtifactId()));
+ childEquals(GROUP_ID, dependency.groupId),
+ childEquals(ARTIFACT_ID, dependency.artifactId));
removeChild(deps, dep);
}
removeIfNoChildElement(deps);
}
- }));
- } catch (Exception x) {
- log.error("error removing dependencies", x);
+ }, log, "error removing managed dependencies");
+ } finally {
+ setDependencyManagementInput();
+ dependenciesEditor.refresh();
}
}
});
@@ -420,12 +411,16 @@ public class DependenciesComposite extends Composite {
Dependency dependency = dependencyManagementEditor.getSelection().get(0);
EditDependencyDialog d = new EditDependencyDialog(getShell(), true, editorPage
.getProject(), editorPage.getPomEditor().getMavenProject(), editorPage.getPomEditor().getDocument());
- d.setDependency(dependency);
+ d.setDependency(toApacheDependency(dependency));
if(d.open() == Window.OK) {
- setDependencyManagementInput();
- dependencyManagementEditor.setSelection(Collections.singletonList(dependency));
- //refresh this one to update decorations..
- dependenciesEditor.refresh();
+ try {
+ editorPage.performEditOperation(d.getEditOperation(), log, "Error updating dependency");
+ } finally {
+ setDependencyManagementInput();
+ dependencyManagementEditor.setSelection(Collections.singletonList(dependency));
+ //refresh this one to update decorations..
+ dependenciesEditor.refresh();
+ }
}
}
});
@@ -448,36 +443,27 @@ public class DependenciesComposite extends Composite {
final MavenRepositorySearchDialog addDepDialog = MavenRepositorySearchDialog.createSearchDependencyDialog(
getShell(), Messages.DependenciesComposite_action_selectDependency, editorPage.getPomEditor().getMavenProject(), editorPage.getProject(), true);
if(addDepDialog.open() == Window.OK) {
- IndexedArtifactFile dep = (IndexedArtifactFile) addDepDialog.getFirstResult();
- final org.apache.maven.model.Dependency dependency = dep.getDependency();
- String selectedScope = addDepDialog.getSelectedScope();
- dependency.setScope(selectedScope);
- if (dep.version == null) {
- dependency.setVersion(null);
- }
-
+ final IndexedArtifactFile dep = (IndexedArtifactFile) addDepDialog.getFirstResult();
+ final String selectedScope = addDepDialog.getSelectedScope();
try {
- performOnDOMDocument(new OperationTuple(editorPage.getPomEditor().getDocument(), new Operation() {
+ editorPage.performEditOperation(new Operation() {
public void process(Document document) {
Element depsEl = getChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT, DEPENDENCIES);
PomHelper.addOrUpdateDependency(depsEl,
- dependency.getGroupId(), dependency.getArtifactId(),
- dependency.getVersion(), dependency.getType(), dependency.getScope(), dependency.getClassifier());
+ dep.group, dep.artifact,
+ dep.version, dep.type, selectedScope, dep.classifier);
}
- }));
- } catch(Exception e1) {
- log.error("errror adding dependency", e1);
- }
- setDependenciesInput();
- setDependencyManagementInput();
- if (model.getDependencyManagement() != null && model.getDependencyManagement().getDependencies() != null
- && model.getDependencyManagement().getDependencies().size() > 0) {
- List<Dependency> dlist = model.getDependencyManagement().getDependencies();
- dependencyManagementEditor.setSelection(Collections.<Dependency>singletonList(dlist.get(dlist.size() - 1)));
+ }, log, "errror adding dependency");
+ } finally {
+ setDependencyManagementInput();
+ List<Dependency> dlist = getManagedDependencies();
+ if (dlist.size() > 0) {
+ dependencyManagementEditor.setSelection(Collections.<Dependency>singletonList(dlist.get(dlist.size() - 1)));
+ }
+ //refresh this one to update decorations..
+ dependenciesEditor.refresh();
}
-
- //refresh this one to update decorations..
- dependenciesEditor.refresh();
+
}
}
});
@@ -556,15 +542,24 @@ public class DependenciesComposite extends Composite {
@SuppressWarnings("unchecked")
- public void loadData(Model model, ValueProvider<DependencyManagement> dependencyManagementProvider) {
- this.model = model;
- this.dependencyLabelProvider.setPomEditor(editorPage.getPomEditor(), dependencyManagementProvider);
- this.dependencyManagementLabelProvider.setPomEditor(editorPage.getPomEditor(), dependencyManagementProvider);
+ public void loadData() {
+ resetDependencies();
+ resetManagedDependencies();
+ ValueProvider<List<org.apache.maven.model.Dependency>> dmValueProvider = new ValueProvider<List<org.apache.maven.model.Dependency>>() {
+ @Override
+ public List<org.apache.maven.model.Dependency> getValue() {
+ List<org.apache.maven.model.Dependency> toRet = new ArrayList<org.apache.maven.model.Dependency>();
+ for (DependenciesComposite.Dependency d : getManagedDependencies()) {
+ toRet.add(toApacheDependency(d));
+ }
+ return toRet;
+ }
+ };
+ this.dependencyLabelProvider.setPomEditor(editorPage.getPomEditor(), dmValueProvider);
+ this.dependencyManagementLabelProvider.setPomEditor(editorPage.getPomEditor(), dmValueProvider);
setDependenciesInput();
-
- DependencyManagement dependencyManagement = model.getDependencyManagement();
- dependencyManagementEditor.setInput(dependencyManagement == null ? null : dependencyManagement.getDependencies());
+ setDependencyManagementInput();
dependenciesEditor.setReadOnly(editorPage.isReadOnly());
dependencyManagementEditor.setReadOnly(editorPage.isReadOnly());
@@ -574,43 +569,6 @@ public class DependenciesComposite extends Composite {
}
}
- public void updateView(final MavenPomEditorPage editorPage, final Notification notification) {
- EObject object = (EObject) notification.getNotifier();
- Object feature = notification.getFeature();
-
- // XXX event is not received when <dependencies> is deleted in XML
- if(object instanceof Model) {
- Model model2 = (Model) object;
- if((model2.getDependencyManagement() != null && dependencyManagementEditor.getInput() == null)
- || feature == PomPackage.Literals.MODEL__DEPENDENCY_MANAGEMENT) {
- dependencyManagementEditor.setInput(model2.getDependencyManagement() != null ? model2.getDependencyManagement().getDependencies() : null);
- } else if(model2.getDependencyManagement() == null) {
- dependencyManagementEditor.setInput(null);
- }
-
- if((model2.getDependencies() != null && dependenciesEditor.getInput() == null)
- || feature == PomPackage.Literals.MODEL__DEPENDENCIES) {
- setDependenciesInput();
- } else if(model2.getDependencies() == null) {
- setDependenciesInput();
- }
- dependenciesEditor.refresh();
- dependencyManagementEditor.refresh();
- }
-
- if(object instanceof DependencyManagement) {
- if(dependencyManagementEditor.getInput() == null || feature == PomPackage.Literals.DEPENDENCY_MANAGEMENT__DEPENDENCIES) {
- dependencyManagementEditor.setInput(((DependencyManagement) object).getDependencies());
- }
- dependencyManagementEditor.refresh();
- //refresh this one to update decorations..
- dependenciesEditor.refresh();
- }
- if (object instanceof Dependency) {
- dependenciesEditor.refresh();
- dependencyManagementEditor.refresh();
- }
- }
public void setSearchControl(SearchControl searchControl) {
if(this.searchControl != null) {
@@ -620,23 +578,26 @@ public class DependenciesComposite extends Composite {
this.searchMatcher = new SearchMatcher(searchControl);
this.searchFilter = new DependencyFilter(searchMatcher);
this.searchControl = searchControl;
- this.searchControl.getSearchText().addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- selectDepenendencies(dependenciesEditor, model, POM_PACKAGE.getModel_Dependencies());
- EObject parent = model.getDependencyManagement() != null ? model.getDependencyManagement() : null;
- selectDepenendencies(dependencyManagementEditor, parent,
- POM_PACKAGE.getDependencyManagement_Dependencies());
- }
-
- @SuppressWarnings({"unchecked", "rawtypes"})
- private void selectDepenendencies(PropertiesListComposite<?> dependencyManagementEditor, EObject parent,
- EStructuralFeature feature) {
- if(parent != null) {
- dependencyManagementEditor.setSelection((List) parent.eGet(feature));
- dependencyManagementEditor.refresh();
- }
- }
- });
+
+ //mkleint: not sure why this is here. searching in the control is both showing less entries and selecting them.
+ //it feels like one of these has to go.
+// this.searchControl.getSearchText().addModifyListener(new ModifyListener() {
+// public void modifyText(ModifyEvent e) {
+// selectDepenendencies(dependenciesEditor, model, POM_PACKAGE.getModel_Dependencies());
+// EObject parent = model.getDependencyManagement() != null ? model.getDependencyManagement() : null;
+// selectDepenendencies(dependencyManagementEditor, parent,
+// POM_PACKAGE.getDependencyManagement_Dependencies());
+// }
+//
+// @SuppressWarnings({"unchecked", "rawtypes"})
+// private void selectDepenendencies(PropertiesListComposite<?> editor, EObject parent,
+// EStructuralFeature feature) {
+// if(parent != null) {
+// editor.setSelection((List) parent.eGet(feature));
+// editor.refresh();
+// }
+// }
+// });
//we add filter here as the default behaviour is to filter..
TableViewer viewer = dependenciesEditor.getViewer();
viewer.addFilter(searchFilter);
@@ -676,7 +637,7 @@ public class DependenciesComposite extends Composite {
public boolean select(Viewer viewer, Object parentElement, Object element) {
if(element instanceof Dependency) {
Dependency d = (Dependency) element;
- return searchMatcher.isMatchingArtifact(d.getGroupId(), d.getArtifactId());
+ return searchMatcher.isMatchingArtifact(d.groupId, d.artifactId);
} else if (element instanceof org.apache.maven.model.Dependency) {
org.apache.maven.model.Dependency dependency = (org.apache.maven.model.Dependency) element;
return searchMatcher.isMatchingArtifact(dependency.getGroupId(), dependency.getArtifactId());
@@ -714,21 +675,113 @@ public class DependenciesComposite extends Composite {
return;
}
- final ManageDependenciesDialog manageDepDialog = new ManageDependenciesDialog(getShell(), model, hierarchy,
+ final ManageDependenciesDialog manageDepDialog = new ManageDependenciesDialog(getShell(), new ValueProvider<List<org.apache.maven.model.Dependency>>() {
+ @Override
+ public List<org.apache.maven.model.Dependency> getValue() {
+ List<org.apache.maven.model.Dependency> toRet = new ArrayList<org.apache.maven.model.Dependency>();
+ for (DependenciesComposite.Dependency d : getDependencies()) {
+ toRet.add(toApacheDependency(d));
+ }
+ return toRet;
+ }
+ }, hierarchy,
dependenciesEditor.getSelection());
manageDepDialog.open();
}
protected void setDependencyManagementInput() {
- DependencyManagement dependencyManagement = model.getDependencyManagement();
- dependencyManagementEditor.setInput(dependencyManagement == null ? null : dependencyManagement.getDependencies());
+ resetManagedDependencies();
+ final List<Dependency> managed = getManagedDependencies();
+ dependencyManagementEditor.setInput(managed);
+ }
+
+ /**
+ * only to be called within the perform* methods..
+ * @param depEl
+ * @return
+ */
+ private Dependency toDependency(Element depEl) {
+ Dependency dep = new Dependency();
+ dep.groupId = getTextValue(findChild(depEl, GROUP_ID));
+ dep.artifactId = getTextValue(findChild(depEl, ARTIFACT_ID));
+ dep.version = getTextValue(findChild(depEl, VERSION));
+ dep.type = getTextValue(findChild(depEl, TYPE));
+ dep.scope = getTextValue(findChild(depEl, SCOPE));
+ dep.classifier = getTextValue(findChild(depEl, CLASSIFIER));
+ dep.systemPath = getTextValue(findChild(depEl, SYSTEM_PATH));
+ dep.optional = Boolean.parseBoolean(getTextValue(findChild(depEl, OPTIONAL)));
+ return dep;
+ }
+
+ private final Object MAN_DEP_LOCK = new Object();
+
+ private List<Dependency> getManagedDependencies() {
+ synchronized (MAN_DEP_LOCK) {
+ if (manageddependencies == null) {
+ manageddependencies = new ArrayList<Dependency>();
+ try {
+ performOnDOMDocument(new OperationTuple(pomEditor.getDocument(), new Operation() {
+ public void process(Document document) {
+ Element dms = findChild(findChild(document.getDocumentElement(), DEPENDENCY_MANAGEMENT), DEPENDENCIES);
+ for (Element depEl : findChilds(dms, DEPENDENCY)) {
+ Dependency dep = toDependency(depEl);
+ if (dep != null) {
+ manageddependencies.add(dep);
+ }
+ }
+ }
+ }, true));
+ } catch (Exception ex) {
+ log.error("Error loading managed dependencies", ex);
+ }
+ }
+ return manageddependencies;
+ }
+ }
+
+ private void resetManagedDependencies() {
+ synchronized (MAN_DEP_LOCK) {
+ manageddependencies = null;
+ }
+ }
+
+
+ private final Object DEP_LOCK = new Object();
+ private List<Dependency> getDependencies() {
+ synchronized (DEP_LOCK) {
+ if (dependencies == null) {
+ dependencies = new ArrayList<Dependency>();
+ try {
+ performOnDOMDocument(new OperationTuple(pomEditor.getDocument(), new Operation() {
+ public void process(Document document) {
+ Element dms = findChild(document.getDocumentElement(), DEPENDENCIES);
+ for (Element depEl : findChilds(dms, DEPENDENCY)) {
+ Dependency dep = toDependency(depEl);
+ if (dep != null) {
+ dependencies.add(dep);
+ }
+ }
+ }
+ }, true));
+ } catch (Exception ex) {
+ log.error("Error loading dependencies", ex);
+ }
+ }
+ return dependencies;
+ }
+ }
+
+ private void resetDependencies() {
+ synchronized (DEP_LOCK) {
+ dependencies = null;
+ }
}
protected void setDependenciesInput() {
+ resetDependencies();
List<Object> deps = new ArrayList<Object>();
- if (model.getDependencies() != null) {
- deps.addAll(model.getDependencies());
- }
+ deps.addAll(getDependencies());
+
if (showInheritedDependencies) {
/*
@@ -743,11 +796,11 @@ public class DependenciesComposite extends Composite {
}
for (org.apache.maven.model.Dependency mavenDep : allDeps) {
boolean found = false;
- Iterator<Dependency> iter = model.getDependencies().iterator();
+ Iterator<Dependency> iter = getDependencies().iterator();
while (!found && iter.hasNext()) {
Dependency m2eDep = iter.next();
- if (mavenDep.getGroupId().equals(m2eDep.getGroupId())
- && mavenDep.getArtifactId().equals(m2eDep.getArtifactId())) {
+ if (mavenDep.getGroupId().equals(m2eDep.groupId)
+ && mavenDep.getArtifactId().equals(m2eDep.artifactId)) {
found = true;
}
}
@@ -871,12 +924,10 @@ public class DependenciesComposite extends Composite {
protected void updateManageButton() {
boolean hasNonManaged = false;
//MNGECLIPSE-2675 only enable when there are unmanaged dependencies
- if (model.getDependencies() != null) {
- for (Dependency d : model.getDependencies()) {
- if (d.getVersion() != null) {
- hasNonManaged = true;
- break;
- }
+ for(Dependency d : getDependencies()) {
+ if(d.version != null) {
+ hasNonManaged = true;
+ break;
}
}
manage.setEnabled(!readOnly && hasNonManaged);
@@ -896,6 +947,30 @@ public class DependenciesComposite extends Composite {
dependenciesEditor.refresh();
}
+ private org.apache.maven.model.Dependency toApacheDependency(Dependency dependency) {
+ org.apache.maven.model.Dependency toRet = new org.apache.maven.model.Dependency();
+ toRet.setArtifactId(dependency.artifactId);
+ toRet.setGroupId(dependency.groupId);
+ toRet.setClassifier(dependency.classifier);
+ toRet.setScope(dependency.scope);
+ toRet.setOptional(dependency.optional);
+ toRet.setSystemPath(dependency.systemPath);
+ toRet.setType(dependency.type);
+ toRet.setVersion(dependency.version);
+ return toRet;
+ }
+ class Dependency {
+ String artifactId;
+ String groupId;
+ String version;
+ String type;
+ String classifier;
+ String scope;
+ String systemPath;
+ boolean optional;
+
+ public Dependency() {}
+ }
}
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependencyLabelProvider.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependencyLabelProvider.java
index 005dd0b2..107ba897 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependencyLabelProvider.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependencyLabelProvider.java
@@ -12,8 +12,10 @@
package org.eclipse.m2e.editor.composites;
import java.util.Collection;
+import java.util.List;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.InputLocation;
import org.apache.maven.project.MavenProject;
@@ -30,9 +32,6 @@ import org.eclipse.m2e.editor.MavenEditorImages;
import org.eclipse.m2e.editor.internal.Messages;
import org.eclipse.m2e.editor.pom.MavenPomEditor;
import org.eclipse.m2e.editor.pom.ValueProvider;
-import org.eclipse.m2e.model.edit.pom.Dependency;
-import org.eclipse.m2e.model.edit.pom.Exclusion;
-import org.eclipse.m2e.model.edit.pom.Extension;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
@@ -53,8 +52,8 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
private final boolean showManagedOverlay;
- private ValueProvider<org.eclipse.m2e.model.edit.pom.DependencyManagement> managementProvider;
-
+ private ValueProvider<List<org.apache.maven.model.Dependency>> valueProvider;
+
public DependencyLabelProvider() {
this(false);
}
@@ -64,11 +63,10 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
this.showManagedOverlay = showManagedOverlay;
}
- public void setPomEditor(MavenPomEditor pomEditor, ValueProvider<org.eclipse.m2e.model.edit.pom.DependencyManagement> dependencyManagementProvider) {
+ public void setPomEditor(MavenPomEditor pomEditor, ValueProvider<List<org.apache.maven.model.Dependency>> valueProvider) {
assert pomEditor != null;
- assert managementProvider != null;
this.pomEditor = pomEditor;
- this.managementProvider = dependencyManagementProvider;
+ this.valueProvider = valueProvider;
}
public void setShowGroupId(boolean showGroupId) {
@@ -78,7 +76,9 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
// IColorProvider
public Color getForeground(Object element) {
- if (element instanceof org.apache.maven.model.Dependency) {
+ //a workaround to handle display in ManagedDependenciesDialog
+ //TODO shall have a switch of it's own.. the curse of blind code reuse
+ if (showManagedOverlay && element instanceof org.apache.maven.model.Dependency) {
//mkleint: let's just assume all maven Dependency instances are inherited
return Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY);
}
@@ -89,7 +89,7 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
return null;
}
- private String findManagedVersion(Dependency dep) {
+ private String findManagedVersion(DependenciesComposite.Dependency dep) {
if (pomEditor != null) {
MavenProject mp = pomEditor.getMavenProject();
String version = null;
@@ -98,7 +98,7 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
DependencyManagement dm = mp.getDependencyManagement();
if(dm != null) {
for(org.apache.maven.model.Dependency d : dm.getDependencies()) {
- if(d.getGroupId().equals(dep.getGroupId()) && d.getArtifactId().equals(dep.getArtifactId())) {
+ if(d.getGroupId().equals(dep.groupId) && d.getArtifactId().equals(dep.artifactId)) {
//based on location, try finding a match in the live Model
InputLocation location = d.getLocation("artifactId");
if (location != null) {
@@ -112,14 +112,13 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
}
}
}
- org.eclipse.m2e.model.edit.pom.DependencyManagement dm = managementProvider.getValue();
- if (dm != null && dm.getDependencies() != null) {
- for (Dependency modelDep : dm.getDependencies()) {
+ List<org.apache.maven.model.Dependency> dm = valueProvider.getValue();
+ for (org.apache.maven.model.Dependency modelDep : dm) {
String modelGroupId = modelDep.getGroupId();
String modelArtifactId = modelDep.getArtifactId();
String modelVersion = modelDep.getVersion();
- if (modelGroupId != null && modelGroupId.equals(dep.getGroupId()) && modelArtifactId != null
- && modelArtifactId.equals(dep.getArtifactId())) {
+ if (modelGroupId != null && modelGroupId.equals(dep.groupId) && modelArtifactId != null
+ && modelArtifactId.equals(dep.artifactId)) {
if (version != null && (modelVersion == null || modelVersion.contains("${"))) {
//prefer the resolved version to the model one if the model version as expressions..
return version;
@@ -127,15 +126,14 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
return modelVersion;
}
}
- }
}
return null;
}
public StyledString getStyledText(Object element) {
- if(element instanceof Dependency) {
+ if(element instanceof DependenciesComposite.Dependency) {
StyledString ss = new StyledString(getText(element));
- Dependency dep = (Dependency) element;
+ DependenciesComposite.Dependency dep = (DependenciesComposite.Dependency) element;
String version = findManagedVersion(dep);
if (version != null) {
ss.append(NLS.bind(Messages.DependencyLabelProvider_0, version), StyledString.DECORATIONS_STYLER);
@@ -149,39 +147,47 @@ public class DependencyLabelProvider extends LabelProvider implements IColorProv
@Override
public String getText(Object element) {
- if(element instanceof Dependency) {
- Dependency dependency = (Dependency) element;
- return getText(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), //
- dependency.getClassifier(), dependency.getType(), dependency.getScope());
+ if(element instanceof DependenciesComposite.Dependency) {
+ DependenciesComposite.Dependency dependency = (DependenciesComposite.Dependency) element;
+ return getText(dependency.groupId, dependency.artifactId, dependency.version, //
+ dependency.classifier, dependency.type, dependency.scope);
} else if (element instanceof org.apache.maven.model.Dependency) {
org.apache.maven.model.Dependency dependency = (org.apache.maven.model.Dependency) element;
return getText(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(),
dependency.getClassifier(), dependency.getType(), dependency.getScope());
- } else if(element instanceof Exclusion) {
- Exclusion exclusion = (Exclusion) element;
- return getText(exclusion.getGroupId(), exclusion.getArtifactId(), null, null, null, null);
- } else if(element instanceof Extension) {
- Extension extension = (Extension) element;
- return getText(extension.getGroupId(), extension.getArtifactId(), extension.getVersion(), null, null, null);
+// } else if(element instanceof Exclusion) {
+// Exclusion exclusion = (Exclusion) element;
+// return getText(exclusion.getGroupId(), exclusion.getArtifactId(), null, null, null, null);
+// } else if(element instanceof Extension) {
+// Extension extension = (Extension) element;
+// return getText(extension.getGroupId(), extension.getArtifactId(), extension.getVersion(), null, null, null);
}
return super.getText(element);
}
@Override
public Image getImage(Object element) {
- if(element instanceof Dependency) {
- Dependency dependency = (Dependency) element;
+ if(element instanceof DependenciesComposite.Dependency) {
+ DependenciesComposite.Dependency dependency = (DependenciesComposite.Dependency) element;
boolean isManaged = showManagedOverlay && findManagedVersion(dependency) != null;
- return getImage(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), isManaged);
+ return getImage(dependency.groupId, dependency.artifactId, dependency.version, isManaged);
} else if (element instanceof org.apache.maven.model.Dependency) {
- //mkleint: all MavenDependency instances are inherited
+
+
+ if (!showManagedOverlay) {
+ org.apache.maven.model.Dependency dependency = (Dependency) element;
+ //a workaround to handle display in ManagedDependenciesDialog
+ //TODO shall have a switch of it's own.. the curse of blind code reuse
+ return getImage(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), false);
+ }
+ //mkleint: all MavenDependency instances are inherited but only in *dependenciesComposite*
return MavenEditorImages.IMG_INHERITED;
- }else if(element instanceof Exclusion) {
- Exclusion exclusion = (Exclusion) element;
- return getImage(exclusion.getGroupId(), exclusion.getArtifactId(), null, false);
- } else if(element instanceof Extension) {
- Extension extension = (Extension) element;
- return getImage(extension.getGroupId(), extension.getArtifactId(), extension.getVersion(), false);
+// }else if(element instanceof Exclusion) {
+// Exclusion exclusion = (Exclusion) element;
+// return getImage(exclusion.getGroupId(), exclusion.getArtifactId(), null, false);
+// } else if(element instanceof Extension) {
+// Extension extension = (Extension) element;
+// return getImage(extension.getGroupId(), extension.getArtifactId(), extension.getVersion(), false);
}
return null;
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 e9e3a4b4..50126863 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
@@ -27,6 +27,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
+import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
@@ -54,8 +55,7 @@ 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.model.edit.pom.Dependency;
-import org.eclipse.m2e.model.edit.pom.Model;
+import org.eclipse.m2e.editor.pom.ValueProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
@@ -89,8 +89,6 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
private TableViewer dependenciesViewer;
- private final Model model;
-
private final LinkedList<MavenProject> projectHierarchy;
private PomHierarchyComposite pomHierarchy;
@@ -101,24 +99,26 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
protected boolean isTest = false;
+ private ValueProvider<List<Dependency>> modelVProvider;
+
/**
* Hierarchy is a LinkedList representing the hierarchy relationship between POM represented by model and its parents.
* The head of the list should be the child, while the tail should be the root parent, with the others in between.
*/
- public ManageDependenciesDialog(Shell parent, Model model, LinkedList<MavenProject> hierarchy) {
- this(parent, model, hierarchy, null);
+ public ManageDependenciesDialog(Shell parent, ValueProvider<List<Dependency>> modelVProvider, LinkedList<MavenProject> hierarchy) {
+ this(parent, modelVProvider, hierarchy, null);
}
- public ManageDependenciesDialog(Shell parent, Model model, LinkedList<MavenProject> hierarchy,
+ public ManageDependenciesDialog(Shell parent, ValueProvider<List<Dependency>> modelVProvider, LinkedList<MavenProject> hierarchy,
List<Object> selection) {
super(parent, DIALOG_SETTINGS);
setShellStyle(getShellStyle() | SWT.RESIZE);
setTitle(Messages.ManageDependenciesDialog_dialogTitle);
- this.model = model;
this.projectHierarchy = hierarchy;
this.originalSelection = selection;
+ this.modelVProvider = modelVProvider;
}
/* (non-Javadoc)
@@ -208,7 +208,7 @@ public class ManageDependenciesDialog extends AbstractMavenDialog {
dependenciesViewer.setLabelProvider(new DependencyLabelProvider());
dependenciesViewer.setContentProvider(new ListEditorContentProvider<Dependency>());
//MNGECLIPSE-2675 only show the dependencies not already managed (decide just by absence of the version element
- List<Dependency> deps = model.getDependencies();
+ List<Dependency> deps = modelVProvider.getValue();
List<Dependency> nonManaged = new ArrayList<Dependency>();
if (deps != null) {
for (Dependency d : deps) {
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/DependenciesPage.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/DependenciesPage.java
index 78244b6f..42762694 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/DependenciesPage.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/DependenciesPage.java
@@ -90,24 +90,10 @@ public class DependenciesPage extends MavenPomEditorPage {
}
public void loadData() {
-
-
- ValueProvider<DependencyManagement> dependencyManagementProvider = new ValueProvider<DependencyManagement>() {
- public DependencyManagement getValue() {
- return model.getDependencyManagement();
- }
- };
-
- dependenciesComposite.loadData(model, dependencyManagementProvider);
+ dependenciesComposite.loadData();
}
public void updateView(final Notification notification) {
- Display.getDefault().asyncExec(new Runnable(){
- public void run(){
- dependenciesComposite.updateView(DependenciesPage.this, notification);
- }
- });
-
}
/* (non-Javadoc)
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
index ef1d961c..75b396d9 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
@@ -11,14 +11,9 @@
package org.eclipse.m2e.editor.pom;
-import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.io.StringWriter;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
@@ -26,7 +21,6 @@ import java.util.Map;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.IOUtil;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -34,7 +28,6 @@ import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IStorage;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
@@ -42,7 +35,6 @@ import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
@@ -51,7 +43,6 @@ import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.command.CommandStackListener;
import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.text.IDocument;
@@ -64,7 +55,6 @@ import org.eclipse.jface.text.source.IVerticalRuler;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.embedder.ArtifactKey;
-import org.eclipse.m2e.core.embedder.MavenModelManager;
import org.eclipse.m2e.core.project.IMavenProjectChangedListener;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.MavenProjectChangedEvent;
@@ -73,13 +63,8 @@ import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
import org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.MavenPathStorageEditorInput;
import org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.MavenStorageEditorInput;
import org.eclipse.m2e.core.ui.internal.actions.SelectionUtil;
-import org.eclipse.m2e.core.ui.internal.util.Util;
-import org.eclipse.m2e.core.ui.internal.util.Util.FileStoreEditorInputStub;
import org.eclipse.m2e.editor.MavenEditorPlugin;
import org.eclipse.m2e.editor.internal.Messages;
-import org.eclipse.m2e.model.edit.pom.Model;
-import org.eclipse.m2e.model.edit.pom.util.PomResourceFactoryImpl;
-import org.eclipse.m2e.model.edit.pom.util.PomResourceImpl;
import org.eclipse.search.ui.text.ISearchEditorAccess;
import org.eclipse.search.ui.text.Match;
import org.eclipse.swt.widgets.Composite;
@@ -92,7 +77,6 @@ import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IShowEditorInput;
-import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IWindowListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
@@ -107,10 +91,7 @@ import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.IDocumentProviderExtension3;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.model.ModelLifecycleEvent;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLifecycleListener;
import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.core.internal.undo.IStructuredTextUndoManager;
@@ -158,8 +139,6 @@ public class MavenPomEditor extends FormEditor implements IResourceChangeListene
List<MavenPomEditorPage> pages = new ArrayList<MavenPomEditorPage>();
- private Model projectDocument;
-
private Map<String, org.sonatype.aether.graph.DependencyNode> rootNodes = new HashMap<String, org.sonatype.aether.graph.DependencyNode>();
IDOMModel structuredModel;
@@ -336,19 +315,10 @@ public class MavenPomEditor extends FormEditor implements IResourceChangeListene
}
public void reload() {
- if (projectDocument != null) {
- projectDocument.eResource().unload();
- }
- projectDocument = null;
- try {
- readProjectDocument();
- //fix for resetting the pom document after an external change
-// sourcePage.getDocumentProvider().resetDocument(sourcePage.getEditorInput());
- } catch(CoreException e) {
- log.error(e.getMessage(), e);
- }
- for(MavenPomEditorPage page : pages) {
- page.reload();
+ int active = getActivePage();
+ if (active > -1) {
+ MavenPomEditorPage page = getPages().get(active);
+ page.loadData();
}
if(isEffectiveActive()){
loadEffectivePOM();
@@ -682,11 +652,6 @@ public class MavenPomEditor extends FormEditor implements IResourceChangeListene
}
//mkleint: why is this here?
flushCommandStack();
- try {
- readProjectDocument();
- } catch(CoreException e) {
- log.error(e.getMessage(), e);
- }
// TODO activate xml source page if model is empty or have errors
@@ -714,69 +679,6 @@ public class MavenPomEditor extends FormEditor implements IResourceChangeListene
}
}
- // XXX move to MavenModelManager (CommandStack and EditorDomain too)
- public synchronized Model readProjectDocument() throws CoreException {
- if(projectDocument == null) {
- IEditorInput input = getEditorInput();
- if(input instanceof IFileEditorInput) {
- pomFile = ((IFileEditorInput) input).getFile();
- pomFile.refreshLocal(1, null);
-
- ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
- MavenModelManager modelManager = MavenPlugin.getDefault().getMavenModelManager();
- PomResourceImpl resource = modelManager.loadResource(pomFile);
- projectDocument = resource.getModel();
-
- } else if(input instanceof IStorageEditorInput) {
- IStorageEditorInput storageInput = (IStorageEditorInput) input;
- IStorage storage = storageInput.getStorage();
- IPath path = storage.getFullPath();
- if(path == null || !new File(path.toOSString()).exists()) {
- File tempPomFile = null;
- InputStream is = null;
- OutputStream os = null;
- try {
- tempPomFile = File.createTempFile("maven-pom", ".pom"); //$NON-NLS-1$ //$NON-NLS-2$
- os = new FileOutputStream(tempPomFile);
- is = storage.getContents();
- IOUtil.copy(is, os);
- projectDocument = loadModel(tempPomFile.getAbsolutePath());
- } catch(IOException ex) {
- log.error("Can't close stream", ex); //$NON-NLS-1$
- } finally {
- IOUtil.close(is);
- IOUtil.close(os);
- if(tempPomFile != null) {
- tempPomFile.delete();
- }
- }
- } else {
- projectDocument = loadModel(path.toOSString());
- }
-
- } else if(input.getClass().getName().endsWith("FileStoreEditorInput")) { //$NON-NLS-1$
- projectDocument = loadModel(Util.proxy(input, FileStoreEditorInputStub.class).getURI().getPath());
- }
- }
-
- return projectDocument;
- }
-
- private Model loadModel(String path) {
- URI uri = URI.createFileURI(path);
- PomResourceFactoryImpl factory = new PomResourceFactoryImpl();
- PomResourceImpl resource = (PomResourceImpl) factory.createResource(uri);
-
- try {
- resource.load(Collections.EMPTY_MAP);
- return (Model)resource.getContents().get(0);
-
- } catch(Exception ex) {
- log.error("Can't load model " + path, ex); //$NON-NLS-1$
- return null;
-
- }
- }
public synchronized org.sonatype.aether.graph.DependencyNode readDependencyTree(boolean force, String classpath,
IProgressMonitor monitor) throws CoreException {
@@ -858,9 +760,6 @@ public class MavenPomEditor extends FormEditor implements IResourceChangeListene
ResourcesPlugin.getWorkspace().removeResourceChangeListener(MavenPomEditor.this);
- if(projectDocument != null) {
- projectDocument.eResource().unload();
- }
MavenPomEditor.super.dispose();
return Status.OK_STATUS;
}
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditorPage.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditorPage.java
index 9f5d1530..24b2ce54 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditorPage.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditorPage.java
@@ -13,7 +13,6 @@ package org.eclipse.m2e.editor.pom;
import static org.eclipse.m2e.editor.pom.FormUtils.isEmpty;
-import java.util.Iterator;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
@@ -27,11 +26,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
@@ -54,11 +48,7 @@ import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*;
import org.eclipse.m2e.editor.MavenEditorImages;
import org.eclipse.m2e.editor.internal.Messages;
-import org.eclipse.m2e.editor.pom.PropertiesSection.PropertyElement;
import org.eclipse.m2e.editor.xml.internal.FormHoverProvider;
-import org.eclipse.m2e.model.edit.pom.Model;
-import org.eclipse.m2e.model.edit.pom.Parent;
-import org.eclipse.m2e.model.edit.pom.PomPackage;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
@@ -91,7 +81,7 @@ import org.w3c.dom.Node;
* @author Anton Kraev
* @author Eugene Kuleshov
*/
-public abstract class MavenPomEditorPage extends FormPage implements Adapter {
+public abstract class MavenPomEditorPage extends FormPage {
private static final String MODIFY_LISTENER = "MODIFY_LISTENER";
private static final String VALUE_PROVIDER = "VALUE_PROVIDER";
@@ -101,15 +91,6 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
// parent editor
protected final MavenPomEditor pomEditor;
- // model
- protected Model model;
-
- // Notifier target
- protected Notifier target;
-
- // are we already updating model
- protected boolean updatingModel;
-
private boolean updatingModel2 = false;
// have we loaded data?
@@ -117,8 +98,6 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
private InputHistory inputHistory;
- protected static PomPackage POM_PACKAGE = PomPackage.eINSTANCE;
-
private Action selectParentAction;
private IModelStateListener listener;
@@ -157,6 +136,12 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
return pomEditor;
}
+ /**
+ * all edits in the editor to be channeled through this method..
+ * @param operation
+ * @param logger
+ * @param logMessage
+ */
public final void performEditOperation(PomEdits.Operation operation, Logger logger, String logMessage) {
try {
updatingModel2 = true;
@@ -177,16 +162,29 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
selectParentAction = new Action(Messages.MavenPomEditorPage_action_open, MavenEditorImages.PARENT_POM) {
public void run() {
- // XXX listen to parent modification and accordingly enable/disable action
- final Parent parent = model.getParent();
- if(parent!=null && !isEmpty(parent.getGroupId()) && !isEmpty(parent.getArtifactId()) && !isEmpty(parent.getVersion())) {
- new Job(Messages.MavenPomEditorPage_job_opening) {
- protected IStatus run(IProgressMonitor monitor) {
- OpenPomAction.openEditor(parent.getGroupId(), parent.getArtifactId(), parent.getVersion(), monitor);
- return Status.OK_STATUS;
+ final String[] ret = new String[3];
+ try {
+ performOnDOMDocument(new OperationTuple(getPomEditor().getDocument(), new Operation() {
+ public void process(Document document) {
+ Element parent = findChild(document.getDocumentElement(), PARENT);
+ ret[0] = getTextValue(findChild(parent, GROUP_ID));
+ ret[1] = getTextValue(findChild(parent, ARTIFACT_ID));
+ ret[2] = getTextValue(findChild(parent, VERSION));
}
- }.schedule();
+ }, true));
+ // XXX listen to parent modification and accordingly enable/disable action
+ if(!isEmpty(ret[0]) && !isEmpty(ret[1]) && !isEmpty(ret[2])) {
+ new Job(Messages.MavenPomEditorPage_job_opening) {
+ protected IStatus run(IProgressMonitor monitor) {
+ OpenPomAction.openEditor(ret[0], ret[1], ret[2], monitor);
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ }
+ } catch(Exception e) {
+ LOG.error("Error finding parent element", e);
}
+
}
};
toolBarManager.add(selectParentAction);
@@ -218,6 +216,7 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
}
if (active && alreadyShown) {
loadData();
+ updateParentAction();
}
alreadyShown = true;
@@ -238,27 +237,18 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
try {
if(active && !dataLoaded) {
dataLoaded = true;
-// new Job("Loading pom.xml") {
-// protected IStatus run(IProgressMonitor monitor) {
- model = pomEditor.readProjectDocument();
- if(model != null) {
if(getPartControl() != null) {
getPartControl().getDisplay().asyncExec(new Runnable() {
public void run() {
- updatingModel = true;
try {
loadData();
updateParentAction();
- registerListeners();
} catch(Throwable e) {
LOG.error("Error loading data", e); //$NON-NLS-1$
- } finally {
- updatingModel = false;
}
}
});
}
- }
}
@@ -373,77 +363,28 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
}
}
- public Notifier getTarget() {
- return target;
- }
public boolean isAdapterForType(Object type) {
return false;
}
- public void reload() {
- deRegisterListeners();
- boolean oldDataLoaded = dataLoaded;
- dataLoaded = false;
- doLoadData(oldDataLoaded);
- }
-
- public synchronized void notifyChanged(Notification notification) {
- if(updatingModel) {
- return;
- }
-
- updatingModel = true;
- try {
- switch(notification.getEventType()) {
- //TODO: fine-grained notification?
- case Notification.ADD:
- case Notification.MOVE:
- case Notification.REMOVE:
- case Notification.UNSET:
- case Notification.ADD_MANY: //this is for properties (clear/addAll is used for any properties update)
- case Notification.REMOVE_MANY:
- if (getManagedForm() != null) {
- updateView(notification);
- updateParentAction();
- }
- break;
- case Notification.SET: {
- Object newValue = notification.getNewValue();
- Object oldValue = notification.getOldValue();
- if (newValue instanceof String && oldValue instanceof String && newValue.equals(oldValue)) {
- //the idea here is that triggering a view update for something that didn't change is not useful.
- //still there are other notifications that are similar (File>Revert or SCM team update seem to trigger
- // a complete reload of the model, which triggers a cloud of notification events..
- break;
- }
- if (getManagedForm() != null) {
- updateView(notification);
- updateParentAction();
+ private void updateParentAction() {
+ if (selectParentAction != null) {
+ final boolean[] ret = new boolean[1];
+ try {
+ performOnDOMDocument(new OperationTuple(getPomEditor().getDocument(), new Operation() {
+ public void process(Document document) {
+ Element parent = findChild(document.getDocumentElement(), PARENT);
+ String g = getTextValue(findChild(parent, GROUP_ID));
+ String a = getTextValue(findChild(parent, ARTIFACT_ID));
+ String v = getTextValue(findChild(parent, VERSION));
+ ret[0] = g != null && a != null && v != null;
}
- break;
- }
-
- default:
- break;
-
- // case Notification.ADD_MANY:
- // case Notification.REMOVE_MANY:
+ }, true));
+ } catch(Exception e) {
+ ret[0] = false;
}
-
- } catch(Exception ex) {
- LOG.error("Can't update view", ex); //$NON-NLS-1$
- } finally {
- updatingModel = false;
- }
-
- registerListeners();
- }
-
- private void updateParentAction() {
- if (selectParentAction != null && model != null) {
- Parent par = model.getParent();
- if (par != null && par.getGroupId() != null && par.getArtifactId() != null && par.getVersion() != null) {
+ if (ret[0]) {
selectParentAction.setEnabled(true);
} else {
selectParentAction.setEnabled(false);
@@ -518,53 +459,11 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
inputHistory.save();
getPomEditor().getModel().removeModelStateListener(listener);
- deRegisterListeners();
-
super.dispose();
}
- public void setTarget(Notifier newTarget) {
- this.target = newTarget;
- }
-
- public Model getModel() {
- return model;
- }
-
public abstract void loadData();
- public abstract void updateView(Notification notification);
-
- public void registerListeners() {
- if(model!=null) {
- doRegister(model);
-
- for(Iterator<?> it = model.eAllContents(); it.hasNext();) {
- Object next = it.next();
- if (next instanceof EObject)
- doRegister((EObject) next);
- }
- }
- }
-
- private void doRegister(EObject object) {
- if (!object.eAdapters().contains(this)) {
- object.eAdapters().add(this);
- }
- }
-
- public void deRegisterListeners() {
- if(model!=null) {
- model.eAdapters().remove(this);
- for(Iterator<?> it = model.eAllContents(); it.hasNext(); ) {
- Object next = it.next();
- if(next instanceof EObject) {
- EObject object = (EObject) next;
- object.eAdapters().remove(this);
- }
- }
- }
- }
public void setElementValueProvider(Control control, ElementValueProvider provider) {
control.setData(VALUE_PROVIDER, provider);
@@ -726,18 +625,6 @@ public abstract class MavenPomEditorPage extends FormPage implements Adapter {
getEditorSite().registerContextMenu(MavenPomEditor.EDITOR_ID + id, menuMgr, viewer, false);
}
- /*
- * returns added/removed/updated EObject from notification (convenience method for detail forms)
- */
- public static Object getFromNotification(Notification notification) {
- if(notification.getFeature() != null && !(notification.getFeature() instanceof EAttribute)) {
- // for structuralFeatures, return new value (for insert/delete)
- return notification.getNewValue();
- } else {
- // for attributes, return the notifier as it contains all new attributes (attribute modified)
- return notification.getNotifier();
- }
- }
/**
* Adapter for Text, Combo and CCombo widgets
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/OverviewPage.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/OverviewPage.java
index c5b51bc0..9f1640d6 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/OverviewPage.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/OverviewPage.java
@@ -14,6 +14,7 @@ package org.eclipse.m2e.editor.pom;
import static org.eclipse.m2e.editor.pom.FormUtils.nvl;
import static org.eclipse.m2e.editor.pom.FormUtils.setText;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -21,6 +22,7 @@ import java.util.Set;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -572,7 +574,24 @@ public class OverviewPage extends MavenPomEditorPage {
@Override
public void widgetSelected(SelectionEvent e) {
final Set<Object> moduleContainers = new HashSet<Object>();
- for(String module : model.getModules()) {
+ final List<String> modules = new ArrayList<String>();
+ try {
+ performOnDOMDocument(new OperationTuple(getPomEditor().getDocument(), new Operation() {
+ public void process(Document document) {
+ Element modsEl = findChild(document.getDocumentElement(), MODULES);
+ for (Element el : findChilds(modsEl, MODULE)) {
+ String m = getTextValue(el);
+ if (m != null) {
+ modules.add(m);
+ }
+ }
+ }
+ }, true));
+ } catch(Exception e1) {
+ LOG.error("Cannot load modules", e1);
+ }
+
+ for(String module : modules) {
IMavenProjectFacade facade = findModuleProject(module);
if(facade != null) {
moduleContainers.add(facade.getProject().getLocation());
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/ValueProvider.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/ValueProvider.java
index c9635e93..ea56306a 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/ValueProvider.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/ValueProvider.java
@@ -16,7 +16,6 @@ package org.eclipse.m2e.editor.pom;
* Value provider for retrieving and creating holder element values
*
* @author Eugene Kuleshov
- * @deprecated to be removed soon
*/
public abstract class ValueProvider<T> {
diff --git a/org.eclipse.m2e.integration.tests.common/src/org/eclipse/m2e/integration/tests/common/UIIntegrationTestCase.java b/org.eclipse.m2e.integration.tests.common/src/org/eclipse/m2e/integration/tests/common/UIIntegrationTestCase.java
index 699dfa00..65f377a6 100644
--- a/org.eclipse.m2e.integration.tests.common/src/org/eclipse/m2e/integration/tests/common/UIIntegrationTestCase.java
+++ b/org.eclipse.m2e.integration.tests.common/src/org/eclipse/m2e/integration/tests/common/UIIntegrationTestCase.java
@@ -942,15 +942,15 @@ public abstract class UIIntegrationTestCase {
return editor;
}
- protected Model getModel(final MavenPomEditor editor) throws Exception {
- Model model = (Model) UIThreadTask.executeOnEventQueue(new UIThreadTask() {
-
- public Object runEx() throws Exception {
- return editor.readProjectDocument();
- }
- });
- return model;
- }
+// protected Model getModel(final MavenPomEditor editor) throws Exception {
+// Model model = (Model) UIThreadTask.executeOnEventQueue(new UIThreadTask() {
+//
+// public Object runEx() throws Exception {
+// return editor.readProjectDocument();
+// }
+// });
+// return model;
+// }
/**
* Create an archetype project and assert that it has proper natures & builders, and no error markers

Back to the top