blob: 082d476de55ec89985fea0a5e1ad612d97350736 [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 Dou8d27cc32023-06-29 15:15:32 +00006import java.util.Map;
Zhi Doua41cc5e2023-06-29 15:01:56 +00007import java.util.stream.Stream;
Zhi Dou8ba6aa72023-06-26 21:03:40 +00008{{ else}}
9{{ if is_read_write- }}
Zhi Doueb744892023-05-10 04:02:33 +000010import android.provider.DeviceConfig;
Zhi Dou8ba6aa72023-06-26 21:03:40 +000011{{ -endif- }}
Zhi Doueb744892023-05-10 04:02:33 +000012{{ endif }}
Zhi Dou4655c962023-06-12 15:56:03 +000013public final class FeatureFlagsImpl implements FeatureFlags \{
Zhi Doua41cc5e2023-06-29 15:01:56 +000014{{ for item in class_elements}}
Zhi Dou4655c962023-06-12 15:56:03 +000015 @Override
16 public boolean {item.method_name}() \{
Zhi Dou8ba6aa72023-06-26 21:03:40 +000017 {{ -if not is_test_mode- }}
18 {{ if item.is_read_write }}
Zhi Doueb744892023-05-10 04:02:33 +000019 return DeviceConfig.getBoolean(
Mårten Kongstad066575b2023-06-07 16:29:25 +020020 "{item.device_config_namespace}",
21 "{item.device_config_flag}",
Zhi Doueb744892023-05-10 04:02:33 +000022 {item.default_value}
Mårten Kongstad00cf0452023-05-26 16:48:01 +020023 );
Zhi Doua41cc5e2023-06-29 15:01:56 +000024 {{ -else }}
Zhi Doueb744892023-05-10 04:02:33 +000025 return {item.default_value};
Zhi Dou8ba6aa72023-06-26 21:03:40 +000026 {{ -endif- }}
27 {{ else }}
28 return getFlag(Flags.FLAG_{item.flag_name_constant_suffix});
Zhi Doueb744892023-05-10 04:02:33 +000029 {{ -endif }}
30 }
Zhi Doua41cc5e2023-06-29 15:01:56 +000031{{ endfor- }}
32{{ if is_test_mode }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000033 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
Zhi Dou8d27cc32023-06-29 15:15:32 +000040 public void resetAll() \{
41 for (Map.Entry entry : mFlagMap.entrySet()) \{
42 entry.setValue(null);
43 }
44 }
45
Zhi Dou8ba6aa72023-06-26 21:03:40 +000046 private boolean getFlag(String flagName) \{
47 Boolean value = this.mFlagMap.get(flagName);
48 if (value == null) \{
49 throw new IllegalArgumentException(flagName + " is not set");
50 }
51 return value;
52 }
53
54 private HashMap<String, Boolean> mFlagMap = Stream.of(
55 {{-for item in class_elements}}
56 Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
57 {{ -endfor }}
58 )
59 .collect(
60 HashMap::new,
61 (map, elem) -> map.put(elem, null),
62 HashMap::putAll
63 );
Zhi Doua41cc5e2023-06-29 15:01:56 +000064{{ -endif }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000065}