jni_toolbox/
lib.rs

1pub mod into_java;
2pub mod from_java;
3
4pub use jni_toolbox_macro::jni;
5pub use into_java::{IntoJavaObject, IntoJava};
6pub use from_java::{FromJava, from_java_static};
7
8
9/// An error that is meant to be used with jni-toolbox.
10pub trait JniToolboxError: std::error::Error {
11	/// The Java class for the matching exception.
12	fn jclass(&self) -> String;
13}
14
15impl JniToolboxError for jni::errors::Error {
16	fn jclass(&self) -> String {
17		match self {
18			jni::errors::Error::NullPtr(_) => "java/lang/NullPointerException",
19			_ => "java/lang/RuntimeException",
20			// jni::errors::Error::WrongJValueType(_, _) => todo!(),
21			// jni::errors::Error::InvalidCtorReturn => todo!(),
22			// jni::errors::Error::InvalidArgList(_) => todo!(),
23			// jni::errors::Error::MethodNotFound { name, sig } => todo!(),
24			// jni::errors::Error::FieldNotFound { name, sig } => todo!(),
25			// jni::errors::Error::JavaException => todo!(),
26			// jni::errors::Error::JNIEnvMethodNotFound(_) => todo!(),
27			// jni::errors::Error::NullDeref(_) => todo!(),
28			// jni::errors::Error::TryLock => todo!(),
29			// jni::errors::Error::JavaVMMethodNotFound(_) => todo!(),
30			// jni::errors::Error::FieldAlreadySet(_) => todo!(),
31			// jni::errors::Error::ThrowFailed(_) => todo!(),
32			// jni::errors::Error::ParseFailed(_, _) => todo!(),
33			// jni::errors::Error::JniCall(_) => todo!(),
34		}
35			.to_string()
36	}
37}
38
39impl JniToolboxError for jni::errors::JniError {
40	fn jclass(&self) -> String {
41		match self {
42			_ => "java/lang/RuntimeException",
43			// jni::errors::JniError::Unknown => todo!(),
44			// jni::errors::JniError::ThreadDetached => todo!(),
45			// jni::errors::JniError::WrongVersion => todo!(),
46			// jni::errors::JniError::NoMemory => todo!(),
47			// jni::errors::JniError::AlreadyCreated => todo!(),
48			// jni::errors::JniError::InvalidArguments => todo!(),
49			// jni::errors::JniError::Other(_) => todo!(),
50		}
51			.to_string()
52	}
53}