/** * getClientBuilder : initializes client builder * specific to transfer protocol (TLS or SSL) * * @param config : client side config. * @return Client builder. */ private ClientBuilder getClientBuilder(LensClientConfig config) { if (Boolean.valueOf(config.get(LensClientConfig.SSL_ENABLED, String.valueOf(LensClientConfig.DEFAULT_SSL_ENABLED_VALUE)))) { try { log.info("SSL is enabled, Creating https client."); SSLContext sc = SSLContext.getInstance("TLSv1"); System.setProperty("https.protocols", "TLSv1"); TrustManager[] trustedCerts = {new LensTrustManager(config)}; sc.init(null, trustedCerts, new java.security.SecureRandom()); HostnameVerifier trustedHosts = new LensHostnameVerifier(config); return ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier(trustedHosts) .register(MultiPartFeature.class).register(MoxyJsonFeature.class) .register(MoxyJsonConfigurationContextResolver.class); } catch (Exception e) { throw new RuntimeException(e); } } else { log.info("SSL is disabled, Creating http client."); return ClientBuilder.newBuilder().register(MultiPartFeature.class).register(MoxyJsonFeature.class) .register(MoxyJsonConfigurationContextResolver.class); } }