Futures2.java revision 4961ad31d9a877e3a68566fb5d4b33b7f79ce44e
1/* 2 * Copyright (C) 2015 The Android Open Source Project 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 17package com.android.camera.async; 18 19import com.google.common.util.concurrent.ForwardingListenableFuture; 20import com.google.common.util.concurrent.ListenableFuture; 21 22/** 23 * TODO Replace with Guava's com.google.common.util.concurrent.Futures once we 24 * can build with v. 15+ 25 */ 26public class Futures2 { 27 private Futures2() { 28 } 29 30 /** 31 * Creates a new ListenableFuture whose result is set from the supplied 32 * future when it completes. Cancelling the supplied future will also cancel 33 * the returned future, but cancelling the returned future will have no 34 * effect on the supplied future. 35 */ 36 public static <T> ListenableFuture<T> nonCancellationPropagating( 37 final ListenableFuture<T> future) { 38 return new ForwardingListenableFuture.SimpleForwardingListenableFuture<T>(future) { 39 @Override 40 public boolean cancel(boolean mayInterruptIfNecessary) { 41 return false; 42 } 43 }; 44 } 45} 46