diff --git a/core-api/src/main/java/com/optimizely/ab/event/BatchEventProcessor.java b/core-api/src/main/java/com/optimizely/ab/event/BatchEventProcessor.java index c99d3bb52..201f6e8ee 100644 --- a/core-api/src/main/java/com/optimizely/ab/event/BatchEventProcessor.java +++ b/core-api/src/main/java/com/optimizely/ab/event/BatchEventProcessor.java @@ -313,6 +313,10 @@ public BatchEventProcessor build(boolean shouldStart) { timeoutMillis = DEFAULT_TIMEOUT_INTERVAL; } + if (eventHandler == null) { + throw new IllegalArgumentException("EventHandler was not configured"); + } + if (executor == null) { final ThreadFactory threadFactory = Executors.defaultThreadFactory(); executor = Executors.newSingleThreadExecutor(runnable -> { diff --git a/core-api/src/test/java/com/optimizely/ab/event/BatchEventProcessorTest.java b/core-api/src/test/java/com/optimizely/ab/event/BatchEventProcessorTest.java index b9d45fc88..8f8e94a8a 100644 --- a/core-api/src/test/java/com/optimizely/ab/event/BatchEventProcessorTest.java +++ b/core-api/src/test/java/com/optimizely/ab/event/BatchEventProcessorTest.java @@ -67,7 +67,9 @@ public void setUp() throws Exception { @After public void tearDown() throws Exception { - eventProcessor.close(); + if (eventProcessor != null) { + eventProcessor.close(); + } } @Test @@ -288,6 +290,11 @@ public void testInvalidTimeoutUsesDefault() { assertEquals(eventProcessor.timeoutMillis, BatchEventProcessor.DEFAULT_TIMEOUT_INTERVAL); } + @Test(expected = IllegalArgumentException.class) + public void testDefaultEventHandler() { + eventProcessor = BatchEventProcessor.builder().build(); + } + private void setEventProcessor(EventHandler eventHandler) { eventProcessor = BatchEventProcessor.builder() .withEventQueue(eventQueue) diff --git a/core-httpclient-impl/README.md b/core-httpclient-impl/README.md index 4d7c32c14..0546a8f68 100644 --- a/core-httpclient-impl/README.md +++ b/core-httpclient-impl/README.md @@ -24,6 +24,8 @@ compile 'com.optimizely.ab:core-httpclient-impl:{VERSION}' ## Basic usage ```java +package com.optimizely; + import com.optimizely.ab.Optimizely; import com.optimizely.ab.OptimizelyFactory; @@ -38,9 +40,13 @@ public class App { ## Advanced usage ```java +package com.optimizely; + import com.optimizely.ab.Optimizely; +import com.optimizely.ab.config.ProjectConfigManager; import com.optimizely.ab.config.HttpProjectConfigManager; import com.optimizely.ab.event.AsyncEventHandler; +import com.optimizely.ab.event.EventHandler; import java.util.concurrent.TimeUnit; public class App { @@ -54,12 +60,12 @@ public class App { ProjectConfigManager projectConfigManager = HttpProjectConfigManager.builder() .withSdkKey(sdkKey) - .withPollingInterval(1, TimeUnit.MINUTES) + .withPollingInterval(1L, TimeUnit.MINUTES) .build(); Optimizely optimizely = Optimizely.builder() - .withConfig(projectConfigManager) .withEventHandler(eventHandler) + .withConfigManager(projectConfigManager) .build(); } }