package org.jbpm.executor.test; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.jbpm.executor.AsynchronousJobEvent; import org.jbpm.executor.AsynchronousJobListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CountDownAsyncJobListener implements AsynchronousJobListener { private static final Logger logger = LoggerFactory.getLogger(CountDownAsyncJobListener.class); private CountDownLatch latch; public CountDownAsyncJobListener(int threads) { this.latch = new CountDownLatch(threads); } public void waitTillCompleted() { try { latch.await(); } catch (InterruptedException e) { logger.debug("Interrputed thread while waiting for all async jobs"); } } public void waitTillCompleted(long timeOut) { try { latch.await(timeOut, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { logger.debug("Interrputed thread while waiting for all async jobs"); } } public void reset(int threads) { this.latch = new CountDownLatch(threads); } @Override public void beforeJobScheduled(AsynchronousJobEvent event) { } @Override public void afterJobScheduled(AsynchronousJobEvent event) { } @Override public void beforeJobExecuted(AsynchronousJobEvent event) { } @Override public void afterJobExecuted(AsynchronousJobEvent event) { latch.countDown(); } @Override public void beforeJobCancelled(AsynchronousJobEvent event) { } @Override public void afterJobCancelled(AsynchronousJobEvent event) { latch.countDown(); } }