Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-10719

WizardUtils#runInWizard returns a Future<IStatus> but is process synchronously (not asynchronously as the signature would suggest)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.3.0.Beta1
    • 3.3.0.M5
    • openshift
    • None

      WizardUtils#runInWizard is returning a Future<IStatus> as if the method would not wait for it's job to get finished. This is actually not the case. The job is joined and the method is only returning when the job was executed.

      public static Future<IStatus> runInWizard(final Job job, final DelegatingProgressMonitor delegatingMonitor,
      		IWizardContainer container) throws InvocationTargetException, InterruptedException {
      	JobResultFuture future = new JobResultFuture(job);
      	container.run(true, false, new IRunnableWithProgress() {
      		@Override
      		public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException 
      			if (delegatingMonitor == null) {
      				monitor.beginTask(job.getName(), IProgressMonitor.UNKNOWN);
      			} else {
      				delegatingMonitor.add(monitor);
      				delegatingMonitor.beginTask(job.getName(), IProgressMonitor.UNKNOWN);
      			}
      			job.schedule();
      			job.join();
      			if (delegatingMonitor == null) {
      				monitor.done();
      			} else {
      				delegatingMonitor.done();
      			}
      		}
      	});
      	return future;
      }
      

            adietish@redhat.com André Dietisheim
            adietish@redhat.com André Dietisheim
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: