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

io.vertx.mssqlclient.MSSQLConnectOptions Maven / Gradle / Ivy

There is a newer version: 5.0.0.CR3
Show newest version
/*
 * Copyright (c) 2011-2022 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */

package io.vertx.mssqlclient;

import io.vertx.codegen.annotations.DataObject;
import io.vertx.codegen.json.annotations.JsonGen;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonObject;
import io.vertx.core.net.*;
import io.vertx.core.tracing.TracingPolicy;
import io.vertx.mssqlclient.impl.MSSQLConnectionUriParser;
import io.vertx.sqlclient.SqlConnectOptions;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * Connect options for configuring {@link MSSQLConnection}.
 */
@DataObject
@JsonGen(publicConverter = false)
public class MSSQLConnectOptions extends SqlConnectOptions {

  /**
   * @return the {@code options} as MSSQL specific connect options
   */
  public static MSSQLConnectOptions wrap(SqlConnectOptions options) {
    if (options instanceof MSSQLConnectOptions) {
      return (MSSQLConnectOptions) options;
    } else {
      return new MSSQLConnectOptions(options);
    }
  }

  /**
   * Provide a {@link MSSQLConnectOptions} configured from a connection URI.
   *
   * @param connectionUri the connection URI to configure from
   * @return a {@link MSSQLConnectOptions} parsed from the connection URI
   * @throws IllegalArgumentException when the {@code connectionUri} is in an invalid format
   */
  public static MSSQLConnectOptions fromUri(String connectionUri) throws IllegalArgumentException {
    JsonObject parsedConfiguration = MSSQLConnectionUriParser.parse(connectionUri);
    return new MSSQLConnectOptions(parsedConfiguration);
  }

  public static final String DEFAULT_HOST = "localhost";
  public static final int DEFAULT_PORT = 1433;
  public static final String DEFAULT_USER = "sa";
  public static final String DEFAULT_PASSWORD = "";
  public static final String DEFAULT_DATABASE = "";
  public static final String DEFAULT_APP_NAME = "vertx-mssql-client";
  public static final String DEFAULT_CLIENT_INTERFACE_NAME = "Vert.x";
  public static final Map DEFAULT_PROPERTIES;
  public static final int MIN_PACKET_SIZE = 512;
  public static final int MAX_PACKET_SIZE = 32767;
  public static final int DEFAULT_PACKET_SIZE = 4096;

  static {
    Map defaultProperties = new HashMap<>();
    defaultProperties.put("appName", DEFAULT_APP_NAME);
    defaultProperties.put("clientInterfaceName", DEFAULT_CLIENT_INTERFACE_NAME);
    DEFAULT_PROPERTIES = defaultProperties;
  }

  private int packetSize;

  public MSSQLConnectOptions() {
    super();
  }

  public MSSQLConnectOptions(JsonObject json) {
    super(json);
    MSSQLConnectOptionsConverter.fromJson(json, this);
  }

  public MSSQLConnectOptions(SqlConnectOptions other) {
    super(other);
    if (other instanceof MSSQLConnectOptions) {
      MSSQLConnectOptions opts = (MSSQLConnectOptions) other;
      copyFields(opts);
    }
  }

  public MSSQLConnectOptions(MSSQLConnectOptions other) {
    super(other);
    copyFields(other);
  }

  private void copyFields(MSSQLConnectOptions other) {
    packetSize = other.packetSize;
  }

  @Override
  public MSSQLConnectOptions setHost(String host) {
    return (MSSQLConnectOptions) super.setHost(host);
  }

  @Override
  public MSSQLConnectOptions setPort(int port) {
    return (MSSQLConnectOptions) super.setPort(port);
  }

  @Override
  public MSSQLConnectOptions setUser(String user) {
    return (MSSQLConnectOptions) super.setUser(user);
  }

  @Override
  public MSSQLConnectOptions setPassword(String password) {
    return (MSSQLConnectOptions) super.setPassword(password);
  }

  @Override
  public MSSQLConnectOptions setDatabase(String database) {
    return (MSSQLConnectOptions) super.setDatabase(database);
  }

  @Override
  public MSSQLConnectOptions setProperties(Map properties) {
    return (MSSQLConnectOptions) super.setProperties(properties);
  }

  @Override
  public MSSQLConnectOptions addProperty(String key, String value) {
    return (MSSQLConnectOptions) super.addProperty(key, value);
  }

  /**
   * Get the desired size (in bytes) for TDS packets.
   *
   * @return the desired packet size
   */
  public int getPacketSize() {
    return packetSize;
  }

