summaryrefslogtreecommitdiff
path: root/tools/aconfig/src/codegen/java.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aconfig/src/codegen/java.rs')
-rw-r--r--tools/aconfig/src/codegen/java.rs26
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)
)
);
}