Dev: fix AnyCodable basic type encoding
This commit is contained in:
parent
6883ee4c5c
commit
fc83412915
|
@ -520,6 +520,12 @@ extension JavaEncoder {
|
||||||
}
|
}
|
||||||
else if T.self == AnyCodable.self {
|
else if T.self == AnyCodable.self {
|
||||||
let anyCodableValue = value as! AnyCodable
|
let anyCodableValue = value as! AnyCodable
|
||||||
|
if let javaClassname = JavaCoderConfig.codableClassNames[anyCodableValue.typeName] {
|
||||||
|
let encodableClosure = JavaCoderConfig.encodableClosures[anyCodableValue.typeName]!
|
||||||
|
let javaObject = try encodableClosure(anyCodableValue.value)
|
||||||
|
storage = JNIStorageObject(type: .object(className: javaClassname), javaObject: javaObject)
|
||||||
|
}
|
||||||
|
else {
|
||||||
let storageType: JNIStorageType
|
let storageType: JNIStorageType
|
||||||
let fullClassName: String
|
let fullClassName: String
|
||||||
if anyCodableValue.typeName == AnyCodable.DictionaryTypeName {
|
if anyCodableValue.typeName == AnyCodable.DictionaryTypeName {
|
||||||
|
@ -530,10 +536,6 @@ extension JavaEncoder {
|
||||||
fullClassName = ArrayListClassname
|
fullClassName = ArrayListClassname
|
||||||
storageType = .anyCodable(codable: .array)
|
storageType = .anyCodable(codable: .array)
|
||||||
}
|
}
|
||||||
else if let javaClassname = JavaCoderConfig.codableClassNames[anyCodableValue.typeName] {
|
|
||||||
fullClassName = javaClassname
|
|
||||||
storageType = .anyCodable(codable: .object(className: fullClassName))
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
fullClassName = package + "/" + anyCodableValue.typeName
|
fullClassName = package + "/" + anyCodableValue.typeName
|
||||||
storageType = .anyCodable(codable: .object(className: fullClassName))
|
storageType = .anyCodable(codable: .object(className: fullClassName))
|
||||||
|
@ -547,6 +549,7 @@ extension JavaEncoder {
|
||||||
javaObjects.append(storage)
|
javaObjects.append(storage)
|
||||||
try anyCodableValue.encode(to: self)
|
try anyCodableValue.encode(to: self)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if Mirror(reflecting: value).displayStyle == .enum {
|
else if Mirror(reflecting: value).displayStyle == .enum {
|
||||||
let fullClassName = package + "/" + String(describing: type(of: value))
|
let fullClassName = package + "/" + String(describing: type(of: value))
|
||||||
// We don't create object for enum. Should be created at JavaEnumValueEncodingContainer
|
// We don't create object for enum. Should be created at JavaEnumValueEncodingContainer
|
||||||
|
|
Loading…
Reference in New Issue