1 /** 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package org.apache.hadoop.hbase.client; 19 20 import java.io.IOException; 21 22 import org.apache.hadoop.hbase.classification.InterfaceAudience; 23 24 /** 25 * Helper callable for internal use when you just want to override a single method of a {@link 26 * RetryingCallable}. By default, this just delegates all {@link RetryingCallable} methods to the 27 * specified delegate. 28 * @param <T> Result class from calls to the delegate {@link RetryingCallable} 29 * @param <D> Type of the delegate class 30 */ 31 @InterfaceAudience.Private 32 public class DelegatingRetryingCallable<T, D extends RetryingCallable<T>> implements 33 RetryingCallable<T> { 34 protected final D delegate; 35 36 public DelegatingRetryingCallable(D delegate) { 37 this.delegate = delegate; 38 } 39 40 @Override 41 public T call(int callTimeout) throws Exception { 42 return delegate.call(callTimeout); 43 } 44 45 @Override 46 public void prepare(boolean reload) throws IOException { 47 delegate.prepare(reload); 48 } 49 50 @Override 51 public void throwable(Throwable t, boolean retrying) { 52 delegate.throwable(t, retrying); 53 } 54 55 @Override 56 public String getExceptionMessageAdditionalDetail() { 57 return delegate.getExceptionMessageAdditionalDetail(); 58 } 59 60 @Override 61 public long sleep(long pause, int tries) { 62 return delegate.sleep(pause, tries); 63 } 64 }