jdbc 0.0.0

Rust bindings to the Java Jdbc.
Documentation
use super::properties::Properties;
use crate::errors::Error;
use jni::{
    objects::{JObject, JValueGen},
    JNIEnv,
};
pub struct HikariConfig<'a>(JObject<'a>);

impl<'a> HikariConfig<'a> {
    pub fn new(env: &mut JNIEnv<'a>, properties: Properties) -> Result<Self, Error> {
        let properties = properties.into();
        let config = env.new_object(
            "com/zaxxer/hikari/HikariConfig",
            "(Ljava/util/Properties;)V",
            &[JValueGen::Object(&properties)],
        )?;
        env.delete_local_ref(properties)?;
        Ok(HikariConfig(config))
    }
}
impl<'a> Into<JObject<'a>> for HikariConfig<'a> {
    fn into(self) -> JObject<'a> {
        self.0
    }
}

pub struct HikariDataSource<'a>(JObject<'a>);

impl<'a> HikariDataSource<'a> {
    pub fn new(env: &mut JNIEnv<'a>, config: HikariConfig) -> Result<Self, Error> {
        let config = config.0;
        let datasource = env.new_object(
            "com/zaxxer/hikari/HikariDataSource",
            "(Lcom/zaxxer/hikari/HikariConfig;)V",
            &[JValueGen::Object(&config)],
        )?;
        env.delete_local_ref(config)?;
        Ok(HikariDataSource(datasource))
    }
}
impl<'a> Into<JObject<'a>> for HikariDataSource<'a> {
    fn into(self) -> JObject<'a> {
        self.0
    }
}