tesseract_android_base/error/
android.rs1use jni::{JNIEnv, objects::JObject, errors::Result};
2
3use thiserror::Error;
4
5use log::SetLoggerError;
6
7use crabdroid::error::{ExceptionConvertible, CompositeError, CompositeErrorInclude, GlobalError};
8
9use super::tesseract::global_error_to_tesseract;
10
11use super::exception::*;
12
13#[derive(Debug, Error)]
14pub enum TesseractAndroidError {
15 #[error(transparent)]
16 Tesseract(#[from] tesseract_one::Error),
17
18 #[error(transparent)]
19 Logger(#[from] SetLoggerError),
20
21 #[error(transparent)]
22 Gllobal(#[from] GlobalError)
23}
24
25impl Into<tesseract_one::Error> for TesseractAndroidError {
26 fn into(self) -> tesseract_one::Error {
27 match self {
28 TesseractAndroidError::Tesseract(e) => e,
29 TesseractAndroidError::Logger(e) => tesseract_one::Error::described(
30 tesseract_one::ErrorKind::Weird,
31 &e.to_string()),
32 TesseractAndroidError::Gllobal(e) => global_error_to_tesseract(e),
33 }
34 }
35}
36
37impl ExceptionConvertible for TesseractAndroidError {
38 fn to_exception<'a: 'b, 'b>(&self, env: &'b JNIEnv<'a>) -> Result<JObject<'a>> {
39 match self {
40 TesseractAndroidError::Tesseract(error) => tesseract_error_to_exception(error, env),
41 TesseractAndroidError::Logger(error) => logger_error_to_exception(error, env),
42 TesseractAndroidError::Gllobal(error) => global_error_to_exception(error, env),
43 }
44 }
45}
46
47impl !CompositeErrorInclude for TesseractAndroidError {
48}
49
50impl From<TesseractAndroidError> for CompositeError<TesseractAndroidError> {
51 fn from(value: TesseractAndroidError) -> Self {
52 Self::Other(value)
53 }
54}