Bug 466379 Ignore failure on deletion
Change-Id: I6dd675630711319cff33cbc1b25c0d8d8cc49a90
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
index 67691aa..788303b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ProblemsLabelDecorator.java
@@ -327,13 +327,13 @@
}
// markers on package itself (e.g. missing @NonNullByDefault)
- int severity= res.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_ZERO);
+ int severity= findMaxProblemSeverity(res, IMarker.PROBLEM, true, IResource.DEPTH_ZERO);
if (severity == IMarker.SEVERITY_ERROR)
return ERRORTICK_ERROR;
// markers on CUs
for (ICompilationUnit cu : pack.getCompilationUnits()) {
- severity= Math.max(severity, cu.getResource().findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_ZERO));
+ severity= Math.max(severity, findMaxProblemSeverity(cu.getResource(), IMarker.PROBLEM, true, IResource.DEPTH_ZERO));
if (severity == IMarker.SEVERITY_ERROR)
return ERRORTICK_ERROR;
}
@@ -342,7 +342,7 @@
for (Object object : pack.getNonJavaResources()) {
if (object instanceof IResource) {
IResource resource= (IResource) object;
- severity= Math.max(severity, resource.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE));
+ severity= Math.max(severity, findMaxProblemSeverity(resource, IMarker.PROBLEM, true, IResource.DEPTH_INFINITE));
if (severity == IMarker.SEVERITY_ERROR)
return ERRORTICK_ERROR;
}
@@ -357,6 +357,18 @@
}
return 0;
}
+
+ private int findMaxProblemSeverity (IResource res, String type, boolean includeSubtypes, int depth) throws CoreException {
+ try {
+ return res.findMaxProblemSeverity(type, includeSubtypes, depth);
+ } catch (CoreException e) {
+ if (e.getStatus().getCode() == IResourceStatus.RESOURCE_NOT_FOUND) {
+ // Ignore failure in the case of concurrent deletion
+ return -1;
+ }
+ throw e;
+ }
+ }
private boolean isMarkerInRange(IMarker marker, ISourceReference sourceElement) throws CoreException {
if (marker.isSubtypeOf(IMarker.TEXT)) {