diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java index f20b47b69af..f9f389c6885 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java @@ -560,11 +560,11 @@ public class FormattedValueRetriever { if (update.getProperties().contains(PROP_ACTIVE_FORMAT_VALUE) && format.equals(activeFormat)) { - PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus( + PropertiesUpdateStatus.getPropertiesStatus(update).setStatus( new String[] { PROP_ACTIVE_FORMAT_VALUE, formatProperty }, staleDataStatus); } else { - PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus(formatProperty, staleDataStatus); + PropertiesUpdateStatus.getPropertiesStatus(update).setStatus(formatProperty, staleDataStatus); } } } diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/PropertiesUpdateStatus.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/PropertiesUpdateStatus.java index cce0ff6a59e..1d2fee8e723 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/PropertiesUpdateStatus.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/PropertiesUpdateStatus.java @@ -198,6 +198,23 @@ public class PropertiesUpdateStatus extends DsfMultiStatus { return s1.getMessage().equals(s2.getMessage()); }; + /** + * Convenience method that returns and optionally creates a properties + * update status object for the given update. + */ + public static PropertiesUpdateStatus getPropertiesStatus(IPropertiesUpdate update) { + IStatus updateStatus = update.getStatus(); + if (updateStatus instanceof PropertiesUpdateStatus) { + return (PropertiesUpdateStatus)updateStatus; + } else { + PropertiesUpdateStatus propertiesStatus = new PropertiesUpdateStatus(); + update.setStatus(propertiesStatus); + if (!updateStatus.isOK()) { + propertiesStatus.add(updateStatus); + } + return propertiesStatus; + } + } /** * Convenience method that returns and optionally creates a properties diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java index d02f3cbff86..05b615d1bea 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java @@ -117,7 +117,7 @@ public class VMPropertiesUpdate extends VMViewerUpdate implements IPropertiesUpd } else if ((getStatus() instanceof PropertiesUpdateStatus)) { ((PropertiesUpdateStatus)getStatus()).add(status); } else { - assert false : "VMPropertiesUpdate status should always be a PropertiesUpdateStatus"; //$NON-NLS-1$ + assert getStatus().getSeverity() == IStatus.CANCEL : "VMPropertiesUpdate status should always be a PropertiesUpdateStatus unless update is canceled."; //$NON-NLS-1$ } } diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java index b0ad8e4bbe5..579bc6c18fe 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java @@ -1177,13 +1177,13 @@ public class AbstractCachingVMProvider extends AbstractVMProvider String missingProperty = itr.next(); if ( !updatePolicyExt.canUpdateDirtyProperty(entry, missingProperty) ) { itr.remove(); - PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus( + PropertiesUpdateStatus.getPropertiesStatus(update).setStatus( missingProperty, DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$ } } } else { - PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus( + PropertiesUpdateStatus.getPropertiesStatus(update).setStatus( missingProperties.toArray(new String[missingProperties.size()]), DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$ missingProperties.clear(); diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java index 60d127311a7..e7abbd8ba42 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java @@ -233,7 +233,10 @@ abstract public class FormattedValueTests extends TestCase implements IViewerUpd while (!fViewerListener.isFinished(ALL_UPDATES_COMPLETE | PROPERTY_UPDATES) || !fVMListener.isFinished(CONTENT_UPDATES | PROPERTY_UPDATES)) if (!fDisplay.readAndDispatch ()) fDisplay.sleep (); - validateModel(IFormattedValues.HEX_FORMAT, " (" + FormattedValueVMUtil.getFormatLabel(IFormattedValues.HEX_FORMAT) + ")"); + validateModel(IFormattedValues.HEX_FORMAT, + " (" + FormattedValueVMUtil.getFormatLabel(IFormattedValues.HEX_FORMAT) + ")", + DummyFormattedValueService.DUMMY_FORMAT, + " (" + DummyFormattedValueService.DUMMY_FORMAT + ")"); } /** @@ -345,6 +348,10 @@ abstract public class FormattedValueTests extends TestCase implements IViewerUpd } private void validateModel(final String formatId, final String suffix) { + validateModel(formatId, suffix, formatId, suffix); + } + + private void validateModel(final String formatId, final String suffix, final String dummyFormatId, final String dummySuffix) { fModel.validateData( fViewer, TreePath.EMPTY, new TestElementValidator() { @@ -356,7 +363,7 @@ abstract public class FormattedValueTests extends TestCase implements IViewerUpd assertEquals(fModel.getFormattedValueText(modelElement, formatId) + suffix, label.getText()); label = fViewer.getElementLabel(viewerPath, TestModelCachingVMProvider.COLUMN_DUMMY_VALUE); - assertEquals(formatId, label.getText()); + assertEquals(dummyFormatId + dummySuffix, label.getText()); } }); }