Skip to content

Commit 0dd2f9b

Browse files
authored
Merge pull request #3 from readdle/fix/improve-error-messages
Dev: improve error messages for NoSuchFieldException
2 parents cf5209a + 58ae496 commit 0dd2f9b

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

Sources/JavaDecoder.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,12 @@ fileprivate class JavaObjectContainer<K : CodingKey> : KeyedDecodingContainerPro
202202
var locals = [jobject]()
203203
let cls = JNI.api.GetObjectClass(JNI.env, javaObject)!
204204
let javaTypename = key.stringValue.localJavaObject(&locals)
205-
let field = JNI.CallObjectMethod(cls, methodID: ClassGetFieldMethod, args: [jvalue(l: javaTypename)])!
205+
guard let field = JNI.CallObjectMethod(cls, ClassGetFieldMethod, javaTypename!) else {
206+
JNI.ExceptionReset()
207+
let errorMessage = "\(javaClass).\(key.stringValue): JavaDecoder uses reflection for AnyCodable, " +
208+
"probably \(key.stringValue) field not public"
209+
throw JavaCodingError.cantFindObject(errorMessage)
210+
}
206211
let fieldClass = JNI.CallObjectMethod(field, methodID: FieldGetTypedMethod, args: [])!
207212
let javaClassName = JNI.api.CallObjectMethodA(JNI.env, fieldClass, ClassGetNameMethod, nil)!
208213
classname = String(javaObject: javaClassName).replacingOccurrences(of: ".", with: "/")

0 commit comments

Comments
 (0)