(
env: &'b JNIEnv<'j>,
obj: JObject<'j>,
)
| 489 | } |
| 490 | |
| 491 | pub(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 | |
| 526 | pub(crate) fn from_jvalue<'j, 'b: 'j>( |
| 527 | env: &'b JNIEnv<'j>, |
no test coverage detected
searching dependent graphs…