| package com.xtremelabs.robolectric.util; |
| |
| import com.xtremelabs.robolectric.Robolectric; |
| |
| import java.util.Collection; |
| import java.util.List; |
| import java.util.concurrent.Callable; |
| import java.util.concurrent.ExecutionException; |
| import java.util.concurrent.ExecutorService; |
| import java.util.concurrent.Future; |
| import java.util.concurrent.FutureTask; |
| import java.util.concurrent.TimeUnit; |
| import java.util.concurrent.TimeoutException; |
| |
| public class RobolectricBackgroundExecutorService implements ExecutorService { |
| @Override |
| public void shutdown() { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public List<Runnable> shutdownNow() { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public boolean isShutdown() { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public boolean isTerminated() { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public <T> Future<T> submit(Callable<T> tCallable) { |
| return schedule(new FutureTask<T>(tCallable)); |
| } |
| |
| @Override |
| public <T> Future<T> submit(Runnable runnable, T t) { |
| return schedule(new FutureTask<T>(runnable, t)); |
| } |
| |
| @Override |
| public Future<?> submit(Runnable runnable) { |
| return submit(runnable, null); |
| } |
| |
| private <T> Future<T> schedule(final FutureTask<T> futureTask) { |
| Robolectric.getShadowApplication().getBackgroundScheduler().post(new Runnable() { |
| @Override |
| public void run() { |
| futureTask.run(); |
| } |
| }); |
| |
| return futureTask; |
| } |
| |
| @Override |
| public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> callables) throws InterruptedException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> callables, long l, TimeUnit timeUnit) throws InterruptedException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public <T> T invokeAny(Collection<? extends Callable<T>> callables) throws InterruptedException, ExecutionException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public <T> T invokeAny(Collection<? extends Callable<T>> callables, long l, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public void execute(Runnable runnable) { |
| submit(runnable); |
| } |
| } |
| |