FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
openapi/java/src/error.rs at main · noneback/openapi · GitHub
noneback
/
openapi
Public
forked from
longbridge/openapi
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
openapi
/
java
/
src
/
error.rs
Copy path
More file actions
More file actions
Latest commit
History
History
History
100 lines (88 loc) · 2.92 KB
Breadcrumbs
openapi
/
java
/
src
/
error.rs
Copy path
File metadata and controls
100 lines (88 loc) · 2.92 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
use
std
::
fmt
::
Display
;
use
jni
::
{
JNIEnv
,
errors
::
Result
,
objects
::
{
JObject
,
JThrowable
,
JValue
}
,
}
;
use
crate
::
init
::
{
LONG_CLASS
,
OPENAPI_EXCEPTION_CLASS
}
;
#
[
derive
(
Debug
,
thiserror
::
Error
)
]
pub
(
crate
)
enum
JniError
{
#
[
error
(
transparent
)
]
Jni
(
#
[
from
]
jni
::
errors
::
Error
)
,
#
[
error
(
transparent
)
]
OpenApi
(
#
[
from
]
longport
::
Error
)
,
#
[
error
(
"{0}"
)
]
Other
(
String
)
,
}
impl
JniError
{
fn
into_runtime_error_object
<
'
a
>
(
env
:
&
mut
JNIEnv
<
'
a
>
,
err
:
impl
Display
,
)
->
Result
<
JObject
<
'
a
>
>
{
let
jmsg
:
JObject
= env
.
new_string
(
err
.
to_string
(
)
)
?
.
into
(
)
;
env
.
new_object
(
"java/lang/RuntimeException"
,
"(Ljava/lang/String;)V"
,
&
[
JValue
::
from
(
&
jmsg
)
]
,
)
}
fn
throw_runtime_error
(
env
:
&
mut
JNIEnv
,
err
:
impl
Display
)
->
Result
<
(
)
>
{
let
err =
JThrowable
::
from
(
Self
::
into_runtime_error_object
(
env
,
err
)
?
)
;
env
.
throw
(
err
)
?
;
Ok
(
(
)
)
}
fn
into_openapi_error_object
<
'
a
>
(
env
:
&
mut
JNIEnv
<
'
a
>
,
err
:
longport
::
Error
,
)
->
Result
<
JObject
<
'
a
>
>
{
let
exception_cls =
OPENAPI_EXCEPTION_CLASS
.
get
(
)
.
unwrap
(
)
;
let
err = err
.
into_simple_error
(
)
;
let
code =
match
err
.
code
(
)
{
Some
(
code
)
=>
{
env
.
new_object
(
LONG_CLASS
.
get
(
)
.
unwrap
(
)
,
"(J)V"
,
&
[
JValue
::
from
(
code
)
]
)
?
}
None
=>
JObject
::
null
(
)
,
}
;
let
message
:
JObject
= env
.
new_string
(
err
.
message
(
)
)
?
.
into
(
)
;
env
.
new_object
(
exception_cls
,
"(Ljava/lang/Long;Ljava/lang/String;)V"
,
&
[
JValue
::
from
(
&
code
)
,
JValue
::
from
(
&
message
)
]
,
)
}
fn
throw_openapi_error
(
env
:
&
mut
JNIEnv
,
err
:
longport
::
Error
)
->
Result
<
(
)
>
{
let
err =
JThrowable
::
from
(
Self
::
into_openapi_error_object
(
env
,
err
)
?
)
;
env
.
throw
(
err
)
?
;
Ok
(
(
)
)
}
pub
(
crate
)
fn
into_error_object
<
'
a
>
(
self
,
env
:
&
mut
JNIEnv
<
'
a
>
)
->
JObject
<
'
a
>
{
match
self
{
JniError
::
Jni
(
err
)
=>
Self
::
into_runtime_error_object
(
env
,
err
)
,
JniError
::
OpenApi
(
err
)
=>
Self
::
into_openapi_error_object
(
env
,
err
)
,
JniError
::
Other
(
err
)
=>
Self
::
into_runtime_error_object
(
env
,
err
)
,
}
.
expect
(
"to error object"
)
}
fn
throw
(
self
,
env
:
&
mut
JNIEnv
)
{
let
res =
match
self
{
JniError
::
Jni
(
err
)
=>
Self
::
throw_runtime_error
(
env
,
err
)
,
JniError
::
OpenApi
(
err
)
=>
Self
::
throw_openapi_error
(
env
,
err
)
,
JniError
::
Other
(
err
)
=>
Self
::
throw_runtime_error
(
env
,
err
)
,
}
;
if
let
Err
(
err
)
= res
{
env
.
fatal_error
(
err
.
to_string
(
)
)
;
}
}
}
pub
(
crate
)
fn
jni_result
<
'
a
,
F
,
T
>
(
env
:
&
'
a
mut
JNIEnv
,
err_value
:
T
,
f
:
F
)
->
T
where
F
:
FnOnce
(
&
mut
JNIEnv
)
-> std
::
result
::
Result
<
T
,
JniError
>
+
'
a
,
{
match
f
(
env
)
{
Ok
(
value
)
=> value
,
Err
(
err
)
=>
{
err
.
throw
(
env
)
;
err_value
}
}
}
Back
|
FazBrowse Home
|
New Git URL