[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();
 	}
 }