All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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