blob: dafd99e71b18a6243a8b49c9676128b0a1071a43 [file] [log] [blame]
Zhi Dou4655c962023-06-12 15:56:03 +00001package {package_name};
Zhi Dou8ba6aa72023-06-26 21:03:40 +00002{{ -if is_test_mode }}
3import static java.util.stream.Collectors.toMap;
4
5import java.util.stream.Stream;
6import java.util.HashMap;
7{{ else}}
8{{ if is_read_write- }}
Zhi Doueb744892023-05-10 04:02:33 +00009import android.provider.DeviceConfig;
Zhi Dou8ba6aa72023-06-26 21:03:40 +000010{{ -endif- }}
Zhi Doueb744892023-05-10 04:02:33 +000011{{ endif }}
Zhi Dou4655c962023-06-12 15:56:03 +000012public final class FeatureFlagsImpl implements FeatureFlags \{
Zhi Doueb744892023-05-10 04:02:33 +000013 {{ for item in class_elements}}
Zhi Dou4655c962023-06-12 15:56:03 +000014 @Override
15 public boolean {item.method_name}() \{
Zhi Dou8ba6aa72023-06-26 21:03:40 +000016 {{ -if not is_test_mode- }}
17 {{ if item.is_read_write }}
Zhi Doueb744892023-05-10 04:02:33 +000018 return DeviceConfig.getBoolean(
Mårten Kongstad066575b2023-06-07 16:29:25 +020019 "{item.device_config_namespace}",
20 "{item.device_config_flag}",
Zhi Doueb744892023-05-10 04:02:33 +000021 {item.default_value}
Mårten Kongstad00cf0452023-05-26 16:48:01 +020022 );
Zhi Dou8ba6aa72023-06-26 21:03:40 +000023 {{ else }}
Zhi Doueb744892023-05-10 04:02:33 +000024 return {item.default_value};
Zhi Dou8ba6aa72023-06-26 21:03:40 +000025 {{ -endif- }}
26 {{ else }}
27 return getFlag(Flags.FLAG_{item.flag_name_constant_suffix});
Zhi Doueb744892023-05-10 04:02:33 +000028 {{ -endif }}
29 }
30 {{ endfor }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000031
32 {{ if is_test_mode- }}
33 public void setFlag(String flagName, boolean value) \{
34 if (!this.mFlagMap.containsKey(flagName)) \{
35 throw new IllegalArgumentException("no such flag" + flagName);
36 }
37 this.mFlagMap.put(flagName, value);
38 }
39
40 private boolean getFlag(String flagName) \{
41 Boolean value = this.mFlagMap.get(flagName);
42 if (value == null) \{
43 throw new IllegalArgumentException(flagName + " is not set");
44 }
45 return value;
46 }
47
48 private HashMap<String, Boolean> mFlagMap = Stream.of(
49 {{-for item in class_elements}}
50 Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
51 {{ -endfor }}
52 )
53 .collect(
54 HashMap::new,
55 (map, elem) -> map.put(elem, null),
56 HashMap::putAll
57 );
58 {{ -endif }}
59}
60
61