Step to globally update to jni-rs 0.20.0

This commit is contained in:
tarsin committed 2023-06-15 15:43:37 +08:00
1 parent d240fb7e05
commit 2fac1c8e4c
9 files changed
+27 -29

No files matched your search

+1 -1
View File
@@ -15,5 +15,5 @@ keywords = ["ffi", "jni", "java"]
categories = ["api-bindings"]
[dependencies]
jni = "0.19.0"
jni = "0.20.0"
catch_panic_macros = { path = "../catch_panic_macros" }
+1 -1
View File
@@ -14,7 +14,7 @@ edition = "2018"
derive = ["jnix-macros"]
[dependencies]
jni = "0.19"
jni = "0.20.0"
jnix-macros = { version = "0.4.1", optional = true }
once_cell = "*"
parking_lot = "*"
@@ -1,9 +1,10 @@
mod net;
use crate::{FromJava, JnixEnv};
use jni::signature::ReturnType;
use jni::{
objects::{AutoLocal, JObject, JString, JValue},
signature::{JavaType, Primitive},
signature::Primitive,
sys::{jboolean, jint, JNI_FALSE},
};
@@ -150,7 +151,7 @@ impl<'env, 'sub_env> FromJava<'env, JObject<'sub_env>> for Option<i32> {
let method_id = env
.get_method_id(&class, "intValue", "()I")
.expect("Failed to get method ID for Integer.intValue()");
let return_type = JavaType::Primitive(Primitive::Int);
let return_type = ReturnType::Primitive(Primitive::Int);
let int_value = env
.call_method_unchecked(source, method_id, return_type, &[])
@@ -175,7 +176,7 @@ where
let size_method_id = env
.get_method_id(&class, "size", "()I")
.expect("Failed to get method ID for ArrayList.size()");
let size_return_type = JavaType::Primitive(Primitive::Int);
let size_return_type = ReturnType::Primitive(Primitive::Int);
let item_count = env
.call_method_unchecked(source, size_method_id, size_return_type, &[])
@@ -188,7 +189,7 @@ where
let get_method_id = env
.get_method_id(&class, "get", "(I)Ljava/lang/Object;")
.expect("Failed to get method ID for ArrayList.get()");
let get_return_type = JavaType::Object("java/lang/Object".to_owned());
let get_return_type = ReturnType::Object;
for index in 0..item_count {
let object = env
@@ -196,7 +197,7 @@ where
source,
get_method_id,
get_return_type.clone(),
&[JValue::Int(index)],
&[JValue::from(index).to_jni()],
)
.expect("Failed to call ArrayList.get()")
.l()
@@ -1,8 +1,6 @@
use crate::{FromJava, JnixEnv};
use jni::{
objects::JObject,
signature::{JavaType, Primitive},
};
use jni::objects::JObject;
use jni::signature::ReturnType;
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
fn read_inet_address_octets<'env, 'o>(env: &JnixEnv<'env>, source: JObject<'o>) -> JObject<'env>
@@ -13,7 +11,7 @@ where
let method_id = env
.get_method_id(&class, "getAddress", "()[B")
.expect("Failed to get method ID for InetAddress.getAddress()");
let return_type = JavaType::Array(Box::new(JavaType::Primitive(Primitive::Byte)));
let return_type = ReturnType::Array;
env.call_method_unchecked(source, method_id, return_type, &[])
.expect("Failed to call InetAddress.getAddress()")
@@ -31,7 +29,7 @@ where
let buffer_octets = buffer.as_mut();
let buffer_size = buffer_octets.len();
env.get_byte_array_region(octets.into_inner(), 0, &mut signed_octets[..buffer_size])
env.get_byte_array_region(octets.into_raw(), 0, &mut signed_octets[..buffer_size])
.expect("Failed to read octets returned by InetAddress.getAddress()");
for index in 0..buffer_size {
@@ -76,7 +74,7 @@ where
fn from_java(env: &JnixEnv<'env>, source: JObject<'sub_env>) -> Self {
let octets = read_inet_address_octets(env, source);
let octet_count = env
.get_array_length(octets.into_inner())
.get_array_length(octets.into_raw())
.expect("Failed to get length of byte array returned by InetAddress.getAddress()");
match octet_count {
@@ -76,7 +76,7 @@ impl<'borrow, 'env: 'borrow> IntoJava<'borrow, 'env> for &'_ [u8] {
env.set_byte_array_region(array, 0, data)
.expect("Failed to copy bytes to Java array");
env.auto_local(JObject::from(array))
env.auto_local(unsafe { JObject::from_raw(array) })
}
}
@@ -1,7 +1,7 @@
use crate::{AsJValue, IntoJava, JnixEnv};
use crate::{IntoJava, JnixEnv};
use jni::signature::ReturnType;
use jni::{
objects::{AutoLocal, JObject, JValue},
signature::JavaType,
sys::jint,
};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
@@ -27,13 +27,13 @@ fn ipvx_addr_into_java<'borrow, 'env: 'borrow>(
env.set_byte_array_region(octets_array, 0, &octet_data)
.expect("Failed to copy IP address octets to byte array");
let octets = env.auto_local(JObject::from(octets_array));
let octets = env.auto_local(unsafe { JObject::from_raw(octets_array) });
let result = env
.call_static_method_unchecked(
&class,
constructor,
JavaType::Object("java/net/InetAddress".to_owned()),
&[octets.as_jvalue()],
ReturnType::Object,
&[JValue::from(&octets).to_jni()],
)
.expect("Failed to create InetAddress Java object");
+1 -1
View File
@@ -13,7 +13,7 @@ static CLASS_CACHE: Lazy<Mutex<HashMap<String, GlobalRef>>> =
///
/// Also provides an internal cache for loaded classes.
pub struct JnixEnv<'env> {
env: JNIEnv<'env>,
pub env: JNIEnv<'env>,
}
impl<'env> From<JNIEnv<'env>> for JnixEnv<'env> {
-2
View File
@@ -83,8 +83,6 @@
//! [derive `IntoJava`]: ../jnix_macros/derive.IntoJava.html
//! [derive `FromJava`]: ../jnix_macros/derive.FromJava.html
#![deny(missing_docs)]
pub extern crate jni;
mod as_jvalue;
+7 -6
View File
@@ -57,9 +57,9 @@ pub struct Limits {
resetCost: i32,
}
fn parse_jni_string<F, R>(env: &JNIEnv, str: &JString, mut f: F) -> Option<R>
fn parse_jni_string<F, R>(env: &mut JnixEnv, str: &JString, mut f: F) -> Option<R>
where
F: FnMut(&VDom, &Parser, &JNIEnv) -> Option<R>,
F: FnMut(&VDom, &Parser, &JnixEnv) -> Option<R>,
{
let html = env.get_string(*str).ok()?;
let dom = tl::parse(html.to_str().ok()?, tl::ParserOptions::default()).ok()?;
@@ -72,7 +72,7 @@ where
#[allow(non_snake_case)]
#[jni_fn("com.hippo.ehviewer.client.parser.HomeParserKt")]
pub fn parseLimit(env: JNIEnv, _class: JClass, input: JString) -> jobject {
let mut env = JnixEnv::from(env);
let mut env = JnixEnv { env };
let vec = parse_jni_string(&mut env, &input, |dom, parser, _env| {
let iter = dom.query_selector("strong")?;
let vec: Vec<i32> = iter
@@ -89,7 +89,7 @@ pub fn parseLimit(env: JNIEnv, _class: JClass, input: JString) -> jobject {
}
})
.unwrap();
vec.into_java(&env).forget().into_inner()
vec.into_java(&env).forget().into_raw()
}
#[no_mangle]
@@ -97,6 +97,7 @@ pub fn parseLimit(env: JNIEnv, _class: JClass, input: JString) -> jobject {
#[allow(non_snake_case)]
#[jni_fn("com.hippo.ehviewer.client.parser.FavoritesParserKt")]
pub fn parseFav(mut env: JNIEnv, _class: JClass, input: JString, str: jobjectArray) -> jintArray {
let mut env = JnixEnv { env };
let vec = parse_jni_string(&mut env, &input, |dom, parser, env| {
let fp = dom.get_elements_by_class_name("fp");
let vec: Vec<i32> = fp
@@ -137,7 +138,7 @@ pub fn parseFav(mut env: JNIEnv, _class: JClass, input: JString, str: jobjectArr
#[allow(non_snake_case)]
#[jni_fn("com.hippo.ehviewer.client.parser.TorrentParserKt")]
pub fn parseTorrent(env: JNIEnv, _class: JClass, input: JString) -> jobject {
let mut env = JnixEnv::from(env);
let mut env = JnixEnv { env };
parse_jni_string(&mut env, &input, |dom, parser, _env| {
Some(TorrentResult {
list: dom.query_selector("table")?.filter_map(|e| {
@@ -148,7 +149,7 @@ pub fn parseTorrent(env: JNIEnv, _class: JClass, input: JString) -> jobject {
Some(Torrent { posted: grp[1].to_string(), size: grp[2].to_string(), seeds: grp[3].parse().ok()?, peers: grp[4].parse().ok()?, downloads: grp[5].parse().ok()?, url: grp[7].to_string(), name: name.to_string() })
}).collect()
})
}).unwrap().into_java(&env).forget().into_inner()
}).unwrap().into_java(&env).forget().into_raw()
}
#[no_mangle]