1d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwinpackage com.xtremelabs.robolectric.util; 2d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 3d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.Robolectric; 4d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 5d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwinimport java.util.Collection; 6d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwinimport java.util.List; 740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.Callable; 840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.ExecutionException; 940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.ExecutorService; 1040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.Future; 1140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.FutureTask; 1240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.TimeUnit; 1340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.concurrent.TimeoutException; 14d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 15d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwinpublic class RobolectricBackgroundExecutorService implements ExecutorService { 16e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 17e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public void shutdown() { 18d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 19d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 20d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 21e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 22e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public List<Runnable> shutdownNow() { 23d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 24d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 25d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 26e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 27e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public boolean isShutdown() { 28d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 29d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 30d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 31e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 32e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public boolean isTerminated() { 33d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 34d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 35d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 36e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 37e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException { 38d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 39d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 40d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 41e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 42e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public <T> Future<T> submit(Callable<T> tCallable) { 43d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin return schedule(new FutureTask<T>(tCallable)); 44d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 45d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 46e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 47e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public <T> Future<T> submit(Runnable runnable, T t) { 48d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin return schedule(new FutureTask<T>(runnable, t)); 49d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 50d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 51e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 52e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public Future<?> submit(Runnable runnable) { 53d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin return submit(runnable, null); 54d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 55d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 56d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin private <T> Future<T> schedule(final FutureTask<T> futureTask) { 57d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin Robolectric.getShadowApplication().getBackgroundScheduler().post(new Runnable() { 58e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 59e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public void run() { 60d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin futureTask.run(); 61d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 62d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin }); 63d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 64d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin return futureTask; 65d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 66d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 67d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin @Override 68d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> callables) throws InterruptedException { 69d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 70d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 71d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 72d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin @Override 73d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> callables, long l, TimeUnit timeUnit) throws InterruptedException { 74d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 75d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 76d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 77d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin @Override 78d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin public <T> T invokeAny(Collection<? extends Callable<T>> callables) throws InterruptedException, ExecutionException { 79d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 80d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 81d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 82d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin @Override 83d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin public <T> T invokeAny(Collection<? extends Callable<T>> callables, long l, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException { 84d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin throw new UnsupportedOperationException(); 85d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 86d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 87e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz @Override 88e2623f9312670f0df22c6e6c5f7969bd01d18130Joe Moore & Tyler Schultz public void execute(Runnable runnable) { 89d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin submit(runnable); 90d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin } 91d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin} 92d5324b3612042f2737bd6a5624bb5a2fb76950f6Christian Williams & Phil Goodwin 93