/* * Copyright 2012 LinkedIn, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.linkedin.parseq.promise; import java.util.concurrent.TimeUnit; /** * An abstract class that makes it easy to delegate {@link Promise} method * invocations to a delegate promise. * * @author Chris Pettitt (cpettitt@linkedin.com) */ public class DelegatingPromise<T> implements Promise<T> { private final Promise<T> _delegate; public DelegatingPromise(final Promise<T> delegate) { _delegate = delegate; } @Override public T get() throws PromiseException { return _delegate.get(); } @Override public Throwable getError() { return _delegate.getError(); } public T getOrDefault(final T defaultValue) { return _delegate.getOrDefault(defaultValue); } @Override public void await() throws InterruptedException { _delegate.await(); } @Override public boolean await(final long time, final TimeUnit unit) throws InterruptedException { return _delegate.await(time, unit); } @Override public void addListener(final PromiseListener<T> listener) { _delegate.addListener(listener); } @Override public boolean isDone() { return _delegate.isDone(); } @Override public boolean isFailed() { return _delegate.isFailed(); } protected Promise<T> getDelegate() { return _delegate; } }