content: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.camel.component.thrift;
  
  import java.net.URI;
  
  import org.apache.camel.spi.Metadata;
  import org.apache.camel.spi.UriParam;
  import org.apache.camel.spi.UriParams;
  import org.apache.camel.spi.UriPath;
  import org.apache.camel.support.jsse.SSLContextParameters;
  
  @UriParams
  public class ThriftConfiguration {
  
      @UriPath
      @Metadata(required = true)
      private String host;
  
      @UriPath
      @Metadata(required = true)
      private int port;
  
      @UriPath
      @Metadata(required = true)
      private String service;
  
      @UriParam(label = "producer")
      private String method;
  
      @UriParam(defaultValue = "BINARY")
      private ThriftExchangeProtocol exchangeProtocol = ThriftExchangeProtocol.BINARY;
  
      @UriParam(label = "security", defaultValue = "PLAINTEXT")
      private ThriftNegotiationType negotiationType = ThriftNegotiationType.PLAINTEXT;
  
      @UriParam(label = "security")
      private SSLContextParameters sslParameters;
  
      @UriParam(defaultValue = "NONE")
      private ThriftCompressionType compressionType = ThriftCompressionType.NONE;
  
      @UriParam(label = "consumer")
      private int clientTimeout;
  
      @UriParam(label = "consumer", defaultValue = "" + ThriftConstants.THRIFT_CONSUMER_POOL_SIZE)
      private int poolSize = ThriftConstants.THRIFT_CONSUMER_POOL_SIZE;
  
      @UriParam(label = "consumer", defaultValue = "" + ThriftConstants.THRIFT_CONSUMER_MAX_POOL_SIZE)
      private int maxPoolSize = ThriftConstants.THRIFT_CONSUMER_MAX_POOL_SIZE;
  
      /**
       * Fully qualified service name from the thrift descriptor file (package dot service definition name)
       */
      public String getService() {
          return service;
      }
  
      public void setService(String service) {
          this.service = service;
      }
  
      /**
       * The Thrift invoked method name
       */
      public String getMethod() {
          return method;
      }
  
      public void setMethod(String method) {
          this.method = method;
      }
  
      /**
       * Exchange protocol serialization type
       */
      public ThriftExchangeProtocol getExchangeProtocol() {
          return exchangeProtocol;
      }
  
      public void setExchangeProtocol(ThriftExchangeProtocol exchangeProtocol) {
          this.exchangeProtocol = exchangeProtocol;
      }
  
      /**
       * Security negotiation type
       */
      public ThriftNegotiationType getNegotiationType() {
          return negotiationType;
      }
  
      public void setNegotiationType(ThriftNegotiationType negotiationType) {
          this.negotiationType = negotiationType;
      }
  
      /**
       * Configuration parameters for SSL/TLS security negotiation
       */
      public SSLContextParameters getSslParameters() {
          return sslParameters;
      }
  
      public void setSslParameters(SSLContextParameters sslParameters) {
          this.sslParameters = sslParameters;
      }
  
      /**
       * Protocol compression mechanism type
       */
      public ThriftCompressionType getCompressionType() {
          return compressionType;
      }
  
      public void setCompressionType(ThriftCompressionType compressionType) {
          this.compressionType = compressionType;
      }
  
      /**
       * The Thrift server host name. This is localhost or 0.0.0.0 (if not defined) when being a consumer or remote server
       * host name when using producer.
       */
      public String getHost() {
          return host;
      }
  
      public void setHost(String host) {
          this.host = host;
      }
  
      /**
       * The Thrift server port
       */
      public int getPort() {
          return port;
      }
  
      public void setPort(int port) {
          this.port = port;
      }
  
      /**
       * Client timeout for consumers
       */
      public int getClientTimeout() {
          return clientTimeout;
      }
  
      public void setClientTimeout(int clientTimeout) {
          this.clientTimeout = clientTimeout;
      }
  
      /**
       * The Thrift server consumer initial thread pool size
       */
      public int getPoolSize() {
          return poolSize;
      }
  
      public void setPoolSize(int poolSize) {
          this.poolSize = poolSize;
      }
  
      /**
       * The Thrift server consumer max thread pool size
       */
      public int getMaxPoolSize() {
          return maxPoolSize;
      }
  
      public void setMaxPoolSize(int maxPoolSize) {
          this.maxPoolSize = maxPoolSize;
      }
  
      public void parseURI(URI uri) {
          setHost(uri.getHost());
  
          if (uri.getPort() != -1) {
              setPort(uri.getPort());
          }
  
          setService(uri.getPath().substring(1));
      }
  }
  