Skip to content

Commit b7009fd

Browse files
committed
chore: refactor to ensure Default events before the SDK is initialized are tracked correctly
1 parent a2e1517 commit b7009fd

File tree

4 files changed

+27
-12
lines changed

4 files changed

+27
-12
lines changed

src/main/java/com/devcycle/sdk/server/common/model/EvalReason.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,21 @@ public class EvalReason {
1717
@JsonProperty("reason")
1818
private String reason;
1919

20-
@Schema(description = "Details", required = false)
20+
@Schema(description = "Details")
2121
@JsonProperty("details")
2222
private String details;
2323

24-
@Schema(description = "Target ID", required = false)
25-
@JsonProperty("targetId")
24+
@Schema(description = "Target ID")
25+
@JsonProperty("target_id")
2626
private String targetId;
2727

28+
private EvalReason(String reason, String details) {
29+
this.reason = reason;
30+
this.details = details;
31+
}
32+
2833
public static EvalReason defaultReason(DefaultReasonDetailsEnum details) {
29-
return new EvalReason("DEFAULT", details.getValue(), null);
34+
return new EvalReason("DEFAULT", details.getValue());
3035
}
3136

3237
public String getReason() {

src/main/java/com/devcycle/sdk/server/common/model/Variable.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public class Variable<T> {
3333
@Builder.Default
3434
private Boolean isDefaulted = false;
3535

36+
@Builder.Default
37+
@Deprecated()
38+
private String evalReason = null;
39+
3640
@Schema(description = "Evaluation reason")
3741
private EvalReason eval;
3842

src/main/java/com/devcycle/sdk/server/local/api/DevCycleLocalClient.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,17 @@ public <T> Variable<T> variable(DevCycleUser user, String key, T defaultValue) {
155155

156156
if (!isInitialized()) {
157157
DevCycleLogger.info("Variable called before DevCycleLocalClient has initialized, returning default value");
158+
defaultVariable.setEval(EvalReason.defaultReason(EvalReason.DefaultReasonDetailsEnum.MISSING_CONFIG));
158159
try {
159-
eventQueueManager.queueAggregateEvent(DevCycleEvent.builder().type("aggVariableDefaulted").target(key).build(), null);
160+
eventQueueManager.queueAggregateEvent(DevCycleEvent.builder()
161+
.type("aggVariableDefaulted")
162+
.target(key)
163+
.metaData(Map.of("evalReason", defaultVariable.getEval().getReason()))
164+
.build(),
165+
null);
160166
} catch (Exception e) {
161167
DevCycleLogger.error("Unable to parse aggVariableDefaulted event for Variable " + key + " due to error: " + e, e);
162168
}
163-
defaultVariable.setEval(EvalReason.defaultReason(EvalReason.DefaultReasonDetailsEnum.MISSING_CONFIG));
164169
return defaultVariable;
165170
}
166171

src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package com.devcycle.sdk.server.local.managers;
22

3+
import java.io.IOException;
4+
import java.util.Arrays;
5+
import java.util.concurrent.Executors;
6+
import java.util.concurrent.ScheduledExecutorService;
7+
import java.util.concurrent.TimeUnit;
8+
39
import com.devcycle.sdk.server.common.api.IDevCycleApi;
410
import com.devcycle.sdk.server.common.logging.DevCycleLogger;
511
import com.devcycle.sdk.server.common.model.DevCycleEvent;
@@ -13,15 +19,10 @@
1319
import com.devcycle.sdk.server.local.model.FlushPayload;
1420
import com.fasterxml.jackson.annotation.JsonInclude;
1521
import com.fasterxml.jackson.databind.ObjectMapper;
22+
1623
import retrofit2.Call;
1724
import retrofit2.Response;
1825

19-
import java.io.IOException;
20-
import java.util.Arrays;
21-
import java.util.concurrent.Executors;
22-
import java.util.concurrent.ScheduledExecutorService;
23-
import java.util.concurrent.TimeUnit;
24-
2526
public class EventQueueManager {
2627

2728
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

0 commit comments

Comments
 (0)