Coverage Summary for Class: SameThreadScheduledExecutorService (com.google.common.util.concurrent.testing)

Class Method, % Line, %
SameThreadScheduledExecutorService 22.2% (4/18) 26.3% (10/38)
SameThreadScheduledExecutorService$ImmediateScheduledFuture 25% (1/4) 25% (2/8)
Total 22.7% (5/22) 26.1% (12/46)


1 /* 2  * Copyright (C) 2009 The Guava Authors 3  * 4  * Licensed under the Apache License, Version 2.0 (the "License"); 5  * you may not use this file except in compliance with the License. 6  * You may obtain a copy of the License at 7  * 8  * http://www.apache.org/licenses/LICENSE-2.0 9  * 10  * Unless required by applicable law or agreed to in writing, software 11  * distributed under the License is distributed on an "AS IS" BASIS, 12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13  * See the License for the specific language governing permissions and 14  * limitations under the License. 15  */ 16  17 package com.google.common.util.concurrent.testing; 18  19 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService; 20  21 import com.google.common.annotations.GwtIncompatible; 22 import com.google.common.base.Preconditions; 23 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture; 24 import com.google.common.util.concurrent.ListenableFuture; 25 import com.google.common.util.concurrent.ListenableScheduledFuture; 26 import com.google.common.util.concurrent.ListeningExecutorService; 27 import com.google.common.util.concurrent.ListeningScheduledExecutorService; 28 import java.util.Collection; 29 import java.util.List; 30 import java.util.concurrent.AbstractExecutorService; 31 import java.util.concurrent.Callable; 32 import java.util.concurrent.Delayed; 33 import java.util.concurrent.ExecutionException; 34 import java.util.concurrent.Future; 35 import java.util.concurrent.TimeUnit; 36 import java.util.concurrent.TimeoutException; 37  38 /** 39  * A ScheduledExecutorService that executes all scheduled actions immediately in the calling thread. 40  * 41  * <p>See {@link TestingExecutors#sameThreadScheduledExecutor()} for a full list of constraints. 42  * 43  * @author John Sirois 44  * @author Zach van Schouwen 45  */ 46 @GwtIncompatible 47 class SameThreadScheduledExecutorService extends AbstractExecutorService 48  implements ListeningScheduledExecutorService { 49  50  private final ListeningExecutorService delegate = newDirectExecutorService(); 51  52  @Override 53  public void shutdown() { 54  delegate.shutdown(); 55  } 56  57  @Override 58  public List<Runnable> shutdownNow() { 59  return delegate.shutdownNow(); 60  } 61  62  @Override 63  public boolean isShutdown() { 64  return delegate.isShutdown(); 65  } 66  67  @Override 68  public boolean isTerminated() { 69  return delegate.isTerminated(); 70  } 71  72  @Override 73  public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { 74  Preconditions.checkNotNull(unit, "unit must not be null!"); 75  return delegate.awaitTermination(timeout, unit); 76  } 77  78  @Override 79  public <T> ListenableFuture<T> submit(Callable<T> task) { 80  Preconditions.checkNotNull(task, "task must not be null!"); 81  return delegate.submit(task); 82  } 83  84  @Override 85  public <T> ListenableFuture<T> submit(Runnable task, T result) { 86  Preconditions.checkNotNull(task, "task must not be null!"); 87  Preconditions.checkNotNull(result, "result must not be null!"); 88  return delegate.submit(task, result); 89  } 90  91  @Override 92  public ListenableFuture<?> submit(Runnable task) { 93  Preconditions.checkNotNull(task, "task must not be null!"); 94  return delegate.submit(task); 95  } 96  97  @Override 98  public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) 99  throws InterruptedException { 100  Preconditions.checkNotNull(tasks, "tasks must not be null!"); 101  return delegate.invokeAll(tasks); 102  } 103  104  @Override 105  public <T> List<Future<T>> invokeAll( 106  Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 107  throws InterruptedException { 108  Preconditions.checkNotNull(tasks, "tasks must not be null!"); 109  Preconditions.checkNotNull(unit, "unit must not be null!"); 110  return delegate.invokeAll(tasks, timeout, unit); 111  } 112  113  @Override 114  public <T> T invokeAny(Collection<? extends Callable<T>> tasks) 115  throws InterruptedException, ExecutionException { 116  Preconditions.checkNotNull(tasks, "tasks must not be null!"); 117  return delegate.invokeAny(tasks); 118  } 119  120  @Override 121  public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 122  throws InterruptedException, ExecutionException, TimeoutException { 123  Preconditions.checkNotNull(tasks, "tasks must not be null!"); 124  Preconditions.checkNotNull(unit, "unit must not be null!"); 125  return delegate.invokeAny(tasks, timeout, unit); 126  } 127  128  @Override 129  public void execute(Runnable command) { 130  Preconditions.checkNotNull(command, "command must not be null!"); 131  delegate.execute(command); 132  } 133  134  @Override 135  public ListenableScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) { 136  Preconditions.checkNotNull(command, "command must not be null"); 137  Preconditions.checkNotNull(unit, "unit must not be null!"); 138  return schedule(java.util.concurrent.Executors.callable(command), delay, unit); 139  } 140  141  @Override 142  public <V> ListenableScheduledFuture<V> schedule( 143  final Callable<V> callable, long delay, TimeUnit unit) { 144  Preconditions.checkNotNull(callable, "callable must not be null!"); 145  Preconditions.checkNotNull(unit, "unit must not be null!"); 146  ListenableFuture<V> delegateFuture = submit(callable); 147  return new ImmediateScheduledFuture<V>(delegateFuture); 148  } 149  150  private static class ImmediateScheduledFuture<V> extends SimpleForwardingListenableFuture<V> 151  implements ListenableScheduledFuture<V> { 152  private ExecutionException exception; 153  154  protected ImmediateScheduledFuture(ListenableFuture<V> future) { 155  super(future); 156  } 157  158  @Override 159  public V get(long timeout, TimeUnit unit) 160  throws InterruptedException, ExecutionException, TimeoutException { 161  Preconditions.checkNotNull(unit, "unit must not be null!"); 162  return get(); 163  } 164  165  @Override 166  public long getDelay(TimeUnit unit) { 167  Preconditions.checkNotNull(unit, "unit must not be null!"); 168  return 0; 169  } 170  171  @Override 172  public int compareTo(Delayed other) { 173  Preconditions.checkNotNull(other, "other must not be null!"); 174  return 0; 175  } 176  } 177  178  @Override 179  public ListenableScheduledFuture<?> scheduleAtFixedRate( 180  Runnable command, long initialDelay, long period, TimeUnit unit) { 181  throw new UnsupportedOperationException("scheduleAtFixedRate is not supported."); 182  } 183  184  @Override 185  public ListenableScheduledFuture<?> scheduleWithFixedDelay( 186  Runnable command, long initialDelay, long delay, TimeUnit unit) { 187  throw new UnsupportedOperationException("scheduleWithFixedDelay is not supported."); 188  } 189 }