mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 14:12:10 +02:00
Bug 328883 - AbstractCachingVMProvider throws ClassCastException
Corrected Fix.
This commit is contained in:
parent
3c0d068f99
commit
acfb30df58
5 changed files with 31 additions and 7 deletions
|
@ -560,11 +560,11 @@ public class FormattedValueRetriever {
|
||||||
if (update.getProperties().contains(PROP_ACTIVE_FORMAT_VALUE) &&
|
if (update.getProperties().contains(PROP_ACTIVE_FORMAT_VALUE) &&
|
||||||
format.equals(activeFormat))
|
format.equals(activeFormat))
|
||||||
{
|
{
|
||||||
PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus(
|
PropertiesUpdateStatus.getPropertiesStatus(update).setStatus(
|
||||||
new String[] { PROP_ACTIVE_FORMAT_VALUE, formatProperty },
|
new String[] { PROP_ACTIVE_FORMAT_VALUE, formatProperty },
|
||||||
staleDataStatus);
|
staleDataStatus);
|
||||||
} else {
|
} else {
|
||||||
PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus(formatProperty, staleDataStatus);
|
PropertiesUpdateStatus.getPropertiesStatus(update).setStatus(formatProperty, staleDataStatus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,6 +198,23 @@ public class PropertiesUpdateStatus extends DsfMultiStatus {
|
||||||
return s1.getMessage().equals(s2.getMessage());
|
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
|
* Convenience method that returns and optionally creates a properties
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class VMPropertiesUpdate extends VMViewerUpdate implements IPropertiesUpd
|
||||||
} else if ((getStatus() instanceof PropertiesUpdateStatus)) {
|
} else if ((getStatus() instanceof PropertiesUpdateStatus)) {
|
||||||
((PropertiesUpdateStatus)getStatus()).add(status);
|
((PropertiesUpdateStatus)getStatus()).add(status);
|
||||||
} else {
|
} 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$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1177,13 +1177,13 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
|
||||||
String missingProperty = itr.next();
|
String missingProperty = itr.next();
|
||||||
if ( !updatePolicyExt.canUpdateDirtyProperty(entry, missingProperty) ) {
|
if ( !updatePolicyExt.canUpdateDirtyProperty(entry, missingProperty) ) {
|
||||||
itr.remove();
|
itr.remove();
|
||||||
PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus(
|
PropertiesUpdateStatus.getPropertiesStatus(update).setStatus(
|
||||||
missingProperty,
|
missingProperty,
|
||||||
DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$
|
DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PropertiesUpdateStatus.makePropertiesStatus(update.getStatus()).setStatus(
|
PropertiesUpdateStatus.getPropertiesStatus(update).setStatus(
|
||||||
missingProperties.toArray(new String[missingProperties.size()]),
|
missingProperties.toArray(new String[missingProperties.size()]),
|
||||||
DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$
|
DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains stale data. Refresh view.", null ));//$NON-NLS-1$
|
||||||
missingProperties.clear();
|
missingProperties.clear();
|
||||||
|
|
|
@ -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))
|
while (!fViewerListener.isFinished(ALL_UPDATES_COMPLETE | PROPERTY_UPDATES) || !fVMListener.isFinished(CONTENT_UPDATES | PROPERTY_UPDATES))
|
||||||
if (!fDisplay.readAndDispatch ()) fDisplay.sleep ();
|
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) {
|
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(
|
fModel.validateData(
|
||||||
fViewer, TreePath.EMPTY,
|
fViewer, TreePath.EMPTY,
|
||||||
new TestElementValidator() {
|
new TestElementValidator() {
|
||||||
|
@ -356,7 +363,7 @@ abstract public class FormattedValueTests extends TestCase implements IViewerUpd
|
||||||
assertEquals(fModel.getFormattedValueText(modelElement, formatId) + suffix, label.getText());
|
assertEquals(fModel.getFormattedValueText(modelElement, formatId) + suffix, label.getText());
|
||||||
|
|
||||||
label = fViewer.getElementLabel(viewerPath, TestModelCachingVMProvider.COLUMN_DUMMY_VALUE);
|
label = fViewer.getElementLabel(viewerPath, TestModelCachingVMProvider.COLUMN_DUMMY_VALUE);
|
||||||
assertEquals(formatId, label.getText());
|
assertEquals(dummyFormatId + dummySuffix, label.getText());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue