Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.devcycle.sdk.server.common.model;

import com.devcycle.sdk.server.common.exception.AfterHookError;
import com.devcycle.sdk.server.common.exception.BeforeHookError;
import com.devcycle.sdk.server.common.logging.DevCycleLogger;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import com.devcycle.sdk.server.common.exception.AfterHookError;
import com.devcycle.sdk.server.common.exception.BeforeHookError;
import com.devcycle.sdk.server.common.logging.DevCycleLogger;

/**
* A class that manages evaluation hooks for the DevCycle SDK.
* Provides functionality to add and clear hooks, storing them in an array.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package com.devcycle.sdk.server.common.model;

import java.net.InetAddress;
import java.net.UnknownHostException;

import com.devcycle.sdk.server.common.logging.DevCycleLogger;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.net.InetAddress;
import java.net.UnknownHostException;

@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
Expand All @@ -34,6 +35,7 @@ public class PlatformData {
private String sdkVersion = "2.8.1";

@Schema(description = "DevCycle SDK Platform")
@Builder.Default
private String sdkPlatform = null;

@Schema(description = "Hostname where the SDK is running")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ public class Variable<T> {
@JsonIgnore
private final String evalReason = null;

@Schema(description = "Feature ID")
@JsonProperty("_feature")
private String featureId;

public enum TypeEnum {
STRING("String"),
BOOLEAN("Boolean"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public static <T> Variable<T> createVariable(SDKVariable_PB sdkVariable, T defau
.defaultValue(defaultValue)
.isDefaulted(false)
.eval(convertToEvalReason(sdkVariable.getEval()))
.featureId(sdkVariable.getFeature().getValue())
.build();
break;
case String:
Expand All @@ -70,6 +71,7 @@ public static <T> Variable<T> createVariable(SDKVariable_PB sdkVariable, T defau
.defaultValue(defaultValue)
.isDefaulted(false)
.eval(convertToEvalReason(sdkVariable.getEval()))
.featureId(sdkVariable.getFeature().getValue())
.build();
break;
case Number:
Expand All @@ -80,6 +82,7 @@ public static <T> Variable<T> createVariable(SDKVariable_PB sdkVariable, T defau
.defaultValue(defaultValue)
.isDefaulted(false)
.eval(convertToEvalReason(sdkVariable.getEval()))
.featureId(sdkVariable.getFeature().getValue())
.build();
break;
case JSON:
Expand All @@ -93,6 +96,7 @@ public static <T> Variable<T> createVariable(SDKVariable_PB sdkVariable, T defau
.defaultValue(defaultValue)
.isDefaulted(false)
.eval(convertToEvalReason(sdkVariable.getEval()))
.featureId(sdkVariable.getFeature().getValue())
.build();
break;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ public void variableTest() {
var = client.variable(user, "string-var", "default string");
Assert.assertNotNull(var);
Assert.assertEquals("variationOn", var.getValue());
Assert.assertEquals("62fbf6566f1ba302829f9e32", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand All @@ -173,6 +174,7 @@ public void variableBooleanValueTest() {
Assert.assertNotNull(var);
Assert.assertFalse(var.getIsDefaulted());
Assert.assertEquals(true, var.getValue());
Assert.assertEquals("62fbf6566f1ba302829f9e32", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand All @@ -188,6 +190,7 @@ public void variableNumberValueTest() {
Assert.assertNotNull(var);
Assert.assertFalse(var.getIsDefaulted());
Assert.assertEquals(12345.0, var.getValue().doubleValue(), 0.0);
Assert.assertEquals("62fbf6566f1ba302829f9e32", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand All @@ -213,6 +216,7 @@ public void variableJsonValueTest() {
Assert.assertEquals("This variation is on", variableData.get("displayText"));
Assert.assertEquals(true, variableData.get("showDialog"));
Assert.assertEquals(100, variableData.get("maxUsers"));
Assert.assertEquals("62fbf6566f1ba302829f9e32", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand Down Expand Up @@ -253,6 +257,7 @@ public void variableTestWithCustomData() {
Assert.assertNotNull(var);
Assert.assertFalse(var.getIsDefaulted());
Assert.assertEquals("variationOn", var.getValue());
Assert.assertEquals("62fbf6566f1ba302829f9e32", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand All @@ -275,6 +280,7 @@ public void variableTestBucketingWithCustomData() {
Assert.assertNotNull(var);
Assert.assertFalse(var.getIsDefaulted());
Assert.assertEquals("↑↑↓↓←→←→BA 🤖", var.getValue());
Assert.assertEquals("638680d6fcb67b96878d90e6", var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("TARGETING_MATCH", varEval.getReason());
Expand All @@ -288,6 +294,7 @@ public void variableTestUnknownVariableKey() {
Assert.assertNotNull(var);
Assert.assertTrue(var.getIsDefaulted());
Assert.assertEquals(true, var.getValue());
Assert.assertNull(var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("DEFAULT", varEval.getReason());
Expand All @@ -301,6 +308,7 @@ public void variableTestTypeMismatch() {
Assert.assertNotNull(var);
Assert.assertTrue(var.getIsDefaulted());
Assert.assertEquals(true, var.getValue());
Assert.assertNull(var.getFeatureId());

EvalReason varEval = var.getEval();
Assert.assertEquals("DEFAULT", varEval.getReason());
Expand Down Expand Up @@ -722,6 +730,7 @@ public void onFinally(HookContext<String> ctx, Optional<Variable<String>> variab
.isDefaulted(false)
.defaultValue("default string")
.eval(new EvalReason("TARGETING_MATCH", "All Users", "63125321d31c601f992288bc"))
.featureId("62fbf6566f1ba302829f9e32")
.build();

Variable<String> result = client.variable(user, "string-var", "default string");
Expand Down Expand Up @@ -993,6 +1002,7 @@ public void error(HookContext<String> ctx, Throwable e) {
.isDefaulted(false)
.defaultValue("default string")
.eval(new EvalReason("TARGETING_MATCH", "All Users", "63125321d31c601f992288bc"))
.featureId("62fbf6566f1ba302829f9e32")
.build();

Variable<String> result = client.variable(user, "string-var", "default string");
Expand Down
Loading