Step to globally update to jni-rs 0.20.0
This commit is contained in:
1 parent
d240fb7e05
commit
2fac1c8e4c
9 files changed
+27
-29
No files matched your search
@@ -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" }
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in new issue
Block a user