Skip to content

Commit 52b4c25

Browse files
committed
Dev: fix Set encoding/decoding
1 parent d206c8c commit 52b4c25

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

Sources/JavaDecoder.swift

+6-6
Original file line numberDiff line numberDiff line change
@@ -625,10 +625,10 @@ extension JavaDecoder {
625625
JNI.DeleteLocalRef(javaClassName)
626626
let codableType: JNIStorageType
627627
if className == ArrayListClassname {
628-
codableType = .array
628+
codableType = .array(className: ArrayListClassname)
629629
}
630630
else if className == HashSetClassname {
631-
codableType = .array
631+
codableType = .array(className: HashSetClassname)
632632
}
633633
else if className == HashMapClassname {
634634
codableType = .dictionary
@@ -647,9 +647,9 @@ extension JavaDecoder {
647647
let obj = JNI.api.NewLocalRef(JNI.env, javaObject)!
648648
switch stringType {
649649
case _ where stringType.starts(with: "Array<"):
650-
storageObject = JNIStorageObject(type: .array, javaObject: obj)
650+
storageObject = JNIStorageObject(type: .array(className: ArrayListClassname), javaObject: obj)
651651
case _ where stringType.starts(with: "Set<"):
652-
storageObject = JNIStorageObject(type: .array, javaObject: obj)
652+
storageObject = JNIStorageObject(type: .array(className: HashSetClassname), javaObject: obj)
653653
case _ where stringType.starts(with: "Dictionary<"):
654654
storageObject = JNIStorageObject(type: .dictionary, javaObject: obj)
655655
default:
@@ -687,9 +687,9 @@ extension JavaDecoder {
687687
JNI.DeleteLocalRef(javaClassName)
688688
switch className {
689689
case ArrayListClassname:
690-
return .array
690+
return .array(className: ArrayListClassname)
691691
case HashSetClassname:
692-
return .array
692+
return .array(className: HashSetClassname)
693693
case HashMapClassname:
694694
return .dictionary
695695
default:

Sources/JavaEncoder.swift

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ public enum JavaCodingError: Error {
2525

2626
indirect enum JNIStorageType {
2727
case object(className: String)
28-
case array
28+
case array(className: String)
2929
case dictionary
3030
case anyCodable(codable: JNIStorageType)
3131

3232
var sig: String {
3333
switch self {
3434
case .object(let className):
3535
return "L\(className);"
36-
case .array:
37-
return "L\(ArrayListClassname);"
36+
case .array(let className):
37+
return "L\(className);"
3838
case .dictionary:
3939
return "L\(HashMapClassname);"
4040
case .anyCodable(let codable):
@@ -534,7 +534,7 @@ extension JavaEncoder {
534534
}
535535
else if anyCodableValue.typeName == AnyCodable.ArrayTypeName {
536536
fullClassName = ArrayListClassname
537-
storageType = .anyCodable(codable: .array)
537+
storageType = .anyCodable(codable: .array(className: fullClassName))
538538
}
539539
else {
540540
fullClassName = package + "/" + anyCodableValue.typeName
@@ -566,11 +566,11 @@ extension JavaEncoder {
566566
}
567567
else if value is [Encodable] {
568568
fullClassName = ArrayListClassname
569-
storageType = .array
569+
storageType = .array(className: fullClassName)
570570
}
571571
else if value is Set<AnyHashable> {
572572
fullClassName = HashSetClassname
573-
storageType = .array
573+
storageType = .array(className: fullClassName)
574574
}
575575
else {
576576
fullClassName = package + "/" + String(describing: type(of: value))

0 commit comments

Comments
 (0)