package com.l7tech.gateway.common.transport;

import com.l7tech.util.DeserializeSafe;
import java.io.Serializable;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;

@DeserializeSafe
public class TransportDescriptor implements Serializable {
   private static final long serialVersionUID = -8284391304992363054L;
   private String scheme = null;
   private String displayName = null;
   private String description = null;
   private boolean usesTls = false;
   private boolean httpBased = false;
   private boolean ftpBased = false;
   private boolean disableBuiltInServices = false;
   private boolean requiresHardwiredServiceResolutionForNonXml = false;
   private boolean requiresHardwiredServiceResolutionAlways = false;
   private boolean supportsHardwiredServiceResolution = false;
   private boolean requiresSpecifiedContentType = false;
   private boolean supportsSpecifiedContentType = false;
   private boolean supportsPrivateThreadPool = false;
   private String customPropertiesPanelClassname = null;
   private String modularAssertionClassname = null;
   private Set<String> supportedTlsVersions = new HashSet<>();
   private String[] enabledCipherSuites = null;
   private Set<SsgConnector.Endpoint> supportedEndpoints = EnumSet.of(SsgConnector.Endpoint.MESSAGE_INPUT);

   public TransportDescriptor() {
   }

   public TransportDescriptor(String var1, boolean var2) {
      this.scheme = var1;
      this.usesTls = var2;
   }

   public String getScheme() {
      return this.scheme;
   }

   public void setScheme(String var1) {
      this.scheme = var1;
   }

   public String getDisplayName() {
      return this.displayName;
   }

   public void setDisplayName(String var1) {
      this.displayName = var1;
   }

   public String getDescription() {
      return this.description;
   }

   public void setDescription(String var1) {
      this.description = var1;
   }

   public boolean isUsesTls() {
      return this.usesTls;
   }

   public void setUsesTls(boolean var1) {
      this.usesTls = var1;
   }

   public boolean isSupportsHardwiredServiceResolution() {
      return this.supportsHardwiredServiceResolution;
   }

   public void setSupportsHardwiredServiceResolution(boolean var1) {
      this.supportsHardwiredServiceResolution = var1;
   }

   public boolean isRequiresHardwiredServiceResolutionForNonXml() {
      return this.requiresHardwiredServiceResolutionForNonXml;
   }

   public void setRequiresHardwiredServiceResolutionForNonXml(boolean var1) {
      this.requiresHardwiredServiceResolutionForNonXml = var1;
   }

   public boolean isRequiresHardwiredServiceResolutionAlways() {
      return this.requiresHardwiredServiceResolutionAlways;
   }

   public void setRequiresHardwiredServiceResolutionAlways(boolean var1) {
      this.requiresHardwiredServiceResolutionAlways = var1;
   }

   public boolean isSupportsSpecifiedContentType() {
      return this.supportsSpecifiedContentType;
   }

   public void setSupportsSpecifiedContentType(boolean var1) {
      this.supportsSpecifiedContentType = var1;
   }

   public boolean isRequiresSpecifiedContentType() {
      return this.requiresSpecifiedContentType;
   }

   public void setRequiresSpecifiedContentType(boolean var1) {
      this.requiresSpecifiedContentType = var1;
   }

   public boolean isSupportsPrivateThreadPool() {
      return this.supportsPrivateThreadPool;
   }

   public void setSupportsPrivateThreadPool(boolean var1) {
      this.supportsPrivateThreadPool = var1;
   }

   public String getCustomPropertiesPanelClassname() {
      return this.customPropertiesPanelClassname;
   }

   public void setCustomPropertiesPanelClassname(String var1) {
      this.customPropertiesPanelClassname = var1;
   }

   public String getModularAssertionClassname() {
      return this.modularAssertionClassname;
   }

   public void setModularAssertionClassname(String var1) {
      this.modularAssertionClassname = var1;
   }

   public Set<SsgConnector.Endpoint> getSupportedEndpoints() {
      return this.supportedEndpoints;
   }

   public void setSupportedEndpoints(Set<SsgConnector.Endpoint> var1) {
      if (var1 == null) {
         var1 = EnumSet.noneOf(SsgConnector.Endpoint.class);
      }

      this.supportedEndpoints = var1;
   }

   public boolean isHttpBased() {
      return this.httpBased;
   }

   public void setHttpBased(boolean var1) {
      this.httpBased = var1;
   }

   public boolean isDisableBuiltInServices() {
      return this.disableBuiltInServices;
   }

   public void setDisableBuiltInServices(boolean var1) {
      this.disableBuiltInServices = var1;
   }

   public Set<String> getSupportedTlsVersions() {
      return this.supportedTlsVersions;
   }

   public void setSupportedTlsVersions(Set<String> var1) {
      this.supportedTlsVersions = var1;
   }

   public boolean isFtpBased() {
      return this.ftpBased;
   }

   public void setFtpBased(boolean var1) {
      this.ftpBased = var1;
   }

   public String[] getEnabledCipherSuites() {
      return this.enabledCipherSuites != null ? (String[])this.enabledCipherSuites.clone() : this.enabledCipherSuites;
   }

   public void setEnabledCipherSuites(String[] var1) {
      this.enabledCipherSuites = var1;
   }

   @Override
   public String toString() {
      String var1 = this.getDisplayName();
      if (var1 != null) {
         return var1;
      }

      var1 = this.getScheme();
      return var1 != null ? var1 : super.toString();
   }
}
