Fixing exceptions caused by resource disposal in builder.
diff --git a/core/org.eclipse.rcptt.core.builder/src/org/eclipse/rcptt/core/internal/builder/Q7Builder.java b/core/org.eclipse.rcptt.core.builder/src/org/eclipse/rcptt/core/internal/builder/Q7Builder.java
index 5ea6208..9cd5441 100644
--- a/core/org.eclipse.rcptt.core.builder/src/org/eclipse/rcptt/core/internal/builder/Q7Builder.java
+++ b/core/org.eclipse.rcptt.core.builder/src/org/eclipse/rcptt/core/internal/builder/Q7Builder.java
@@ -331,34 +331,40 @@
monitor, 1);
subMonitor.beginTask(
- "Validate RCPTT element " + element.getName(), 5);
+ "Validate RCPTT element " + element.getName(), 2 + validators.length);
subMonitor.subTask("Validate RCPTT element "
+ element.getName());
deleteMarkers((IFile) element.getResource());
subMonitor.worked(1);
+
try {
- for (IQ7Validator validator : validators) {
- if (monitor.isCanceled()) {
- monitor.done();
- subMonitor.done();
- return;
+ final IQ7NamedElement indexingWorkingCopy = element.getIndexingWorkingCopy(null);
+ try {
+ for (IQ7Validator validator : validators) {
+ if (monitor.isCanceled()) {
+ monitor.done();
+ subMonitor.done();
+ return;
+ }
+ IProgressMonitor mon = new SubProgressMonitor(
+ subMonitor, 1) {
+ @Override
+ public void setTaskName(String name) {
+ }
+
+ };
+ validator.validate(indexingWorkingCopy, collector, mon);
+ mon.done();
}
- IProgressMonitor mon = new SubProgressMonitor(
- subMonitor, 1) {
- @Override
- public void setTaskName(String name) {
- }
-
- };
-
- validator.validate(element, collector, mon);
- mon.done();
+ } finally {
+ indexingWorkingCopy.discardWorkingCopy();
}
} catch (Exception e) {
RcpttPlugin.log(e);
collector.reportProblem((IFile) element.getResource(), ProblemType.Error, "Validation fail", -1, -1, -1, -1);
+ } finally {
+ subMonitor.done();
}
- subMonitor.done();
}
});
}