class KsqlSchemaRegistryClientFactory {

  public SchemaRegistryClient get() {
    if (schemaRegistryUrl.equals("")) {
      return new DefaultSchemaRegistryClient();
    }
  
    final RestService restService = serviceSupplier.get();
    if (sslContext != null) {
      restService.setSslSocketFactory(sslContext.getSocketFactory());
    }

    return schemaRegistryClientFactory.create(
        restService,
        1000,
        ImmutableList.of(
            new AvroSchemaProvider(), new ProtobufSchemaProvider(), new JsonSchemaProvider()),
        schemaRegistryClientConfigs,
        httpHeaders
    );
  }

  public  KsqlSchemaRegistryClientFactory(
      final KsqlConfig config,
      final Map<String, String> schemaRegistryHttpHeaders
  );
  public  KsqlSchemaRegistryClientFactory(
      final KsqlConfig config,
      final SSLContext sslContext,
      final Map<String, String> schemaRegistryHttpHeaders
  );
  @VisibleForTesting  KsqlSchemaRegistryClientFactory(final KsqlConfig config,
                                  final Supplier<RestService> serviceSupplier,
                                  final SSLContext sslContext,
                                  final SchemaRegistryClientFactory schemaRegistryClientFactory,
                                  final Map<String, String> httpHeaders);

}