27
27
import com .optimizely .ab .event .EventHandler ;
28
28
import com .optimizely .ab .event .LogEvent ;
29
29
import com .optimizely .ab .event .NoopEventHandler ;
30
- import com .optimizely .ab .event .internal .BuildVersionInfo ;
31
- import com .optimizely .ab .event .internal .EventFactory ;
32
- import com .optimizely .ab .event .internal .payload .EventBatch .ClientEngine ;
30
+ import com .optimizely .ab .event .internal .*;
31
+ import com .optimizely .ab .event .internal .payload .EventBatch ;
33
32
import com .optimizely .ab .notification .*;
34
33
import org .slf4j .Logger ;
35
34
import org .slf4j .LoggerFactory ;
@@ -77,8 +76,6 @@ public class Optimizely implements AutoCloseable {
77
76
@ VisibleForTesting
78
77
final DecisionService decisionService ;
79
78
@ VisibleForTesting
80
- final EventFactory eventFactory ;
81
- @ VisibleForTesting
82
79
final EventHandler eventHandler ;
83
80
@ VisibleForTesting
84
81
final ErrorHandler errorHandler ;
@@ -92,17 +89,15 @@ public class Optimizely implements AutoCloseable {
92
89
private final UserProfileService userProfileService ;
93
90
94
91
private Optimizely (@ Nonnull EventHandler eventHandler ,
95
- @ Nonnull EventFactory eventFactory ,
96
92
@ Nonnull ErrorHandler errorHandler ,
97
93
@ Nonnull DecisionService decisionService ,
98
94
@ Nullable UserProfileService userProfileService ,
99
95
@ Nonnull ProjectConfigManager projectConfigManager ,
100
96
@ Nonnull NotificationCenter notificationCenter
101
97
) {
102
- this .decisionService = decisionService ;
103
98
this .eventHandler = eventHandler ;
104
- this .eventFactory = eventFactory ;
105
99
this .errorHandler = errorHandler ;
100
+ this .decisionService = decisionService ;
106
101
this .userProfileService = userProfileService ;
107
102
this .projectConfigManager = projectConfigManager ;
108
103
this .notificationCenter = notificationCenter ;
@@ -230,36 +225,33 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig,
230
225
@ Nonnull String userId ,
231
226
@ Nonnull Map <String , ?> filteredAttributes ,
232
227
@ Nonnull Variation variation ) {
233
- if (experiment .isRunning ()) {
234
- LogEvent impressionEvent = eventFactory .createImpressionEvent (
235
- projectConfig ,
236
- experiment ,
237
- variation ,
238
- userId ,
239
- filteredAttributes );
240
- logger .info ("Activating user \" {}\" in experiment \" {}\" ." , userId , experiment .getKey ());
228
+ if (!experiment .isRunning ()) {
229
+ logger .info ("Experiment has \" Launched\" status so not dispatching event during activation." );
230
+ return ;
231
+ }
241
232
242
- if (logger .isDebugEnabled ()) {
243
- logger .debug (
244
- "Dispatching impression event to URL {} with params {} and payload \" {}\" ." ,
245
- impressionEvent .getEndpointUrl (), impressionEvent .getRequestParams (), impressionEvent .getBody ());
246
- }
233
+ logger .info ("Activating user \" {}\" in experiment \" {}\" ." , userId , experiment .getKey ());
234
+ UserEvent userEvent = UserEventFactory .createImpressionEvent (
235
+ projectConfig ,
236
+ experiment ,
237
+ variation ,
238
+ userId ,
239
+ filteredAttributes );
247
240
248
- try {
249
- eventHandler .dispatchEvent (impressionEvent );
250
- } catch (Exception e ) {
251
- logger .error ("Unexpected exception in event dispatcher" , e );
252
- }
241
+ LogEvent impressionEvent = EventFactory .createLogEvent (userEvent );
253
242
254
- // Kept For backwards compatibility.
255
- // This notification is deprecated and the new DecisionNotifications
256
- // are sent via their respective method calls.
257
- ActivateNotification activateNotification = new ActivateNotification (
258
- experiment , userId , filteredAttributes , variation , impressionEvent );
259
- notificationCenter .send (activateNotification );
260
- } else {
261
- logger .info ("Experiment has \" Launched\" status so not dispatching event during activation." );
243
+ try {
244
+ eventHandler .dispatchEvent (impressionEvent );
245
+ } catch (Exception e ) {
246
+ logger .error ("Unexpected exception in event dispatcher" , e );
262
247
}
248
+
249
+ // Kept For backwards compatibility.
250
+ // This notification is deprecated and the new DecisionNotifications
251
+ // are sent via their respective method calls.
252
+ ActivateNotification activateNotification = new ActivateNotification (
253
+ experiment , userId , filteredAttributes , variation , impressionEvent );
254
+ notificationCenter .send (activateNotification );
263
255
}
264
256
265
257
//======== track calls ========//
@@ -309,22 +301,18 @@ public void track(@Nonnull String eventName,
309
301
logger .warn ("Event tags is null when non-null was expected. Defaulting to an empty event tags map." );
310
302
}
311
303
312
- // create the conversion event request parameters, then dispatch
313
- LogEvent conversionEvent = eventFactory .createConversionEvent (
304
+ UserEvent userEvent = UserEventFactory .createConversionEvent (
314
305
projectConfig ,
315
306
userId ,
316
307
eventType .getId (),
317
308
eventType .getKey (),
318
309
copiedAttributes ,
319
310
eventTags );
320
311
312
+ // create the conversion event request parameters, then dispatch
313
+ LogEvent conversionEvent = EventFactory .createLogEvent (userEvent );
321
314
logger .info ("Tracking event \" {}\" for user \" {}\" ." , eventName , userId );
322
315
323
- if (logger .isDebugEnabled ()) {
324
- logger .debug ("Dispatching conversion event to URL {} with params {} and payload \" {}\" ." ,
325
- conversionEvent .getEndpointUrl (), conversionEvent .getRequestParams (), conversionEvent .getBody ());
326
- }
327
-
328
316
try {
329
317
eventHandler .dispatchEvent (conversionEvent );
330
318
} catch (Exception e ) {
@@ -1012,9 +1000,6 @@ public static class Builder {
1012
1000
private DecisionService decisionService ;
1013
1001
private ErrorHandler errorHandler ;
1014
1002
private EventHandler eventHandler ;
1015
- private EventFactory eventFactory ;
1016
- private ClientEngine clientEngine ;
1017
- private String clientVersion ;
1018
1003
private ProjectConfig projectConfig ;
1019
1004
private ProjectConfigManager projectConfigManager ;
1020
1005
private UserProfileService userProfileService ;
@@ -1047,13 +1032,16 @@ public Builder withUserProfileService(UserProfileService userProfileService) {
1047
1032
return this ;
1048
1033
}
1049
1034
1050
- public Builder withClientEngine (ClientEngine clientEngine ) {
1051
- this .clientEngine = clientEngine ;
1035
+ @ Deprecated
1036
+ public Builder withClientEngine (EventBatch .ClientEngine clientEngine ) {
1037
+ logger .info ("Deprecated. In the future, set ClientEngine via ClientEngineInfo#setClientEngine." );
1038
+ ClientEngineInfo .setClientEngine (clientEngine );
1052
1039
return this ;
1053
1040
}
1054
1041
1042
+ @ Deprecated
1055
1043
public Builder withClientVersion (String clientVersion ) {
1056
- this . clientVersion = clientVersion ;
1044
+ logger . info ( "Explicitly setting the ClientVersion is no longer supported." ) ;
1057
1045
return this ;
1058
1046
}
1059
1047
@@ -1090,18 +1078,6 @@ protected Builder withDecisionService(DecisionService decisionService) {
1090
1078
1091
1079
public Optimizely build () {
1092
1080
1093
- if (clientEngine == null ) {
1094
- clientEngine = ClientEngine .JAVA_SDK ;
1095
- }
1096
-
1097
- if (clientVersion == null ) {
1098
- clientVersion = BuildVersionInfo .VERSION ;
1099
- }
1100
-
1101
- if (eventFactory == null ) {
1102
- eventFactory = new EventFactory (clientEngine , clientVersion );
1103
- }
1104
-
1105
1081
if (errorHandler == null ) {
1106
1082
errorHandler = new NoOpErrorHandler ();
1107
1083
}
@@ -1141,7 +1117,7 @@ public Optimizely build() {
1141
1117
notificationCenter = new NotificationCenter ();
1142
1118
}
1143
1119
1144
- return new Optimizely (eventHandler , eventFactory , errorHandler , decisionService , userProfileService , projectConfigManager , notificationCenter );
1120
+ return new Optimizely (eventHandler , errorHandler , decisionService , userProfileService , projectConfigManager , notificationCenter );
1145
1121
}
1146
1122
}
1147
1123
}
0 commit comments