blob: db35d28f6802bdb06c4fed1fce13c7e6e518a447 [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}}
16 public void setFlag(String flagName, boolean value) \{
17 if (!this.mFlagMap.containsKey(flagName)) \{
18 throw new IllegalArgumentException("no such flag" + flagName);
19 }
20 this.mFlagMap.put(flagName, value);
21 }
22
23 public void resetAll() \{
24 for (Map.Entry entry : mFlagMap.entrySet()) \{
25 entry.setValue(null);
26 }
27 }
28
29 private boolean getFlag(String flagName) \{
30 Boolean value = this.mFlagMap.get(flagName);
31 if (value == null) \{
32 throw new IllegalArgumentException(flagName + " is not set");
33 }
34 return value;
35 }
36
37 private HashMap<String, Boolean> mFlagMap = Stream.of(
38 {{-for item in class_elements}}
39 Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
40 {{ -endfor }}
41 )
42 .collect(
43 HashMap::new,
44 (map, elem) -> map.put(elem, null),
45 HashMap::putAll
46 );
47}
48{{ else }}
49{#- Generate only stub if in prod mode #}
50public class FakeFeatureFlagsImpl implements FeatureFlags \{
51{{ for item in class_elements}}
52 @Override
53 public boolean {item.method_name}() \{
54 throw new UnsupportedOperationException(
55 "Method is not implemented.");
56 }
57{{ endfor}}
58}
59{{ endif }}