package com.l7tech.common.io;

import com.l7tech.util.Functions;
import com.l7tech.util.Functions.Nullary;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import javax.net.ssl.SSLSocketFactory;

public class SSLSocketFactoryWrapper extends SSLSocketFactory {
   private final Nullary<SSLSocketFactory> a;

   public SSLSocketFactoryWrapper(SSLSocketFactory var1) {
      this(Functions.nullary(var1));
   }

   public SSLSocketFactoryWrapper(Nullary<SSLSocketFactory> var1) {
      this.a = var1;
   }

   @Override
   public Socket createSocket(Socket var1, String var2, int var3, boolean var4) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2, var3, var4));
   }

   @Override
   public String[] getDefaultCipherSuites() {
      return ((SSLSocketFactory)this.a.call()).getDefaultCipherSuites();
   }

   @Override
   public String[] getSupportedCipherSuites() {
      return ((SSLSocketFactory)this.a.call()).getSupportedCipherSuites();
   }

   @Override
   public Socket createSocket() throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket());
   }

   @Override
   public Socket createSocket(InetAddress var1, int var2) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2));
   }

   @Override
   public Socket createSocket(InetAddress var1, int var2, InetAddress var3, int var4) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2, var3, var4));
   }

   @Override
   public Socket createSocket(String var1, int var2) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2));
   }

   @Override
   public Socket createSocket(String var1, int var2, InetAddress var3, int var4) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2, var3, var4));
   }

   @Override
   public Socket createSocket(Socket var1, InputStream var2, boolean var3) throws IOException {
      return this.notifySocket(((SSLSocketFactory)this.a.call()).createSocket(var1, var2, var3));
   }

   public static SSLSocketFactoryWrapper wrapAndSetTlsVersionAndCipherSuites(SSLSocketFactory var0, String[] var1, String[] var2) {
      return new ah(var0, var1, var2);
   }

   protected Socket notifySocket(Socket var1) {
      return var1;
   }
}
