improve missing builder failure case
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java index e342431..0ea004d 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/BuildManager.java
@@ -70,23 +70,23 @@ */ class MissingBuilder extends IncrementalProjectBuilder { private String name; - private IStatus status; + private boolean hasBeenBuilt = false; MissingBuilder(String name) { this.name = name; } /** - * Throw an exception the first time this is called, and just log subsequent attempts. + * Log an exception on the first build, and silently do nothing on subsequent builds. */ protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException { - if (status == null) { - String msg = Policy.bind("events.missing", new String[] {name, getProject().getName()}); - status = new Status(IStatus.WARNING, ResourcesPlugin.PI_RESOURCES, 1, msg, null); - throw new CoreException(status); + if (!hasBeenBuilt) { + hasBeenBuilt = true; + String msg = Policy.bind("events.skippingBuilder", new String[] {name, getProject().getName()}); + IStatus status = new Status(IStatus.WARNING, ResourcesPlugin.PI_RESOURCES, 1, msg, null); + ResourcesPlugin.getPlugin().getLog().log(status); } - ResourcesPlugin.getPlugin().getLog().log(status); return null; } -} + } public BuildManager(Workspace workspace) { this.workspace = workspace;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties index 6a99228..59c0667 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties Binary files differ