1use jni::{JNIEnv, objects::GlobalRef};
2use once_cell::sync::OnceCell;
3use dashmap::DashMap;
4use ::jni::{errors::Result};
5
6static CLASSCACHE: OnceCell<DashMap<String, GlobalRef>> = OnceCell::new();
7
8pub fn find_add_class(env: &JNIEnv, classname: &str) -> Result<()> {
9 let cache = CLASSCACHE.get_or_init(|| DashMap::new());
10 cache.insert(classname.to_owned(), env.new_global_ref(env.find_class(classname).unwrap()).unwrap());
11 Ok(())
12}
13
14pub fn get_class(classname: &str) -> Option<GlobalRef> {
15 let cache = CLASSCACHE.get_or_init(|| DashMap::new());
16 cache.get(classname).and_then(|pair| Some(pair.value().clone()))
17}