[319642] StructuredTextEditor may complete model lifecycle on a different model
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java index 1e8b207..3d0285d 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -1072,10 +1072,12 @@ initializeDocumentProvider(null); } - private void aboutToSaveModel() { - if (getInternalModel() != null) { - getInternalModel().aboutToChangeModel(); + private IStructuredModel aboutToSaveModel() { + IStructuredModel model = getInternalModel(); + if (model != null) { + model.aboutToChangeModel(); } + return model; } protected void addSourceMenuActions(IMenuManager menu) { @@ -1817,13 +1819,14 @@ * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor) */ public void doSave(IProgressMonitor progressMonitor) { + IStructuredModel model = null; try { - aboutToSaveModel(); + model = aboutToSaveModel(); updateEncodingMemento(); super.doSave(progressMonitor); } finally { - savedModel(); + savedModel(model); } } @@ -2809,9 +2812,9 @@ } } - private void savedModel() { - if (getInternalModel() != null) { - getInternalModel().changedModel(); + private void savedModel(IStructuredModel model) { + if (model != null) { + model.changedModel(); } }