MCPcopy Create free account
hub / github.com/bluejekyll/wasmtime-java / from_java

Function from_java

wasmtime-jni/src/wasm_value.rs:491–524  ·  view source on GitHub ↗
(
    env: &'b JNIEnv<'j>,
    obj: JObject<'j>,
)

Source from the content-addressed store, hash-verified

489}
490
491pub(crate) fn from_java<'j, 'b: 'j>(
492 env: &'b JNIEnv<'j>,
493 obj: JObject<'j>,
494) -> Result<WasmVal<'j>, Error> {
495 //let bytea: JClass = env.find_class("[B")?;
496
497 assert!(!obj.is_null(), "obj should not be null for conversion");
498 match obj {
499 _ if env.is_instance_of(obj, I64)? => {
500 let jvalue = env.call_method(obj, "longValue", "()J", &[])?;
501 Ok(Val::I64(jvalue.j()?).into())
502 }
503 _ if env.is_instance_of(obj, I32)? => {
504 let jvalue = env.call_method(obj, "intValue", "()I", &[])?;
505 Ok(Val::I32(jvalue.i()?).into())
506 }
507 _ if env.is_instance_of(obj, F64)? => {
508 let jvalue = env.call_method(obj, "doubleValue", "()D", &[])?;
509 Ok(Val::F64(jvalue.d()?.to_bits()).into())
510 }
511 _ if env.is_instance_of(obj, F32)? => {
512 let jvalue = env.call_method(obj, "floatValue", "()F", &[])?;
513 Ok(Val::F32(jvalue.f()?.to_bits()).into())
514 }
515 // _ if env.is_instance_of(obj, BYTE_BUFFER)? => Ok(WasmVal::from(JByteBuffer::from(obj))),
516 // _ if env.is_instance_of(obj, BYTE_ARRAY)? => Ok(WasmVal::from_byte_array(env, *obj)),
517 // _ if env.is_instance_of(obj, STRING)? => Ok(WasmVal::from(JString::from(obj))),
518 _ => {
519 let clazz = env.get_object_class(obj)?;
520 let name = get_class_name(env, clazz)?;
521 Err(anyhow!("Unsupported Java object: {}", name))
522 }
523 }
524}
525
526pub(crate) fn from_jvalue<'j, 'b: 'j>(
527 env: &'b JNIEnv<'j>,

Callers 2

from_jvalueFunction · 0.85

Calls 5

I64Class · 0.85
I32Class · 0.85
F64Class · 0.85
F32Class · 0.85
get_class_nameFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…