2323import com .optimizely .ab .event .EventHandler ;
2424import com .optimizely .ab .internal .PropertyUtils ;
2525import com .optimizely .ab .notification .NotificationCenter ;
26+ import org .apache .http .impl .client .CloseableHttpClient ;
2627import org .slf4j .Logger ;
2728import org .slf4j .LoggerFactory ;
2829
4849 */
4950public final class OptimizelyFactory {
5051 private static final Logger logger = LoggerFactory .getLogger (OptimizelyFactory .class );
52+ private static CloseableHttpClient customHttpClient ;
5153
5254 /**
5355 * Convenience method for setting the maximum number of events contained within a batch.
@@ -221,7 +223,16 @@ public static Optimizely newDefaultInstance(String sdkKey) {
221223 return newDefaultInstance (() -> null );
222224 }
223225
224- return newDefaultInstance (sdkKey , null );
226+ return newDefaultInstance (sdkKey , "" );
227+ }
228+
229+ public static Optimizely newDefaultInstance (String sdkKey , CloseableHttpClient httpClient ) {
230+ if (sdkKey == null || httpClient == null ) {
231+ logger .error ("Must provide an sdkKey and httpClient, returning non-op Optimizely client" );
232+ return newDefaultInstance (() -> null );
233+ }
234+ customHttpClient = httpClient ;
235+ return newDefaultInstance (sdkKey );
225236 }
226237
227238 /**
@@ -234,6 +245,7 @@ public static Optimizely newDefaultInstance(String sdkKey) {
234245 * @return A new Optimizely instance
235246 */
236247 public static Optimizely newDefaultInstance (String sdkKey , String fallback ) {
248+ if (fallback .equals ("" )) { fallback = null ; }
237249 String datafileAccessToken = PropertyUtils .get (HttpProjectConfigManager .CONFIG_DATAFILE_AUTH_TOKEN );
238250 return newDefaultInstance (sdkKey , fallback , datafileAccessToken );
239251 }
@@ -248,12 +260,21 @@ public static Optimizely newDefaultInstance(String sdkKey, String fallback) {
248260 */
249261 public static Optimizely newDefaultInstance (String sdkKey , String fallback , String datafileAccessToken ) {
250262 NotificationCenter notificationCenter = new NotificationCenter ();
251-
252- HttpProjectConfigManager .Builder builder = HttpProjectConfigManager .builder ()
253- .withDatafile (fallback )
254- .withNotificationCenter (notificationCenter )
255- .withSdkKey (sdkKey );
256-
263+ HttpProjectConfigManager .Builder builder ;
264+ if (customHttpClient != null ) {
265+ OptimizelyHttpClient optimizelyHttpClient = new OptimizelyHttpClient (customHttpClient );
266+
267+ builder = HttpProjectConfigManager .builder ()
268+ .withDatafile (fallback )
269+ .withNotificationCenter (notificationCenter )
270+ .withOptimizelyHttpClient (optimizelyHttpClient )
271+ .withSdkKey (sdkKey );
272+ } else {
273+ builder = HttpProjectConfigManager .builder ()
274+ .withDatafile (fallback )
275+ .withNotificationCenter (notificationCenter )
276+ .withSdkKey (sdkKey );
277+ }
257278 if (datafileAccessToken != null ) {
258279 builder .withDatafileAccessToken (datafileAccessToken );
259280 }
0 commit comments