diff options
Diffstat (limited to 'tools/aconfig/src/codegen/java.rs')
| -rw-r--r-- | tools/aconfig/src/codegen/java.rs | 26 | 
1 files changed, 15 insertions, 11 deletions
diff --git a/tools/aconfig/src/codegen/java.rs b/tools/aconfig/src/codegen/java.rs index f958c21bac..ae3f274648 100644 --- a/tools/aconfig/src/codegen/java.rs +++ b/tools/aconfig/src/codegen/java.rs @@ -14,7 +14,7 @@   * limitations under the License.   */ -use anyhow::Result; +use anyhow::{anyhow, Result};  use serde::Serialize;  use std::collections::{BTreeMap, BTreeSet};  use std::path::PathBuf; @@ -34,17 +34,26 @@ where  {      let flag_elements: Vec<FlagElement> =          parsed_flags_iter.map(|pf| create_flag_element(package, pf)).collect(); +    let exported_flag_elements: Vec<FlagElement> = +        flag_elements.iter().filter(|elem| elem.exported).cloned().collect();      let namespace_flags = gen_flags_by_namespace(&flag_elements);      let properties_set: BTreeSet<String> =          flag_elements.iter().map(|fe| format_property_name(&fe.device_config_namespace)).collect(); -    let is_read_write = flag_elements.iter().any(|elem| elem.is_read_write);      let is_test_mode = codegen_mode == CodegenMode::Test;      let library_exported = codegen_mode == CodegenMode::Exported; +    let runtime_lookup_required = +        flag_elements.iter().any(|elem| elem.is_read_write) || library_exported; + +    if library_exported && exported_flag_elements.is_empty() { +        return Err(anyhow!("exported library contains no exported flags")); +    } +      let context = Context {          flag_elements, +        exported_flag_elements,          namespace_flags,          is_test_mode, -        is_read_write, +        runtime_lookup_required,          properties_set,          package_name: package.to_string(),          library_exported, @@ -100,9 +109,10 @@ fn gen_flags_by_namespace(flags: &[FlagElement]) -> Vec<NamespaceFlags> {  #[derive(Serialize)]  struct Context {      pub flag_elements: Vec<FlagElement>, +    pub exported_flag_elements: Vec<FlagElement>,      pub namespace_flags: Vec<NamespaceFlags>,      pub is_test_mode: bool, -    pub is_read_write: bool, +    pub runtime_lookup_required: bool,      pub properties_set: BTreeSet<String>,      pub package_name: String,      pub library_exported: bool, @@ -655,14 +665,8 @@ mod tests {              }              private Map<String, Boolean> mFlagMap = new HashMap<>(                  Map.ofEntries( -                    Map.entry(Flags.FLAG_DISABLED_RO, false), -                    Map.entry(Flags.FLAG_DISABLED_RW, false),                      Map.entry(Flags.FLAG_DISABLED_RW_EXPORTED, false), -                    Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false), -                    Map.entry(Flags.FLAG_ENABLED_FIXED_RO, false), -                    Map.entry(Flags.FLAG_ENABLED_RO, false), -                    Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false), -                    Map.entry(Flags.FLAG_ENABLED_RW, false) +                    Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false)                  )              );          }  |