};
}
@SuppressWarnings("unchecked")
private ExponentialRetryPolicy createRetryPolicyFromOptions(CronWithRetryWorkflowOptions options) {
ExponentialRetryPolicy retryPolicy = new ExponentialRetryPolicy(options.getInitialRetryIntervalSeconds());
retryPolicy.setBackoffCoefficient(options.getBackoffCoefficient());
try {
List<String> exceptionsToRetryClasses = options.getExceptionsToRetry();
if (exceptionsToRetryClasses != null) {
List<Class<? extends Throwable>> exceptionsToRetry = new ArrayList<Class<? extends Throwable>>();
for (String exceptionType : exceptionsToRetryClasses) {
exceptionsToRetry.add((Class<? extends Throwable>) Class.forName(exceptionType));
}
retryPolicy.setExceptionsToRetry(exceptionsToRetry);
}
List<String> exceptionsToExcludeClasses = options.getExceptionsToExclude();
if (exceptionsToExcludeClasses != null) {
List<Class<? extends Throwable>> exceptionsToExclude = new ArrayList<Class<? extends Throwable>>();
for (String exceptionType : exceptionsToExcludeClasses) {
exceptionsToExclude.add((Class<? extends Throwable>) Class.forName(exceptionType));
}
retryPolicy.setExceptionsToExclude(exceptionsToExclude);
}
}
catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Invalid options: " + options, e);
}
retryPolicy.setMaximumAttempts(options.getMaximumAttempts());
retryPolicy.setMaximumRetryIntervalSeconds(options.getMaximumRetryIntervalSeconds());
retryPolicy.setRetryExpirationIntervalSeconds(options.getRetryExpirationIntervalSeconds());
return retryPolicy;
}