Skip to content

Commit de02967

Browse files
authored
improvements for use upstream (#32)
1 parent cbc4b98 commit de02967

38 files changed

+108
-46
lines changed

build.gradle

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ plugins {
66
}
77

88
group = 'cloud.eppo'
9-
version = '3.0.1-SNAPSHOT'
9+
version = '3.0.2-SNAPSHOT'
1010
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
1111

12+
java {
13+
sourceCompatibility = JavaVersion.VERSION_1_8
14+
targetCompatibility = JavaVersion.VERSION_1_8
15+
withJavadocJar()
16+
withSourcesJar()
17+
}
18+
1219
dependencies {
1320
implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.2'
1421
implementation 'com.github.zafarkhaja:java-semver:0.10.2'
@@ -58,11 +65,6 @@ spotless {
5865
}
5966
}
6067

61-
java {
62-
withJavadocJar()
63-
withSourcesJar()
64-
}
65-
6668
tasks.register('testJar', Jar) {
6769
archiveClassifier.set('tests')
6870
from sourceSets.test.output

src/main/java/cloud/eppo/BanditEvaluationResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cloud.eppo;
22

3-
import cloud.eppo.ufc.dto.DiscriminableAttributes;
3+
import cloud.eppo.api.DiscriminableAttributes;
44

55
public class BanditEvaluationResult {
66

src/main/java/cloud/eppo/BanditEvaluator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import static cloud.eppo.Utils.getShard;
44

5+
import cloud.eppo.api.Actions;
6+
import cloud.eppo.api.Attributes;
7+
import cloud.eppo.api.DiscriminableAttributes;
8+
import cloud.eppo.api.EppoValue;
59
import cloud.eppo.ufc.dto.*;
610
import java.util.*;
711
import java.util.stream.Collectors;

src/main/java/cloud/eppo/BaseEppoClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static cloud.eppo.Utils.getMD5Hex;
44
import static cloud.eppo.Utils.throwIfEmptyOrNull;
55

6+
import cloud.eppo.api.*;
67
import cloud.eppo.logging.Assignment;
78
import cloud.eppo.logging.AssignmentLogger;
89
import cloud.eppo.logging.BanditAssignment;

src/main/java/cloud/eppo/FlagEvaluationResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cloud.eppo;
22

3-
import cloud.eppo.ufc.dto.Attributes;
3+
import cloud.eppo.api.Attributes;
44
import cloud.eppo.ufc.dto.Variation;
55
import java.util.Map;
66

src/main/java/cloud/eppo/FlagEvaluator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import static cloud.eppo.Utils.base64Decode;
44
import static cloud.eppo.Utils.getShard;
55

6+
import cloud.eppo.api.Attributes;
7+
import cloud.eppo.api.EppoValue;
68
import cloud.eppo.model.ShardRange;
79
import cloud.eppo.ufc.dto.Allocation;
8-
import cloud.eppo.ufc.dto.Attributes;
9-
import cloud.eppo.ufc.dto.EppoValue;
1010
import cloud.eppo.ufc.dto.FlagConfig;
1111
import cloud.eppo.ufc.dto.Shard;
1212
import cloud.eppo.ufc.dto.Split;

src/main/java/cloud/eppo/RuleEvaluator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import static cloud.eppo.Utils.base64Decode;
44
import static cloud.eppo.Utils.getMD5Hex;
55

6-
import cloud.eppo.ufc.dto.Attributes;
7-
import cloud.eppo.ufc.dto.EppoValue;
6+
import cloud.eppo.api.Attributes;
7+
import cloud.eppo.api.EppoValue;
88
import cloud.eppo.ufc.dto.OperatorType;
99
import cloud.eppo.ufc.dto.TargetingCondition;
1010
import cloud.eppo.ufc.dto.TargetingRule;

src/main/java/cloud/eppo/ufc/dto/Actions.java renamed to src/main/java/cloud/eppo/api/Actions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cloud.eppo.ufc.dto;
1+
package cloud.eppo.api;
22

33
import java.util.Map;
44

src/main/java/cloud/eppo/ufc/dto/Attributes.java renamed to src/main/java/cloud/eppo/api/Attributes.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
package cloud.eppo.ufc.dto;
1+
package cloud.eppo.api;
22

3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
36
import java.util.HashMap;
47
import java.util.Map;
58
import java.util.stream.Collectors;
@@ -61,4 +64,43 @@ public Attributes getCategoricalAttributes() {
6164
public Attributes getAllAttributes() {
6265
return this;
6366
}
67+
68+
/** Serializes the attributes to a JSON string, omitting attributes with a null value. */
69+
public String serializeNonNullAttributesToJSONString() {
70+
return serializeAttributesToJSONString(true);
71+
}
72+
73+
@SuppressWarnings("SameParameterValue")
74+
private String serializeAttributesToJSONString(boolean omitNulls) {
75+
ObjectMapper mapper = new ObjectMapper();
76+
ObjectNode result = mapper.createObjectNode();
77+
78+
for (Map.Entry<String, EppoValue> entry : entrySet()) {
79+
String attributeName = entry.getKey();
80+
EppoValue attributeValue = entry.getValue();
81+
82+
if (attributeValue == null || attributeValue.isNull()) {
83+
if (!omitNulls) {
84+
result.putNull(attributeName);
85+
}
86+
} else {
87+
if (attributeValue.isNumeric()) {
88+
result.put(attributeName, attributeValue.doubleValue());
89+
continue;
90+
}
91+
if (attributeValue.isBoolean()) {
92+
result.put(attributeName, attributeValue.booleanValue());
93+
continue;
94+
}
95+
// fall back put treating any other eppo values as a string
96+
result.put(attributeName, attributeValue.toString());
97+
}
98+
}
99+
100+
try {
101+
return mapper.writeValueAsString(result);
102+
} catch (JsonProcessingException e) {
103+
throw new RuntimeException(e);
104+
}
105+
}
64106
}

src/main/java/cloud/eppo/ufc/dto/BanditActions.java renamed to src/main/java/cloud/eppo/api/BanditActions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cloud.eppo.ufc.dto;
1+
package cloud.eppo.api;
22

33
import java.util.HashMap;
44
import java.util.Map;
@@ -10,7 +10,7 @@ public BanditActions() {
1010
super();
1111
}
1212

13-
public BanditActions(Map<String, DiscriminableAttributes> actionsWithContext) {
13+
public BanditActions(Map<String, ? extends DiscriminableAttributes> actionsWithContext) {
1414
super(actionsWithContext);
1515
}
1616

0 commit comments

Comments
 (0)