blob: f5edd1b79e8ff03d683e820bcbbf08a21bf9e1df [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
Zhi Dou8ba6aa72023-06-26 21:03:40 +00005import java.util.HashMap;
Zhi Doua41cc5e2023-06-29 15:01:56 +00006import java.util.stream.Stream;
Zhi Dou8ba6aa72023-06-26 21:03:40 +00007{{ 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 Doua41cc5e2023-06-29 15:01:56 +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 Doua41cc5e2023-06-29 15:01:56 +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 }
Zhi Doua41cc5e2023-06-29 15:01:56 +000030{{ endfor- }}
31{{ if is_test_mode }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000032 public void setFlag(String flagName, boolean value) \{
33 if (!this.mFlagMap.containsKey(flagName)) \{
34 throw new IllegalArgumentException("no such flag" + flagName);
35 }
36 this.mFlagMap.put(flagName, value);
37 }
38
39 private boolean getFlag(String flagName) \{
40 Boolean value = this.mFlagMap.get(flagName);
41 if (value == null) \{
42 throw new IllegalArgumentException(flagName + " is not set");
43 }
44 return value;
45 }
46
47 private HashMap<String, Boolean> mFlagMap = Stream.of(
48 {{-for item in class_elements}}
49 Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
50 {{ -endfor }}
51 )
52 .collect(
53 HashMap::new,
54 (map, elem) -> map.put(elem, null),
55 HashMap::putAll
56 );
Zhi Doua41cc5e2023-06-29 15:01:56 +000057{{ -endif }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000058}