org.zalando.riptide.failsafe.RequestPolicies Maven / Gradle / Ivy
package org.zalando.riptide.failsafe;
import dev.failsafe.Policy;
import dev.failsafe.RetryPolicy;
import org.apiguardian.api.API;
import org.springframework.http.client.ClientHttpResponse;
import org.zalando.riptide.RequestArguments;
import org.zalando.riptide.idempotency.IdempotencyPredicate;
import java.util.function.Predicate;
import static org.apiguardian.api.API.Status.EXPERIMENTAL;
@API(status = EXPERIMENTAL)
public final class RequestPolicies {
private RequestPolicies() {
}
public static RequestPolicy of(final Policy policy) {
if (policy instanceof BackupRequest) {
return new ConditionalRequestPolicy(
new DefaultRequestPolicy(policy),
new IdempotencyPredicate());
} else if (policy instanceof RetryPolicy) {
return new RetryRequestPolicy(
(RetryPolicy) policy);
}
return new DefaultRequestPolicy(policy);
}
public static RequestPolicy of(
final Policy policy,
final Predicate predicate) {
return of(of(policy), predicate);
}
public static RequestPolicy of(
final RequestPolicy policy,
final Predicate predicate) {
return new ConditionalRequestPolicy(policy, predicate);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy