package org.teiid.common.queue; import javax.resource.spi.work.ExecutionContext; import javax.resource.spi.work.Work; import javax.resource.spi.work.WorkEvent; import javax.resource.spi.work.WorkException; import javax.resource.spi.work.WorkListener; import javax.resource.spi.work.WorkManager; import org.mockito.Mockito; public class FakeWorkManager implements WorkManager { private Thread t; @Override public void doWork(Work arg0) throws WorkException { execute(arg0, null, true); } @Override public void doWork(Work arg0, long arg1, ExecutionContext arg2, WorkListener arg3) throws WorkException { execute(arg0, arg3, true); } @Override public void scheduleWork(Work arg0) throws WorkException { execute(arg0, null, false); } @Override public void scheduleWork(Work arg0, long arg1, ExecutionContext arg2, WorkListener arg3) throws WorkException { execute(arg0, arg3, false); } @Override public long startWork(Work arg0) throws WorkException { execute(arg0, null, false); return 0; } @Override public long startWork(Work arg0, long arg1, ExecutionContext arg2, WorkListener arg3) throws WorkException { execute(arg0, arg3, false); return 0; } void execute(final Work arg0, final WorkListener arg3, boolean join) throws WorkException { if (arg3 != null) { arg3.workAccepted(Mockito.mock(WorkEvent.class)); arg3.workStarted(Mockito.mock(WorkEvent.class)); } t = new Thread(new Runnable() { @Override public void run() { arg0.run(); if (arg3 != null) { arg3.workCompleted(Mockito.mock(WorkEvent.class)); } } }); t.start(); if (join) { try { t.join(); } catch (InterruptedException e) { throw new WorkException(e); } } } }