Skip to content

Commit 7c965ac

Browse files
committed
WIP: need the parameterized parent types
1 parent 24fbaa5 commit 7c965ac

File tree

6 files changed

+43
-7
lines changed

6 files changed

+43
-7
lines changed

Sources/SwiftJava/generated/JavaClass.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ open class JavaClass<T: AnyJavaObject>: JavaObject {
3030
@JavaMethod
3131
open func isHidden() -> Bool
3232

33+
@JavaMethod
34+
open func getGenericSuperclass() -> JavaType
35+
3336
@JavaMethod
3437
open func getSuperclass() -> JavaClass<JavaObject>!
3538

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Auto-generated by Java-to-Swift wrapper generator.
2+
import CSwiftJavaJNI
3+
4+
@JavaClass("java.reflect.Type")
5+
open class JavaReflectParameterizedType: JavaObject {
6+
@JavaMethod
7+
open func getTypeName() -> String
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Auto-generated by Java-to-Swift wrapper generator.
2+
import CSwiftJavaJNI
3+
4+
@JavaClass("java.reflect.Type")
5+
open class JavaReflectType: JavaObject {
6+
@JavaMethod
7+
open func getTypeName() -> String
8+
}

Sources/SwiftJava/swift-java.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"java.lang.Byte" : "JavaByte",
66
"java.lang.Character" : "JavaCharacter",
77
"java.lang.Class" : "JavaClass",
8+
"java.lang.reflect.Type" : "JavaType",
9+
"java.lang.reflect.ParameterizedType" : "JavaParameterizedType",
810
"java.lang.ClassLoader" : "JavaClassLoader",
911
"java.lang.Double" : "JavaDouble",
1012
"java.lang.Error" : "JavaError",

Sources/SwiftJavaToolLib/JavaClassTranslator.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ struct JavaClassTranslator {
113113
/// Prepare translation for the given Java class (or interface).
114114
init(javaClass: JavaClass<JavaObject>, translator: JavaTranslator) throws {
115115
let fullName = javaClass.getName()
116+
print("TRANSLATE = \(fullName)")
117+
116118
self.javaClass = javaClass
117119
self.translator = translator
118120
self.translateAsClass = translator.translateAsClass && !javaClass.isInterface()

Tests/SwiftJavaToolLibTests/WrapJavaTests.swift

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
@_spi(Testing) import SwiftJava
1616
import SwiftJavaToolLib
1717
import JavaUtilJar
18+
import SwiftJavaShared
1819
import _Subprocess
1920
import XCTest // NOTE: Workaround for https://github.com/swiftlang/swift-java/issues/43
2021

@@ -69,16 +70,19 @@ class WrapJavaTests: XCTestCase {
6970
package com.example;
7071
7172
class ByteArray {}
72-
// class CompressingStore extends AbstractStore<ByteArray, byte[], byte[]> {}
73-
abstract class AbstractStore<K, V, T> implements Store<K, V, T> {}
74-
interface Store<K, V, T> {}
73+
class CompressingStore extends AbstractStore<ByteArray, byte[], byte[]> {}
74+
abstract class AbstractStore<K, V, T> {} // implements Store<K, V, T> {}
75+
// interface Store<K, V, T> {}
7576
7677
""")
7778

7879
try assertWrapJavaOutput(
7980
javaClassNames: [
8081
"com.example.ByteArray",
81-
"com.example.Store",
82+
// TODO: what if we visit in other order, does the wrap-java handle it
83+
// "com.example.Store",
84+
"com.example.AbstractStore",
85+
"com.example.CompressingStore",
8286
],
8387
classpath: [classpathURL],
8488
expectedChunks: [
@@ -93,6 +97,10 @@ class WrapJavaTests: XCTestCase {
9397
"""
9498
@JavaInterface("com.example.Store")
9599
public struct Store<K: AnyJavaObject, V: AnyJavaObject, T: AnyJavaObject> {
100+
""",
101+
"""
102+
@JavaClass("com.example.CompressingStore")
103+
open class CompressingStore: AbstractStore {
96104
"""
97105
]
98106
)
@@ -133,6 +141,7 @@ func compileJava(_ sourceText: String) async throws -> URL {
133141
"ERROR: \(errString)")
134142
}
135143

144+
print("Compiled java sources to: \(classesDirectory)")
136145
return classesDirectory
137146
}
138147

@@ -189,10 +198,11 @@ func assertWrapJavaOutput(
189198

190199
let swiftFileText =
191200
"""
201+
// ---------------------------------------------------------------------------
192202
// Auto-generated by Java-to-Swift wrapper generator.
193203
\(importDecls.map { $0.description }.joined())
194204
\(swiftClassDecls.map { $0.description }.joined(separator: "\n"))
195-
205+
\n
196206
"""
197207
swiftCompleteOutputText += swiftFileText
198208
}
@@ -202,10 +212,13 @@ func assertWrapJavaOutput(
202212
continue
203213
}
204214

205-
XCTFail("Expected chunk '\(expectedChunk)' not found in '\(swiftCompleteOutputText)'",
215+
XCTFail("Expected chunk: \n" +
216+
"\(expectedChunk.yellow)" +
217+
"\n" +
218+
"not found in:\n" +
219+
"\(swiftCompleteOutputText)",
206220
file: file, line: line)
207221
}
208222

209-
print("=============================================")
210223
print(swiftCompleteOutputText)
211224
}

0 commit comments

Comments
 (0)