use jni_sys::jstring;
use jvm::Jvm;
use jvm_attachment::JvmAttachment;
use std::ffi::CStr;
use std::os::raw::c_char;
use std::ptr;
jvm_wrapper!(JvmString, jstring);
impl<'a> ToString for JvmString<'a> {
fn to_string(&self) -> String {
return unsafe {
let jvm_attachment = JvmAttachment::new(self.jvm.jvm());
let char_buffer: *const c_char =
(**jvm_attachment.jni_environment()).GetStringUTFChars.unwrap()(
jvm_attachment.jni_environment(),
self.jvm_ptr,
ptr::null_mut()
);
let string = CStr::from_ptr(char_buffer).to_str().unwrap().to_string();
(**jvm_attachment.jni_environment()).ReleaseStringUTFChars.unwrap()(
jvm_attachment.jni_environment(), self.jvm_ptr, char_buffer
);
string
}
}
}