blob: dba82ef6fa28f1cb61fedf5a9c9e02d568a7f493 [file] [log] [blame]
Zhi Dou5aaeee32023-08-07 22:54:13 +00001package {package_name};
2{{ if is_test_mode }}
3import static java.util.stream.Collectors.toMap;
4
5import java.util.HashMap;
6import java.util.Map;
7import java.util.stream.Stream;
8
9public class FakeFeatureFlagsImpl implements FeatureFlags \{
10{{ for item in class_elements}}
11 @Override
12 public boolean {item.method_name}() \{
13 return getFlag(Flags.FLAG_{item.flag_name_constant_suffix});
14 }
15{{ endfor}}
Zhi Doua7200112023-08-07 18:09:28 +000016 @Override
Zhi Dou5aaeee32023-08-07 22:54:13 +000017 public void setFlag(String flagName, boolean value) \{
18 if (!this.mFlagMap.containsKey(flagName)) \{
19 throw new IllegalArgumentException("no such flag" + flagName);
20 }
21 this.mFlagMap.put(flagName, value);
22 }
23
Zhi Doua7200112023-08-07 18:09:28 +000024 @Override
Zhi Dou5aaeee32023-08-07 22:54:13 +000025 public void resetAll() \{
26 for (Map.Entry entry : mFlagMap.entrySet()) \{
27 entry.setValue(null);
28 }
29 }
30
31 private boolean getFlag(String flagName) \{
32 Boolean value = this.mFlagMap.get(flagName);
33 if (value == null) \{
34 throw new IllegalArgumentException(flagName + " is not set");
35 }
36 return value;
37 }
38
39 private HashMap<String, Boolean> mFlagMap = Stream.of(
40 {{-for item in class_elements}}
41 Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
42 {{ -endfor }}
43 )
44 .collect(
45 HashMap::new,
46 (map, elem) -> map.put(elem, null),
47 HashMap::putAll
48 );
49}
50{{ else }}
51{#- Generate only stub if in prod mode #}
52public class FakeFeatureFlagsImpl implements FeatureFlags \{
53{{ for item in class_elements}}
54 @Override
55 public boolean {item.method_name}() \{
56 throw new UnsupportedOperationException(
57 "Method is not implemented.");
58 }
59{{ endfor}}
60}
61{{ endif }}