Files
build/tools/aconfig/templates/FeatureFlagsImpl.java.template
Zhi Dou 257f64347d Revert "aconfig: cache flag value in generated java code"
This reverts commit 3dea629a9e.

Reason for revert: b/308228560

Change-Id: I6511def2e53ab793c5fd78f65bea14eeebc5cdb2
2023-10-30 13:24:31 +00:00

63 lines
1.9 KiB
Plaintext

package {package_name};
// TODO(b/303773055): Remove the annotation after access issue is resolved.
import android.compat.annotation.UnsupportedAppUsage;
{{ if not is_test_mode }}
{{ if is_read_write- }}
import android.provider.DeviceConfig;
{{ endif }}
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for item in class_elements}}
@Override
@UnsupportedAppUsage
public boolean {item.method_name}() \{
{{ -if item.is_read_write }}
return getValue(
"{item.device_config_namespace}",
"{item.device_config_flag}",
{item.default_value}
);
{{ else }}
return {item.default_value};
{{ endif- }}
}
{{ 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 }}
{#- Generate only stub if in test mode #}
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for item in class_elements}}
@Override
@UnsupportedAppUsage
public boolean {item.method_name}() \{
throw new UnsupportedOperationException(
"Method is not implemented.");
}
{{ endfor }}
}
{{ endif }}