jni-utils 0.1.1

Extra Utilities for JNI in Rust
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use jni::{JNIEnv, objects::GlobalRef};
use once_cell::sync::OnceCell;
use dashmap::DashMap;
use ::jni::{errors::Result};

static CLASSCACHE: OnceCell<DashMap<String, GlobalRef>> = OnceCell::new();

pub fn find_add_class(env: &JNIEnv, classname: &str) -> Result<()> {
  let cache = CLASSCACHE.get_or_init(|| DashMap::new());
  cache.insert(classname.to_owned(), env.new_global_ref(env.find_class(classname).unwrap()).unwrap());
  Ok(())
}

pub fn get_class(classname: &str) -> Option<GlobalRef> {
  let cache = CLASSCACHE.get_or_init(|| DashMap::new());
  cache.get(classname).and_then(|pair| Some(pair.value().clone()))
}