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

io.dropwizard.redis.clientoptions.ClientOptionsFactory Maven / Gradle / Ivy

package io.dropwizard.redis.clientoptions;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.dropwizard.redis.socket.SocketOptionsFactory;
import io.dropwizard.redis.ssl.SslOptionsFactory;
import io.dropwizard.redis.timeout.TimeoutOptionsFactory;
import io.lettuce.core.ClientOptions;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

public class ClientOptionsFactory {
    @JsonProperty
    protected boolean pingBeforeActivateConnection = ClientOptions.DEFAULT_PING_BEFORE_ACTIVATE_CONNECTION;

    @JsonProperty
    protected boolean cancelCommandsOnReconnectFailure = ClientOptions.DEFAULT_CANCEL_CMD_RECONNECT_FAIL;

    @JsonProperty
    protected boolean publishOnScheduler = ClientOptions.DEFAULT_PUBLISH_ON_SCHEDULER;

    @JsonProperty
    protected boolean autoReconnect = ClientOptions.DEFAULT_AUTO_RECONNECT;

    @JsonProperty
    protected boolean suspendReconnectOnProtocolFailure = ClientOptions.DEFAULT_SUSPEND_RECONNECT_PROTO_FAIL;

    @Min(0)
    @JsonProperty
    protected int requestQueueSize = ClientOptions.DEFAULT_REQUEST_QUEUE_SIZE;

    @NotNull
    @JsonProperty
    protected ClientOptions.DisconnectedBehavior disconnectedBehavior = ClientOptions.DEFAULT_DISCONNECTED_BEHAVIOR;

    @Valid
    @NotNull
    @JsonProperty
    protected SocketOptionsFactory socketOptions = new SocketOptionsFactory();

    @Valid
    @JsonProperty
    protected SslOptionsFactory sslOptions;

    @Valid
    @NotNull
    @JsonProperty
    protected TimeoutOptionsFactory timeoutOptions = new TimeoutOptionsFactory();

    public boolean isPingBeforeActivateConnection() {
        return pingBeforeActivateConnection;
    }

    public void setPingBeforeActivateConnection(final boolean pingBeforeActivateConnection) {
        this.pingBeforeActivateConnection = pingBeforeActivateConnection;
    }

    public boolean isCancelCommandsOnReconnectFailure() {
        return cancelCommandsOnReconnectFailure;
    }

    public void setCancelCommandsOnReconnectFailure(final boolean cancelCommandsOnReconnectFailure) {
        this.cancelCommandsOnReconnectFailure = cancelCommandsOnReconnectFailure;
    }

    public boolean isPublishOnScheduler() {
        return publishOnScheduler;
    }

    public void setPublishOnScheduler(final boolean publishOnScheduler) {
        this.publishOnScheduler = publishOnScheduler;
    }

    public boolean isAutoReconnect() {
        return autoReconnect;
    }

    public void setAutoReconnect(final boolean autoReconnect) {
        this.autoReconnect = autoReconnect;
    }

    public boolean isSuspendReconnectOnProtocolFailure() {
        return suspendReconnectOnProtocolFailure;
    }

    public void setSuspendReconnectOnProtocolFailure(final boolean suspendReconnectOnProtocolFailure) {
        this.suspendReconnectOnProtocolFailure = suspendReconnectOnProtocolFailure;
    }

    public int getRequestQueueSize() {
        return requestQueueSize;
    }

    public void setRequestQueueSize(final int requestQueueSize) {
        this.requestQueueSize = requestQueueSize;
    }

    public ClientOptions.DisconnectedBehavior getDisconnectedBehavior() {
        return disconnectedBehavior;
    }

    public void setDisconnectedBehavior(final ClientOptions.DisconnectedBehavior disconnectedBehavior) {
        this.disconnectedBehavior = disconnectedBehavior;
    }

    public SocketOptionsFactory getSocketOptions() {
        return socketOptions;
    }

    public void setSocketOptions(final SocketOptionsFactory socketOptions) {
        this.socketOptions = socketOptions;
    }

    public SslOptionsFactory getSslOptions() {
        return sslOptions;
    }

    public void setSslOptions(final SslOptionsFactory sslOptions) {
        this.sslOptions = sslOptions;
    }

    public TimeoutOptionsFactory getTimeoutOptions() {
        return timeoutOptions;
    }

    public void setTimeoutOptions(final TimeoutOptionsFactory timeoutOptions) {
        this.timeoutOptions = timeoutOptions;
    }

    public ClientOptions build() {
        final ClientOptions.Builder builder = ClientOptions.builder();

        return addBuildParams(builder).build();
    }

    protected ClientOptions.Builder addBuildParams(final ClientOptions.Builder builder) {
         builder.pingBeforeActivateConnection(pingBeforeActivateConnection)
                .cancelCommandsOnReconnectFailure(cancelCommandsOnReconnectFailure)
                .publishOnScheduler(publishOnScheduler)
                .autoReconnect(autoReconnect)
                .suspendReconnectOnProtocolFailure(suspendReconnectOnProtocolFailure)
                .requestQueueSize(requestQueueSize)
                .disconnectedBehavior(disconnectedBehavior)
                .socketOptions(socketOptions.build())
                .timeoutOptions(timeoutOptions.build());

        if (sslOptions != null && sslOptions.isEnabled()) {
            builder.sslOptions(sslOptions.build());
        }

        return builder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy