| package {package_name}; |
| {{ if is_test_mode }} |
| import static java.util.stream.Collectors.toMap; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.stream.Stream; |
| |
| public class FakeFeatureFlagsImpl implements FeatureFlags \{ |
| {{ for item in class_elements}} |
| @Override |
| public boolean {item.method_name}() \{ |
| return getFlag(Flags.FLAG_{item.flag_name_constant_suffix}); |
| } |
| {{ endfor}} |
| @Override |
| public void setFlag(String flagName, boolean value) \{ |
| if (!this.mFlagMap.containsKey(flagName)) \{ |
| throw new IllegalArgumentException("no such flag" + flagName); |
| } |
| this.mFlagMap.put(flagName, value); |
| } |
| |
| @Override |
| public void resetAll() \{ |
| for (Map.Entry entry : mFlagMap.entrySet()) \{ |
| entry.setValue(null); |
| } |
| } |
| |
| private boolean getFlag(String flagName) \{ |
| Boolean value = this.mFlagMap.get(flagName); |
| if (value == null) \{ |
| throw new IllegalArgumentException(flagName + " is not set"); |
| } |
| return value; |
| } |
| |
| private HashMap<String, Boolean> mFlagMap = Stream.of( |
| {{-for item in class_elements}} |
| Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }} |
| {{ -endfor }} |
| ) |
| .collect( |
| HashMap::new, |
| (map, elem) -> map.put(elem, null), |
| HashMap::putAll |
| ); |
| } |
| {{ else }} |
| {#- Generate only stub if in prod mode #} |
| public class FakeFeatureFlagsImpl implements FeatureFlags \{ |
| {{ for item in class_elements}} |
| @Override |
| public boolean {item.method_name}() \{ |
| throw new UnsupportedOperationException( |
| "Method is not implemented."); |
| } |
| {{ endfor}} |
| } |
| {{ endif }} |