  /**
   * Set the desired size (in bytes) for TDS packets.
   * 

* The client will use the value as a parameter in the LOGIN7 packet. * The server may or may not accept it. * * @param packetSize the desired packet size (in bytes) * @return a reference to this, so the API can be used fluently * @throws IllegalArgumentException if {@code packetSize} is smaller than {@link #MIN_PACKET_SIZE} or bigger than {@link #MAX_PACKET_SIZE} */ public MSSQLConnectOptions setPacketSize(int packetSize) { if (packetSize < MIN_PACKET_SIZE || packetSize > MAX_PACKET_SIZE) { throw new IllegalArgumentException("Packet size: " + packetSize); } this.packetSize = packetSize; return this; } @Override public MSSQLConnectOptions setSendBufferSize(int sendBufferSize) { return (MSSQLConnectOptions) super.setSendBufferSize(sendBufferSize); } @Override public MSSQLConnectOptions setReceiveBufferSize(int receiveBufferSize) { return (MSSQLConnectOptions) super.setReceiveBufferSize(receiveBufferSize); } @Override public MSSQLConnectOptions setReuseAddress(boolean reuseAddress) { return (MSSQLConnectOptions) super.setReuseAddress(reuseAddress); } @Override public MSSQLConnectOptions setReusePort(boolean reusePort) { return (MSSQLConnectOptions) super.setReusePort(reusePort); } @Override public MSSQLConnectOptions setTrafficClass(int trafficClass) { return (MSSQLConnectOptions) super.setTrafficClass(trafficClass); } @Override public MSSQLConnectOptions setTcpNoDelay(boolean tcpNoDelay) { return (MSSQLConnectOptions) super.setTcpNoDelay(tcpNoDelay); } @Override public MSSQLConnectOptions setTcpKeepAlive(boolean tcpKeepAlive) { return (MSSQLConnectOptions) super.setTcpKeepAlive(tcpKeepAlive); } @Override public MSSQLConnectOptions setSoLinger(int soLinger) { return (MSSQLConnectOptions) super.setSoLinger(soLinger); } @Override public MSSQLConnectOptions setIdleTimeout(int idleTimeout) { return (MSSQLConnectOptions) super.setIdleTimeout(idleTimeout); } @Override public MSSQLConnectOptions setIdleTimeoutUnit(TimeUnit idleTimeoutUnit) { return (MSSQLConnectOptions) super.setIdleTimeoutUnit(idleTimeoutUnit); } @Override public MSSQLConnectOptions setKeyCertOptions(KeyCertOptions options) { return (MSSQLConnectOptions) super.setKeyCertOptions(options); } @Override public MSSQLConnectOptions setKeyStoreOptions(JksOptions options) { return (MSSQLConnectOptions) super.setKeyStoreOptions(options); } @Override public MSSQLConnectOptions setPfxKeyCertOptions(PfxOptions options) { return (MSSQLConnectOptions) super.setPfxKeyCertOptions(options); } @Override public MSSQLConnectOptions setPemKeyCertOptions(PemKeyCertOptions options) { return (MSSQLConnectOptions) super.setPemKeyCertOptions(options); } @Override public MSSQLConnectOptions setTrustOptions(TrustOptions options) { return (MSSQLConnectOptions) super.setTrustOptions(options); } @Override public MSSQLConnectOptions setTrustStoreOptions(JksOptions options) { return (MSSQLConnectOptions) super.setTrustStoreOptions(options); } @Override public MSSQLConnectOptions setPemTrustOptions(PemTrustOptions options) { return (MSSQLConnectOptions) super.setPemTrustOptions(options); } @Override public MSSQLConnectOptions setPfxTrustOptions(PfxOptions options) { return (MSSQLConnectOptions) super.setPfxTrustOptions(options); } @Override public MSSQLConnectOptions addEnabledCipherSuite(String suite) { return (MSSQLConnectOptions) super.addEnabledCipherSuite(suite); } @Override public MSSQLConnectOptions addEnabledSecureTransportProtocol(String protocol) { return (MSSQLConnectOptions) super.addEnabledSecureTransportProtocol(protocol); } @Override public MSSQLConnectOptions removeEnabledSecureTransportProtocol(String protocol) { return (MSSQLConnectOptions) super.removeEnabledSecureTransportProtocol(protocol); } @Override public MSSQLConnectOptions setUseAlpn(boolean useAlpn) { return (MSSQLConnectOptions) super.setUseAlpn(useAlpn); } @Override public MSSQLConnectOptions setSslEngineOptions(SSLEngineOptions sslEngineOptions) { return (MSSQLConnectOptions) super.setSslEngineOptions(sslEngineOptions); } @Override public MSSQLConnectOptions setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions) { return (MSSQLConnectOptions) super.setJdkSslEngineOptions(sslEngineOptions); } @Override public MSSQLConnectOptions setTcpFastOpen(boolean tcpFastOpen) { return (MSSQLConnectOptions) super.setTcpFastOpen(tcpFastOpen); } @Override public MSSQLConnectOptions setTcpCork(boolean tcpCork) { return (MSSQLConnectOptions) super.setTcpCork(tcpCork); } @Override public MSSQLConnectOptions setTcpQuickAck(boolean tcpQuickAck) { return (MSSQLConnectOptions) super.setTcpQuickAck(tcpQuickAck); } @Override public MSSQLConnectOptions setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions) { return (MSSQLConnectOptions) super.setOpenSslEngineOptions(sslEngineOptions); } @Override public MSSQLConnectOptions addCrlPath(String crlPath) throws NullPointerException { return (MSSQLConnectOptions) super.addCrlPath(crlPath); } @Override public MSSQLConnectOptions addCrlValue(Buffer crlValue) throws NullPointerException { return (MSSQLConnectOptions) super.addCrlValue(crlValue); } @Override public MSSQLConnectOptions setTrustAll(boolean trustAll) { return (MSSQLConnectOptions) super.setTrustAll(trustAll); } @Override public MSSQLConnectOptions setConnectTimeout(int connectTimeout) { return (MSSQLConnectOptions) super.setConnectTimeout(connectTimeout); } @Override public MSSQLConnectOptions setMetricsName(String metricsName) { return (MSSQLConnectOptions) super.setMetricsName(metricsName); } @Override public MSSQLConnectOptions setReconnectAttempts(int attempts) { return (MSSQLConnectOptions) super.setReconnectAttempts(attempts); } @Override public MSSQLConnectOptions setReconnectInterval(long interval) { return (MSSQLConnectOptions) super.setReconnectInterval(interval); } @Override public MSSQLConnectOptions setHostnameVerificationAlgorithm(String hostnameVerificationAlgorithm) { return (MSSQLConnectOptions) super.setHostnameVerificationAlgorithm(hostnameVerificationAlgorithm); } @Override public MSSQLConnectOptions setLogActivity(boolean logEnabled) { return (MSSQLConnectOptions) super.setLogActivity(logEnabled); } @Override public MSSQLConnectOptions setProxyOptions(ProxyOptions proxyOptions) { return (MSSQLConnectOptions) super.setProxyOptions(proxyOptions); } @Override public MSSQLConnectOptions setLocalAddress(String localAddress) { return (MSSQLConnectOptions) super.setLocalAddress(localAddress); } @Override public MSSQLConnectOptions setEnabledSecureTransportProtocols(Set enabledSecureTransportProtocols) { return (MSSQLConnectOptions) super.setEnabledSecureTransportProtocols(enabledSecureTransportProtocols); } @Override public MSSQLConnectOptions setSslHandshakeTimeout(long sslHandshakeTimeout) { return (MSSQLConnectOptions) super.setSslHandshakeTimeout(sslHandshakeTimeout); } @Override public MSSQLConnectOptions setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit) { return (MSSQLConnectOptions) super.setSslHandshakeTimeoutUnit(sslHandshakeTimeoutUnit); } @Override public MSSQLConnectOptions setTracingPolicy(TracingPolicy tracingPolicy) { return (MSSQLConnectOptions) super.setTracingPolicy(tracingPolicy); } @Override public MSSQLConnectOptions setSsl(boolean ssl) { return (MSSQLConnectOptions) super.setSsl(ssl); } @Override public MSSQLConnectOptions setNonProxyHosts(List nonProxyHosts) { return (MSSQLConnectOptions) super.setNonProxyHosts(nonProxyHosts); } /** * Initialize with the default options. */ protected void init() { this.setHost(DEFAULT_HOST); this.setPort(DEFAULT_PORT); this.setUser(DEFAULT_USER); this.setPassword(DEFAULT_PASSWORD); this.setDatabase(DEFAULT_DATABASE); this.setProperties(new HashMap<>(DEFAULT_PROPERTIES)); packetSize = DEFAULT_PACKET_SIZE; } @Override public JsonObject toJson() { JsonObject json = super.toJson(); MSSQLConnectOptionsConverter.toJson(this, json); return json; } @Override public MSSQLConnectOptions merge(JsonObject other) { JsonObject json = toJson(); json.mergeIn(other); return new MSSQLConnectOptions(json); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy