ConnectionOptions.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.core.amqp.implementation;

import com.azure.core.amqp.AmqpRetryOptions;
import com.azure.core.amqp.AmqpTransportType;
import com.azure.core.amqp.ProxyOptions;
import com.azure.core.annotation.Immutable;
import com.azure.core.credential.TokenCredential;
import com.azure.core.util.ClientOptions;
import org.apache.qpid.proton.engine.SslDomain;
import reactor.core.scheduler.Scheduler;

import java.util.Objects;

/**
 * A wrapper class that contains all parameters that are needed to establish a connection to an AMQP message broker.
 */
@Immutable
public class ConnectionOptions {
    private final TokenCredential tokenCredential;
    private final AmqpTransportType transport;
    private final AmqpRetryOptions retryOptions;
    private final ProxyOptions proxyOptions;
    private final Scheduler scheduler;
    private final String fullyQualifiedNamespace;
    private final CbsAuthorizationType authorizationType;
    private final ClientOptions clientOptions;
    private final SslDomain.VerifyMode verifyMode;

    public ConnectionOptions(String fullyQualifiedNamespace, TokenCredential tokenCredential,
            CbsAuthorizationType authorizationType, AmqpTransportType transport, AmqpRetryOptions retryOptions,
            ProxyOptions proxyOptions, Scheduler scheduler, ClientOptions clientOptions,
            SslDomain.VerifyMode verifyMode) {

        this.fullyQualifiedNamespace = Objects.requireNonNull(fullyQualifiedNamespace,
            "'fullyQualifiedNamespace' is required.");
        this.tokenCredential = Objects.requireNonNull(tokenCredential, "'tokenCredential' is required.");
        this.authorizationType = Objects.requireNonNull(authorizationType, "'authorizationType' is required.");
        this.transport = Objects.requireNonNull(transport, "'transport' is required.");
        this.retryOptions = Objects.requireNonNull(retryOptions, "'retryOptions' is required.");
        this.proxyOptions = Objects.requireNonNull(proxyOptions, "'proxyConfiguration' is required.");
        this.scheduler = Objects.requireNonNull(scheduler, "'scheduler' is required.");
        this.clientOptions = Objects.requireNonNull(clientOptions, "'clientOptions' is required.");
        this.verifyMode = Objects.requireNonNull(verifyMode, "'verifyMode' is required.");
    }

    public CbsAuthorizationType getAuthorizationType() {
        return authorizationType;
    }

    public ClientOptions getClientOptions() {
        return clientOptions;
    }

    public String getFullyQualifiedNamespace() {
        return fullyQualifiedNamespace;
    }

    public AmqpRetryOptions getRetry() {
        return retryOptions;
    }

    public ProxyOptions getProxyOptions() {
        return proxyOptions;
    }

    public Scheduler getScheduler() {
        return scheduler;
    }

    public SslDomain.VerifyMode getSslVerifyMode() {
        return verifyMode;
    }

    public TokenCredential getTokenCredential() {
        return tokenCredential;
    }

    public AmqpTransportType getTransportType() {
        return transport;
    }
}