
com.amazonaws.services.simpleworkflow.flow.interceptors.RetryPolicyBase Maven / Gradle / Ivy
/*
* Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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.amazonaws.services.simpleworkflow.flow.interceptors;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.amazonaws.services.simpleworkflow.flow.DecisionException;
public abstract class RetryPolicyBase implements RetryPolicy {
private List> exceptionsToRetry;
private List> exceptionsToExclude;
public List> getExceptionsToRetry() {
if (exceptionsToRetry == null) {
exceptionsToRetry = new ArrayList>();
exceptionsToRetry.add(Throwable.class);
}
return exceptionsToRetry;
}
public void setExceptionsToRetry(List> exceptionsToRetry) {
List> exceptionsToRetryCopy = new ArrayList>();
if (exceptionsToRetry != null) {
exceptionsToRetryCopy.addAll(exceptionsToRetry);
}
this.exceptionsToRetry = exceptionsToRetryCopy;
}
public RetryPolicyBase withExceptionsToRetry(Collection> exceptionsToRetry) {
List> exceptionsToRetryCopy = new ArrayList>();
if (exceptionsToRetry != null) {
exceptionsToRetryCopy.addAll(exceptionsToRetry);
}
this.exceptionsToRetry = exceptionsToRetryCopy;
return this;
}
public List> getExceptionsToExclude() {
if (exceptionsToExclude == null) {
exceptionsToExclude = new ArrayList>();
}
return exceptionsToExclude;
}
public void setExceptionsToExclude(List> exceptionsToExclude) {
List> exceptionsToExcludeCopy = new ArrayList>();
if (exceptionsToExclude != null) {
exceptionsToExcludeCopy.addAll(exceptionsToExclude);
}
this.exceptionsToExclude = exceptionsToExcludeCopy;
}
public RetryPolicyBase withExceptionsToExclude(Collection> exceptionsToExclude) {
List> exceptionsToExcludeCopy = new ArrayList>();
if (exceptionsToExclude != null) {
exceptionsToExcludeCopy.addAll(exceptionsToExclude);
}
this.exceptionsToExclude = exceptionsToExcludeCopy;
return this;
}
@Override
public boolean isRetryable(Throwable failure) {
boolean isRetryable = false;
if (failure instanceof DecisionException && failure.getCause() != null) {
failure = failure.getCause();
}
for (Class extends Throwable> exceptionToRetry: getExceptionsToRetry()) {
if (exceptionToRetry.isAssignableFrom(failure.getClass())) {
isRetryable = true;
break;
}
}
if (isRetryable) {
for (Class extends Throwable> exceptionNotToRetry: getExceptionsToExclude()) {
if (exceptionNotToRetry.isAssignableFrom(failure.getClass())) {
isRetryable = false;
break;
}
}
}
return isRetryable;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy