Package org.teiid.common.queue

Source Code of org.teiid.common.queue.FakeWorkManager

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);
      }
    }
  }
   
}
TOP

Related Classes of org.teiid.common.queue.FakeWorkManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.