-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathMain.java
More file actions
103 lines (89 loc) · 4.39 KB
/
Main.java
File metadata and controls
103 lines (89 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package dev.openfeature;
import dev.openfeature.generated.*;
import dev.openfeature.sdk.*;
import dev.openfeature.sdk.providers.memory.Flag;
import dev.openfeature.sdk.providers.memory.InMemoryProvider;
import java.util.Map;
public class Main {
public static void main(String[] args) {
try {
run();
System.out.println("Generated Java code compiles successfully!");
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
System.exit(1);
}
}
private static void run() throws Exception {
// Set up the in-memory provider with test flags
Map<String, Object> themeConfig = Map.of(
"primaryColor", "#007bff",
"secondaryColor", "#6c757d"
);
Map<String, Flag<?>> flags = Map.of(
"discountPercentage", Flag.builder()
.variant("default", 0.15)
.defaultVariant("default")
.build(),
"enableFeatureA", Flag.builder()
.variant("default", false)
.defaultVariant("default")
.build(),
"greetingMessage", Flag.builder()
.variant("default", "Hello there!")
.defaultVariant("default")
.build(),
"usernameMaxLength", Flag.builder()
.variant("default", 50)
.defaultVariant("default")
.build(),
"themeCustomization", Flag.builder()
.variant("default", new Value(themeConfig))
.defaultVariant("default")
.build()
);
InMemoryProvider provider = new InMemoryProvider(flags);
// Set the provider
OpenFeatureAPI.getInstance().setProviderAndWait(provider);
Client client = OpenFeatureAPI.getInstance().getClient();
MutableContext evalContext = new MutableContext();
// Use the generated code for all flag evaluations
Boolean enableFeatureA = EnableFeatureA.value(client, evalContext);
System.out.println("enableFeatureA: " + enableFeatureA);
FlagEvaluationDetails<Boolean> enableFeatureADetails = EnableFeatureA.valueWithDetails(client, evalContext);
if (enableFeatureADetails.getErrorCode() != null) {
throw new Exception("Error evaluating boolean flag");
}
Double discount = DiscountPercentage.value(client, evalContext);
System.out.printf("Discount Percentage: %.2f%n", discount);
FlagEvaluationDetails<Double> discountDetails = DiscountPercentage.valueWithDetails(client, evalContext);
if (discountDetails.getErrorCode() != null) {
throw new Exception("Failed to get discount");
}
String greetingMessage = GreetingMessage.value(client, evalContext);
System.out.println("greetingMessage: " + greetingMessage);
FlagEvaluationDetails<String> greetingDetails = GreetingMessage.valueWithDetails(client, evalContext);
if (greetingDetails.getErrorCode() != null) {
throw new Exception("Error evaluating string flag");
}
Integer usernameMaxLength = UsernameMaxLength.value(client, evalContext);
System.out.println("usernameMaxLength: " + usernameMaxLength);
FlagEvaluationDetails<Integer> usernameDetails = UsernameMaxLength.valueWithDetails(client, evalContext);
if (usernameDetails.getErrorCode() != null) {
throw new Exception("Error evaluating int flag");
}
Value themeCustomization = ThemeCustomization.value(client, evalContext);
FlagEvaluationDetails<Value> themeDetails = ThemeCustomization.valueWithDetails(client, evalContext);
if (themeDetails.getErrorCode() != null) {
throw new Exception("Error evaluating object flag");
}
System.out.println("themeCustomization: " + themeCustomization);
// Test the getKey() method functionality for all flags
System.out.println("enableFeatureA flag key: " + EnableFeatureA.getKey());
System.out.println("discountPercentage flag key: " + DiscountPercentage.getKey());
System.out.println("greetingMessage flag key: " + GreetingMessage.getKey());
System.out.println("usernameMaxLength flag key: " + UsernameMaxLength.getKey());
System.out.println("themeCustomization flag key: " + ThemeCustomization.getKey());
}
}