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

com.adobe.platform.operation.internal.http.config.HttpClientConfig Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2019 Adobe
 * All Rights Reserved.
 *
 * NOTICE: Adobe permits you to use, modify, and distribute this file in
 * accordance with the terms of the Adobe license agreement accompanying
 * it. If you have received this file from a source other than Adobe,
 * then your use, modification, or distribution of it requires the prior
 * written permission of Adobe.
 */

package com.adobe.platform.operation.internal.http.config;


import com.adobe.platform.operation.internal.GlobalConfig;
import com.adobe.platform.operation.internal.http.HttpClientType;

public class HttpClientConfig {

    private int connectTimeout;
    private int socketTimeout;
    private HttpClientType clientType;
    private int maxRetries;

    /**
     * Not being used since we're not doing more than 1 retry internally
     */
    private int retryBackoffInterval;

    /**
     * Not being used since we're not doing more than 1 retry internally
     */
    private double retryDelayFactor;

    /**
     * Not being used since we're not doing more than 1 retry internally
     */
    private int maxRetryInterval;


    private HttpClientConfig(Builder clientConfigBuilder) {
        this.connectTimeout = clientConfigBuilder.connectTimeout;
        this.socketTimeout = clientConfigBuilder.socketTimeout;
        this.clientType = clientConfigBuilder.clientType;
        this.maxRetries = clientConfigBuilder.maxRetries;
        this.retryBackoffInterval = clientConfigBuilder.retryBackoffInterval;
        this.retryDelayFactor = clientConfigBuilder.retryDelayFactor;
        this.maxRetryInterval = clientConfigBuilder.maxRetryInterval;
    }

    public HttpClientType getClientType() {
        return clientType;
    }

    public int getRetryBackoffInterval() {
        return retryBackoffInterval;
    }

    public int getMaxRetries() {
        return maxRetries;
    }

    public double getRetryDelayFactor() {
        return retryDelayFactor;
    }

    public int getMaxRetryInterval() {
        return maxRetryInterval;
    }

    public int getConnectTimeout() {
        return connectTimeout;
    }

    public int getSocketTimeout() {
        return socketTimeout;
    }

    public static class Builder {

        private int connectTimeout = GlobalConfig.getConnectTimeout();
        private int socketTimeout = GlobalConfig.getSocketTimeout();
        private HttpClientType clientType = GlobalConfig.getDefaultHttpClientType();
        private int maxRetries = GlobalConfig.getMaxRetries();
        private int retryBackoffInterval = GlobalConfig.getRetryBackoffInterval();
        private double retryDelayFactor = GlobalConfig.getRetryDelayFactor();
        private int maxRetryInterval = GlobalConfig.getMaxRetryInterval();


        public Builder withSocketTimeout(int socketTimeout) {
            this.socketTimeout = socketTimeout;
            return this;
        }

        public Builder withConnectTimeout(int connectTimeout) {
            this.connectTimeout = connectTimeout;
            return this;
        }

        public Builder clientType(HttpClientType clientType) {
            this.clientType = clientType;
            return this;
        }

        public Builder withRetryLimit(int retryLimit) {
            this.maxRetries = retryLimit;
            return this;
        }

        public Builder withRetryInterval(int retryInterval) {
            this.retryBackoffInterval = retryInterval;
            return this;
        }

        public Builder withRetryDelayFactor(int retryDelayFactor) {
            this.retryDelayFactor = retryDelayFactor;
            return this;
        }

        public Builder withMaxRetryInterval(int maxRetryInterval) {
            this.maxRetryInterval = maxRetryInterval;
            return this;
        }

        public HttpClientConfig build() {
            return new HttpClientConfig(this);
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy