[529797] Tidy access/cancelling of MultiValidatorJob
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/BaseUIActivator.java b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/BaseUIActivator.java
index 74f1022..5b89d76 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/BaseUIActivator.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/BaseUIActivator.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.ocl.xtext.base.ui;
-import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.xtext.base.ui.builder.MultiValidationJob;
import org.eclipse.ocl.xtext.base.ui.internal.BaseActivator;
@@ -20,6 +19,11 @@
{
private static @Nullable MultiValidationJob multiValidationJob = null;
+ /* For test purposes only */
+ public static @Nullable MultiValidationJob basicGetMultiValidationJob() {
+ return multiValidationJob;
+ }
+
public static synchronized void cancelMultiValidationJob() {
MultiValidationJob multiValidationJob2 = multiValidationJob;
if (multiValidationJob2 != null) {
@@ -28,26 +32,24 @@
}
}
- public static synchronized @NonNull MultiValidationJob getMultiValidationJob() {
- MultiValidationJob multiValidationJob2 = multiValidationJob;
- if (multiValidationJob2 == null) {
- multiValidationJob = multiValidationJob2 = new MultiValidationJob();
+ /**
+ * Return the MultiValidationJob, creating one if none curremtly exists.
+ * Returns null if this plugin has been shutdown.
+ */
+ public static synchronized @Nullable MultiValidationJob getMultiValidationJob() {
+ if ((multiValidationJob == null) && (getInstance() != null)) {
+ multiValidationJob = new MultiValidationJob();
}
- return multiValidationJob2;
+ return multiValidationJob;
}
public BaseUIActivator() {
super();
}
-
@Override
public void stop(BundleContext context) throws Exception {
super.stop(context);
- MultiValidationJob multiValidationJob2 = multiValidationJob;
- if (multiValidationJob2 != null) {
- multiValidationJob = null;
- multiValidationJob2.cancel();
- }
+ cancelMultiValidationJob();
}
}
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/builder/AbstractValidatingBuilder.java b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/builder/AbstractValidatingBuilder.java
index 54cf0ba..b9646fc 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/builder/AbstractValidatingBuilder.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/builder/AbstractValidatingBuilder.java
@@ -162,8 +162,11 @@
public void buildResources() {
progress.setWorkRemaining(1);
- BaseUIActivator.getMultiValidationJob().addValidations(selectedFiles);
- progress.setTaskName(NLS.bind(BaseUIMessages.MultiValidationJob_Queuing, builderName));
+ MultiValidationJob multiValidationJob = BaseUIActivator.getMultiValidationJob();
+ if (multiValidationJob != null) {
+ multiValidationJob.addValidations(selectedFiles);
+ progress.setTaskName(NLS.bind(BaseUIMessages.MultiValidationJob_Queuing, builderName));
+ }
progress.worked(1);
progress.done();
}
@@ -328,6 +331,6 @@
protected abstract Logger getLog();
private void handleCanceled(Throwable t) {
- BaseUIActivator.getMultiValidationJob().cancel();
+ BaseUIActivator.cancelMultiValidationJob();
}
}