Skip to content

Commit 40ee4a0

Browse files
author
Mike Ng
committed
Merge branch 'master' into 2.1.x
2 parents 0d6ba73 + 6f86613 commit 40ee4a0

17 files changed

+868
-616
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Optimizely Java X SDK Changelog
22

3+
## 2.1.2
4+
5+
August 1st, 2018
6+
7+
### Bug Fixes
8+
* Move serialization to LogEvent.getBody() to improve performance of API calls ([#201](https://github.com/optimizely/java-sdk/pull/201))
9+
310
## 2.1.1
411

512
June 19th, 2018

core-api/src/main/java/com/optimizely/ab/Optimizely.java

+25-18
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@
3535
import com.optimizely.ab.event.EventHandler;
3636
import com.optimizely.ab.event.LogEvent;
3737
import com.optimizely.ab.event.internal.BuildVersionInfo;
38-
import com.optimizely.ab.event.internal.EventBuilder;
38+
import com.optimizely.ab.event.internal.EventFactory;
3939
import com.optimizely.ab.event.internal.payload.EventBatch.ClientEngine;
40-
import com.optimizely.ab.internal.ControlAttribute;
4140
import com.optimizely.ab.notification.NotificationCenter;
4241
import org.slf4j.Logger;
4342
import org.slf4j.LoggerFactory;
@@ -82,7 +81,7 @@ public class Optimizely {
8281
private static final Logger logger = LoggerFactory.getLogger(Optimizely.class);
8382

8483
@VisibleForTesting final DecisionService decisionService;
85-
@VisibleForTesting final EventBuilder eventBuilder;
84+
@VisibleForTesting final EventFactory eventFactory;
8685
@VisibleForTesting final ProjectConfig projectConfig;
8786
@VisibleForTesting final EventHandler eventHandler;
8887
@VisibleForTesting final ErrorHandler errorHandler;
@@ -93,13 +92,13 @@ public class Optimizely {
9392
private Optimizely(@Nonnull ProjectConfig projectConfig,
9493
@Nonnull DecisionService decisionService,
9594
@Nonnull EventHandler eventHandler,
96-
@Nonnull EventBuilder eventBuilder,
95+
@Nonnull EventFactory eventFactory,
9796
@Nonnull ErrorHandler errorHandler,
9897
@Nullable UserProfileService userProfileService) {
9998
this.projectConfig = projectConfig;
10099
this.decisionService = decisionService;
101100
this.eventHandler = eventHandler;
102-
this.eventBuilder = eventBuilder;
101+
this.eventFactory = eventFactory;
103102
this.errorHandler = errorHandler;
104103
this.userProfileService = userProfileService;
105104
}
@@ -193,16 +192,20 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig,
193192
@Nonnull Map<String, String> filteredAttributes,
194193
@Nonnull Variation variation) {
195194
if (experiment.isRunning()) {
196-
LogEvent impressionEvent = eventBuilder.createImpressionEvent(
195+
LogEvent impressionEvent = eventFactory.createImpressionEvent(
197196
projectConfig,
198197
experiment,
199198
variation,
200199
userId,
201200
filteredAttributes);
202201
logger.info("Activating user \"{}\" in experiment \"{}\".", userId, experiment.getKey());
203-
logger.debug(
204-
"Dispatching impression event to URL {} with params {} and payload \"{}\".",
205-
impressionEvent.getEndpointUrl(), impressionEvent.getRequestParams(), impressionEvent.getBody());
202+
203+
if (logger.isDebugEnabled()) {
204+
logger.debug(
205+
"Dispatching impression event to URL {} with params {} and payload \"{}\".",
206+
impressionEvent.getEndpointUrl(), impressionEvent.getRequestParams(), impressionEvent.getBody());
207+
}
208+
206209
try {
207210
eventHandler.dispatchEvent(impressionEvent);
208211
} catch (Exception e) {
@@ -279,7 +282,7 @@ public void track(@Nonnull String eventName,
279282
}
280283

281284
// create the conversion event request parameters, then dispatch
282-
LogEvent conversionEvent = eventBuilder.createConversionEvent(
285+
LogEvent conversionEvent = eventFactory.createConversionEvent(
283286
projectConfig,
284287
experimentVariationMap,
285288
userId,
@@ -295,8 +298,12 @@ public void track(@Nonnull String eventName,
295298
}
296299

297300
logger.info("Tracking event \"{}\" for user \"{}\".", eventName, userId);
298-
logger.debug("Dispatching conversion event to URL {} with params {} and payload \"{}\".",
299-
conversionEvent.getEndpointUrl(), conversionEvent.getRequestParams(), conversionEvent.getBody());
301+
302+
if (logger.isDebugEnabled()) {
303+
logger.debug("Dispatching conversion event to URL {} with params {} and payload \"{}\".",
304+
conversionEvent.getEndpointUrl(), conversionEvent.getRequestParams(), conversionEvent.getBody());
305+
}
306+
300307
try {
301308
eventHandler.dispatchEvent(conversionEvent);
302309
} catch (Exception e) {
@@ -829,7 +836,7 @@ public static class Builder {
829836
private DecisionService decisionService;
830837
private ErrorHandler errorHandler;
831838
private EventHandler eventHandler;
832-
private EventBuilder eventBuilder;
839+
private EventFactory eventFactory;
833840
private ClientEngine clientEngine;
834841
private String clientVersion;
835842
private ProjectConfig projectConfig;
@@ -871,8 +878,8 @@ public Builder withClientVersion(String clientVersion) {
871878
return this;
872879
}
873880

874-
protected Builder withEventBuilder(EventBuilder eventBuilder) {
875-
this.eventBuilder = eventBuilder;
881+
protected Builder withEventBuilder(EventFactory eventFactory) {
882+
this.eventFactory = eventFactory;
876883
return this;
877884
}
878885

@@ -900,8 +907,8 @@ public Optimizely build() throws ConfigParseException {
900907
}
901908

902909

903-
if (eventBuilder == null) {
904-
eventBuilder = new EventBuilder(clientEngine, clientVersion);
910+
if (eventFactory == null) {
911+
eventFactory = new EventFactory(clientEngine, clientVersion);
905912
}
906913

907914
if (errorHandler == null) {
@@ -912,7 +919,7 @@ public Optimizely build() throws ConfigParseException {
912919
decisionService = new DecisionService(bucketer, errorHandler, projectConfig, userProfileService);
913920
}
914921

915-
Optimizely optimizely = new Optimizely(projectConfig, decisionService, eventHandler, eventBuilder, errorHandler, userProfileService);
922+
Optimizely optimizely = new Optimizely(projectConfig, decisionService, eventHandler, eventFactory, errorHandler, userProfileService);
916923
optimizely.initialize();
917924
return optimizely;
918925
}

core-api/src/main/java/com/optimizely/ab/event/LogEvent.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
*/
1717
package com.optimizely.ab.event;
1818

19+
import com.optimizely.ab.event.internal.payload.EventBatch;
20+
import com.optimizely.ab.event.internal.serializer.DefaultJsonSerializer;
21+
import com.optimizely.ab.event.internal.serializer.Serializer;
22+
1923
import java.util.Map;
2024

2125
import javax.annotation.Nonnull;
@@ -30,16 +34,16 @@ public class LogEvent {
3034
private final RequestMethod requestMethod;
3135
private final String endpointUrl;
3236
private final Map<String, String> requestParams;
33-
private final String body;
37+
private final EventBatch eventBatch;
3438

3539
public LogEvent(@Nonnull RequestMethod requestMethod,
3640
@Nonnull String endpointUrl,
3741
@Nonnull Map<String, String> requestParams,
38-
@Nonnull String body) {
42+
EventBatch eventBatch) {
3943
this.requestMethod = requestMethod;
4044
this.endpointUrl = endpointUrl;
4145
this.requestParams = requestParams;
42-
this.body = body;
46+
this.eventBatch = eventBatch;
4347
}
4448

4549
//======== Getters ========//
@@ -57,7 +61,12 @@ public Map<String, String> getRequestParams() {
5761
}
5862

5963
public String getBody() {
60-
return body;
64+
if (eventBatch == null) {
65+
return "";
66+
}
67+
68+
Serializer serializer = DefaultJsonSerializer.getInstance();
69+
return serializer.serialize(eventBatch);
6170
}
6271

6372
//======== Overriding method ========//
@@ -68,7 +77,7 @@ public String toString() {
6877
"requestMethod=" + requestMethod +
6978
", endpointUrl='" + endpointUrl + '\'' +
7079
", requestParams=" + requestParams +
71-
", body='" + body + '\'' +
80+
", body='" + getBody() + '\'' +
7281
'}';
7382
}
7483

core-api/src/main/java/com/optimizely/ab/event/internal/EventBuilder.java

-144
This file was deleted.

0 commit comments

Comments
 (0)