aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2018-02-13 08:57:40 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-13 08:58:51 -0800
commit391d73d15f19ed22bf2cb343aaca9dd4fe3b7285 (patch)
treea4b816fc1f5c8029cc6689f190d7d3f817ec0adc /src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
parentbbd0c3b66588450e2abb9a538f8537e3b2c50c6c (diff)
Implement and delegate ListeningExecutorService api to clean up the try-with-resources code segments
RELNOTES:None PiperOrigin-RevId: 185536875
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java88
1 files changed, 86 insertions, 2 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java b/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
index 24d7739782..0384f9f619 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
@@ -13,15 +13,22 @@
// limitations under the License.
package com.google.devtools.build.android;
+import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import java.io.Closeable;
import java.io.IOException;
+import java.util.Collection;
import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
/** Shutdowns and verifies that no tasks are running in the executor service. */
-final class ExecutorServiceCloser implements Closeable {
+final class ExecutorServiceCloser implements Closeable, ListeningExecutorService {
private final ListeningExecutorService executorService;
private ExecutorServiceCloser(ListeningExecutorService executorService) {
@@ -37,7 +44,12 @@ final class ExecutorServiceCloser implements Closeable {
}
}
- public static Closeable createWith(ListeningExecutorService executorService) {
+ public static ExecutorServiceCloser createWithFixedPoolOf(int numThreads) {
+ return new ExecutorServiceCloser(
+ MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(numThreads)));
+ }
+
+ public static ExecutorServiceCloser createWith(ListeningExecutorService executorService) {
return new ExecutorServiceCloser(executorService);
}
@@ -54,4 +66,76 @@ final class ExecutorServiceCloser implements Closeable {
MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(numThreads));
return executorService;
}
+
+ // Delegate methods below
+
+ @Override
+ public <T> ListenableFuture<T> submit(Callable<T> task) {
+ return executorService.submit(task);
+ }
+
+ @Override
+ public ListenableFuture<?> submit(Runnable task) {
+ return executorService.submit(task);
+ }
+
+ @Override
+ public <T> ListenableFuture<T> submit(Runnable task, T result) {
+ return executorService.submit(task, result);
+ }
+
+ @Override
+ public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
+ throws InterruptedException {
+ return executorService.invokeAll(tasks);
+ }
+
+ @Override
+ public <T> List<Future<T>> invokeAll(
+ Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
+ throws InterruptedException {
+ return executorService.invokeAll(tasks, timeout, unit);
+ }
+
+ @Override
+ public void shutdown() {
+ executorService.shutdown();
+ }
+
+ @Override
+ public List<Runnable> shutdownNow() {
+ return executorService.shutdownNow();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return executorService.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return executorService.isTerminated();
+ }
+
+ @Override
+ public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
+ return executorService.awaitTermination(timeout, unit);
+ }
+
+ @Override
+ public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
+ throws InterruptedException, ExecutionException {
+ return executorService.invokeAny(tasks);
+ }
+
+ @Override
+ public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
+ throws InterruptedException, ExecutionException, TimeoutException {
+ return executorService.invokeAny(tasks, timeout, unit);
+ }
+
+ @Override
+ public void execute(Runnable command) {
+ executorService.execute(command);
+ }
}