Merge "aconfig: throw exception if reading from DeviceConfig fails" into main

This commit is contained in:
Zhi Dou
2023-09-14 19:28:16 +00:00
committed by Gerrit Code Review
3 changed files with 55 additions and 11 deletions

View File

@@ -177,23 +177,23 @@ mod tests {
} }
@Override @Override
public boolean disabledRo() { public boolean disabledRo() {
return getFlag(Flags.FLAG_DISABLED_RO); return getValue(Flags.FLAG_DISABLED_RO);
} }
@Override @Override
public boolean disabledRw() { public boolean disabledRw() {
return getFlag(Flags.FLAG_DISABLED_RW); return getValue(Flags.FLAG_DISABLED_RW);
} }
@Override @Override
public boolean enabledFixedRo() { public boolean enabledFixedRo() {
return getFlag(Flags.FLAG_ENABLED_FIXED_RO); return getValue(Flags.FLAG_ENABLED_FIXED_RO);
} }
@Override @Override
public boolean enabledRo() { public boolean enabledRo() {
return getFlag(Flags.FLAG_ENABLED_RO); return getValue(Flags.FLAG_ENABLED_RO);
} }
@Override @Override
public boolean enabledRw() { public boolean enabledRw() {
return getFlag(Flags.FLAG_ENABLED_RW); return getValue(Flags.FLAG_ENABLED_RW);
} }
public void setFlag(String flagName, boolean value) { public void setFlag(String flagName, boolean value) {
if (!this.mFlagMap.containsKey(flagName)) { if (!this.mFlagMap.containsKey(flagName)) {
@@ -206,7 +206,7 @@ mod tests {
entry.setValue(null); entry.setValue(null);
} }
} }
private boolean getFlag(String flagName) { private boolean getValue(String flagName) {
Boolean value = this.mFlagMap.get(flagName); Boolean value = this.mFlagMap.get(flagName);
if (value == null) { if (value == null) {
throw new IllegalArgumentException(flagName + " is not set"); throw new IllegalArgumentException(flagName + " is not set");
@@ -250,7 +250,7 @@ mod tests {
} }
@Override @Override
public boolean disabledRw() { public boolean disabledRw() {
return DeviceConfig.getBoolean( return getValue(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.disabled_rw", "com.android.aconfig.test.disabled_rw",
false false
@@ -266,12 +266,33 @@ mod tests {
} }
@Override @Override
public boolean enabledRw() { public boolean enabledRw() {
return DeviceConfig.getBoolean( return getValue(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.enabled_rw", "com.android.aconfig.test.enabled_rw",
true true
); );
} }
private boolean getValue(String nameSpace,
String flagName, boolean defaultValue) {
boolean value = defaultValue;
try {
value = DeviceConfig.getBoolean(
nameSpace,
flagName,
defaultValue
);
} catch (NullPointerException e) {
throw new RuntimeException(
"Cannot read value of flag " + flagName + " from DeviceConfig. " +
"It could be that the code using flag executed " +
"before SettingsProvider initialization. " +
"Please use fixed read-only flag by adding " +
"is_fixed_read_only: true in flag declaration.",
e
);
}
return value;
}
} }
"#; "#;
let mut file_set = HashMap::from([ let mut file_set = HashMap::from([

View File

@@ -12,7 +12,7 @@ public class FakeFeatureFlagsImpl implements FeatureFlags \{
{{ for item in class_elements}} {{ for item in class_elements}}
@Override @Override
public boolean {item.method_name}() \{ public boolean {item.method_name}() \{
return getFlag(Flags.FLAG_{item.flag_name_constant_suffix}); return getValue(Flags.FLAG_{item.flag_name_constant_suffix});
} }
{{ endfor}} {{ endfor}}
public void setFlag(String flagName, boolean value) \{ public void setFlag(String flagName, boolean value) \{
@@ -28,7 +28,7 @@ public class FakeFeatureFlagsImpl implements FeatureFlags \{
} }
} }
private boolean getFlag(String flagName) \{ private boolean getValue(String flagName) \{
Boolean value = this.mFlagMap.get(flagName); Boolean value = this.mFlagMap.get(flagName);
if (value == null) \{ if (value == null) \{
throw new IllegalArgumentException(flagName + " is not set"); throw new IllegalArgumentException(flagName + " is not set");

View File

@@ -9,7 +9,7 @@ public final class FeatureFlagsImpl implements FeatureFlags \{
@Override @Override
public boolean {item.method_name}() \{ public boolean {item.method_name}() \{
{{ -if item.is_read_write }} {{ -if item.is_read_write }}
return DeviceConfig.getBoolean( return getValue(
"{item.device_config_namespace}", "{item.device_config_namespace}",
"{item.device_config_flag}", "{item.device_config_flag}",
{item.default_value} {item.default_value}
@@ -19,6 +19,29 @@ public final class FeatureFlagsImpl implements FeatureFlags \{
{{ endif- }} {{ endif- }}
} }
{{ endfor }} {{ endfor }}
{{ if is_read_write- }}
private boolean getValue(String nameSpace,
String flagName, boolean defaultValue) \{
boolean value = defaultValue;
try \{
value = DeviceConfig.getBoolean(
nameSpace,
flagName,
defaultValue
);
} catch (NullPointerException e) \{
throw new RuntimeException(
"Cannot read value of flag " + flagName + " from DeviceConfig. " +
"It could be that the code using flag executed " +
"before SettingsProvider initialization. " +
"Please use fixed read-only flag by adding " +
"is_fixed_read_only: true in flag declaration.",
e
);
}
return value;
}
{{ endif- }}
} }
{{ else }} {{ else }}
{#- Generate only stub if in test mode #} {#- Generate only stub if in test mode #}