Skip to content

Commit 693721e

Browse files
authored
feat: add empty constructors to data classes (#491)
Signed-off-by: Todd Baert <[email protected]>
1 parent 8b9e050 commit 693721e

File tree

4 files changed

+113
-7
lines changed

4 files changed

+113
-7
lines changed

src/main/java/dev/openfeature/sdk/FlagEvaluationDetails.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package dev.openfeature.sdk;
22

3+
import javax.annotation.Nullable;
4+
5+
import lombok.AllArgsConstructor;
36
import lombok.Builder;
47
import lombok.Data;
5-
6-
import javax.annotation.Nullable;
8+
import lombok.NoArgsConstructor;
79

810
/**
9-
* Contains information about how the evaluation happened, including any resolved values.
11+
* Contains information about how the provider resolved a flag, including the resolved value.
1012
*
1113
* @param <T> the type of the flag being evaluated.
1214
*/
1315
@Data
1416
@Builder
17+
@NoArgsConstructor
18+
@AllArgsConstructor
1519
public class FlagEvaluationDetails<T> implements BaseEvaluation<T> {
1620

1721
private String flagKey;

src/main/java/dev/openfeature/sdk/ProviderEvaluation.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
package dev.openfeature.sdk;
22

3+
import javax.annotation.Nullable;
4+
5+
import lombok.AllArgsConstructor;
36
import lombok.Builder;
47
import lombok.Data;
8+
import lombok.NoArgsConstructor;
59

6-
import javax.annotation.Nullable;
7-
8-
@SuppressWarnings("checkstyle:MissingJavadocType")
9-
@Data @Builder
10+
/**
11+
* Contains information about how the a flag was evaluated, including the resolved value.
12+
*
13+
* @param <T> the type of the flag being evaluated.
14+
*/
15+
@Data
16+
@Builder
17+
@NoArgsConstructor
18+
@AllArgsConstructor
1019
public class ProviderEvaluation<T> implements BaseEvaluation<T> {
1120
T value;
1221
@Nullable String variant;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package dev.openfeature.sdk;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNotNull;
5+
6+
import org.junit.jupiter.api.DisplayName;
7+
import org.junit.jupiter.api.Test;
8+
9+
class FlagEvaluationDetailsTest {
10+
11+
@Test
12+
@DisplayName("Should have empty constructor")
13+
public void empty() {
14+
FlagEvaluationDetails<Integer> details = new FlagEvaluationDetails<Integer>();
15+
assertNotNull(details);
16+
}
17+
18+
@Test
19+
@DisplayName("Should have flagKey, value, variant, reason, errorCode, errorMessage, metadata constructor")
20+
// removeing this constructor is a breaking change!
21+
public void sevenArgConstructor() {
22+
23+
String flagKey = "my-flag";
24+
Integer value = 100;
25+
String variant = "1-hundred";
26+
Reason reason = Reason.DEFAULT;
27+
ErrorCode errorCode = ErrorCode.GENERAL;
28+
String errorMessage = "message";
29+
ImmutableMetadata metadata = ImmutableMetadata.builder().build();
30+
31+
FlagEvaluationDetails<Integer> details = new FlagEvaluationDetails<>(
32+
flagKey,
33+
value,
34+
variant,
35+
reason.toString(),
36+
errorCode,
37+
errorMessage,
38+
metadata);
39+
40+
assertEquals(flagKey, details.getFlagKey());
41+
assertEquals(value, details.getValue());
42+
assertEquals(variant, details.getVariant());
43+
assertEquals(reason.toString(), details.getReason());
44+
assertEquals(errorCode, details.getErrorCode());
45+
assertEquals(errorMessage, details.getErrorMessage());
46+
assertEquals(metadata, details.getFlagMetadata());
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package dev.openfeature.sdk;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNotNull;
5+
6+
import org.junit.jupiter.api.DisplayName;
7+
import org.junit.jupiter.api.Test;
8+
9+
class ProviderEvaluationTest {
10+
11+
@Test
12+
@DisplayName("Should have empty constructor")
13+
public void empty() {
14+
ProviderEvaluation<Integer> details = new ProviderEvaluation<Integer>();
15+
assertNotNull(details);
16+
}
17+
18+
@Test
19+
@DisplayName("Should have value, variant, reason, errorCode, errorMessage, metadata constructor")
20+
// removeing this constructor is a breaking change!
21+
public void sixArgConstructor() {
22+
23+
Integer value = 100;
24+
String variant = "1-hundred";
25+
Reason reason = Reason.DEFAULT;
26+
ErrorCode errorCode = ErrorCode.GENERAL;
27+
String errorMessage = "message";
28+
ImmutableMetadata metadata = ImmutableMetadata.builder().build();
29+
30+
ProviderEvaluation<Integer> details = new ProviderEvaluation<>(
31+
value,
32+
variant,
33+
reason.toString(),
34+
errorCode,
35+
errorMessage,
36+
metadata);
37+
38+
assertEquals(value, details.getValue());
39+
assertEquals(variant, details.getVariant());
40+
assertEquals(reason.toString(), details.getReason());
41+
assertEquals(errorCode, details.getErrorCode());
42+
assertEquals(errorMessage, details.getErrorMessage());
43+
assertEquals(metadata, details.getFlagMetadata());
44+
}
45+
}

0 commit comments

Comments
 (0)