diff options
author | Milos Kleint | 2011-07-21 07:28:27 +0000 |
---|---|---|
committer | Milos Kleint | 2011-07-21 07:28:27 +0000 |
commit | 593ab33c38324bef158c2d7320dd5e0e945378e8 (patch) | |
tree | 9031127fcacc8ca8e9b55cfc193dd03ce3b92279 | |
parent | e043662934bb501c6e6190a74be224bbd8b01034 (diff) | |
download | m2e-core-593ab33c38324bef158c2d7320dd5e0e945378e8.tar.gz m2e-core-593ab33c38324bef158c2d7320dd5e0e945378e8.tar.xz m2e-core-593ab33c38324bef158c2d7320dd5e0e945378e8.zip |
minor api addition to allow creating TextChange instances for refactoring that save all the pom files encountered. Fixes problems with partial reload of a project when changes are distributed to multiple pom files.
-rw-r--r-- | org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/editing/PomHelper.java | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/editing/PomHelper.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/editing/PomHelper.java index 00dae4b4..97c765f6 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/editing/PomHelper.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/editing/PomHelper.java @@ -8,25 +8,7 @@ package org.eclipse.m2e.core.ui.internal.editing; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.ARTIFACT_ID; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.CLASSIFIER; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.DEPENDENCIES; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.DEPENDENCY; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.GROUP_ID; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.PLUGIN; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.SCOPE; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.TYPE; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.VERSION; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.childEquals; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.createElement; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.createElementWithText; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.findChild; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.findChilds; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.format; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.getChild; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.removeChild; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.setText; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*; import java.util.List; @@ -37,6 +19,8 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.text.IDocument; import org.eclipse.ltk.core.refactoring.TextChange; +import org.eclipse.ltk.core.refactoring.TextFileChange; + import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator; import org.eclipse.m2e.core.ui.internal.Messages; import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation; @@ -90,9 +74,17 @@ public final class PomHelper { } return false; } - + /** + * + * @param file + * @param operation + * @param label + * @param forceSave if true will save all files, no matter if associated document is opened in editor area or not. + * @return + * @throws CoreException + */ @SuppressWarnings("restriction") - public static TextChange createChange(IFile file, Operation operation, String label) throws CoreException { + public static TextChange createChange(IFile file, Operation operation, String label, boolean forceSave) throws CoreException { IStructuredModel model = null; try { model = StructuredModelManager.getModelManager().getModelForRead(file); @@ -104,7 +96,13 @@ public final class PomHelper { IDocument tempDocument = tempModel.getStructuredDocument(); performOnDOMDocument(new OperationTuple((IDOMModel) tempModel, operation)); - return new ChangeCreator(existing ? null : file, document, tempDocument, label).createChange(); + TextChange change = new ChangeCreator(!forceSave && existing ? null : file, document, tempDocument, label).createChange(); + if (forceSave) assert change instanceof TextFileChange; //if assert not fullfilled, we will not get the file saved.. + + if (forceSave && change instanceof TextFileChange) { + ((TextFileChange)change).setSaveMode(TextFileChange.FORCE_SAVE); + } + return change; } catch(Exception exc) { LOG.error(Messages.PomHelper_errorCreatingChange, exc); throw new CoreException(new Status(IStatus.ERROR, M2EUIPluginActivator.PLUGIN_ID, @@ -117,6 +115,18 @@ public final class PomHelper { } /** + * by default will create a change that won't save files with opened documents + * @param file + * @param operation + * @param label + * @return + * @throws CoreException + */ + public static TextChange createChange(IFile file, Operation operation, String label) throws CoreException { + return createChange(file, operation, label, false); + } + + /** * creates and adds new plugin to the parent. Formats the result. * @param parentList * @param groupId null or value |