Skip to content
Merged
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,3 @@ Package.resolved

# Cache of project
.gradletasknamecache

# Ignore generated sources
**/generated/
10 changes: 1 addition & 9 deletions .licenseignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,7 @@ Makefile
**/*.html
**/CMakeLists.txt
**/*.jar
**/generated/*.swift
gradle/wrapper/gradle-wrapper.properties
gradlew
gradlew.bat
**/*.swift2java
Sources/JavaKit/generated/*
Sources/JavaKitJar/generated/*
Sources/JavaKitNetwork/generated/*
Sources/JavaKitReflection/generated/*
Sources/_Subprocess/*
Sources/_Subprocess/**/*
Sources/_SubprocessCShims/*
Sources/_SubprocessCShims/**/*
16 changes: 10 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,21 @@ generate-JavaKit: Java2Swift
mkdir -p Sources/JavaKit/generated
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKit -o Sources/JavaKit/generated Sources/JavaKit/Java2Swift.config

generate-JavaKitReflection: Java2Swift generate-JavaKit
generate-JavaKitCollection: Java2Swift
mkdir -p Sources/JavaKitCollection/generated
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitCollection --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitCollection/generated Sources/JavaKitCollection/Java2Swift.config

generate-JavaKitReflection: Java2Swift generate-JavaKit generate-JavaKitCollection
mkdir -p Sources/JavaKitReflection/generated
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitReflection --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitReflection/generated Sources/JavaKitReflection/Java2Swift.config
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitReflection --depends-on JavaKit=Sources/JavaKit/Java2Swift.config --depends-on JavaKitCollection=Sources/JavaKitCollection/Java2Swift.config -o Sources/JavaKitReflection/generated Sources/JavaKitReflection/Java2Swift.config

generate-JavaKitJar: Java2Swift generate-JavaKit
generate-JavaKitJar: Java2Swift generate-JavaKit generate-JavaKitCollection
mkdir -p Sources/JavaKitJar/generated
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitJar --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitJar/generated Sources/JavaKitJar/Java2Swift.config
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitJar --depends-on JavaKit=Sources/JavaKit/Java2Swift.config --depends-on JavaKitCollection=Sources/JavaKitCollection/Java2Swift.config -o Sources/JavaKitJar/generated Sources/JavaKitJar/Java2Swift.config

generate-JavaKitNetwork: Java2Swift generate-JavaKit
generate-JavaKitNetwork: Java2Swift generate-JavaKit generate-JavaKitCollection
mkdir -p Sources/JavaKitNetwork/generated
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitNetwork --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitNetwork/generated Sources/JavaKitNetwork/Java2Swift.config
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitNetwork --depends-on JavaKit=Sources/JavaKit/Java2Swift.config --depends-on JavaKitCollection=Sources/JavaKitCollection/Java2Swift.config -o Sources/JavaKitNetwork/generated Sources/JavaKitNetwork/Java2Swift.config

javakit-generate: generate-JavaKit generate-JavaKitReflection generate-JavaKitJar generate-JavaKitNetwork

Expand Down
20 changes: 17 additions & 3 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ let package = Package(
targets: ["JavaRuntime"]
),

.library(
name: "JavaKitCollection",
targets: ["JavaKitCollection"]
),

.library(
name: "JavaKitJar",
targets: ["JavaKitReflection"]
Expand Down Expand Up @@ -163,17 +168,26 @@ let package = Package(
]
),
.target(
name: "JavaKitJar",
name: "JavaKitCollection",
dependencies: ["JavaKit"],
exclude: ["Java2Swift.config"],
swiftSettings: [
.swiftLanguageMode(.v5),
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
]
),
.target(
name: "JavaKitJar",
dependencies: ["JavaKit", "JavaKitCollection"],
exclude: ["Java2Swift.config"],
swiftSettings: [
.swiftLanguageMode(.v5),
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
]
),
.target(
name: "JavaKitNetwork",
dependencies: ["JavaKit"],
dependencies: ["JavaKit", "JavaKitCollection"],
exclude: ["Java2Swift.config"],
swiftSettings: [
.swiftLanguageMode(.v5),
Expand All @@ -182,7 +196,7 @@ let package = Package(
),
.target(
name: "JavaKitReflection",
dependencies: ["JavaKit"],
dependencies: ["JavaKit", "JavaKitCollection"],
exclude: ["Java2Swift.config"],
swiftSettings: [
.swiftLanguageMode(.v5),
Expand Down
2 changes: 1 addition & 1 deletion Sources/JavaKit/BridgedValues/JavaValue+Array.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ extension Array: JavaValue where Element: JavaValue {
public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray {
return { environment, size in
// FIXME: We should have a bridged JavaArray that we can use here.
let arrayClass = environment.interface.FindClass(environment, "java.lang.Array")
let arrayClass = environment.interface.FindClass(environment, "java/lang/Array")
return environment.interface.NewObjectArray(environment, size, arrayClass, nil)
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/JavaKit/BridgedValues/JavaValue+String.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ extension String: JavaValue {
public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray {
return { environment, size in
// FIXME: Introduce a JavaString class that we can use for this.
let stringClass = environment.interface.FindClass(environment, "java.lang.String")
let stringClass = environment.interface.FindClass(environment, "java/lang/String")
return environment.interface.NewObjectArray(environment, size, stringClass, nil)
}
}
Expand Down
3 changes: 1 addition & 2 deletions Sources/JavaKit/Java2Swift.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"java.lang.Exception" : "Exception",
"java.lang.Object" : "JavaObject",
"java.lang.RuntimeException" : "RuntimeException",
"java.lang.Throwable" : "Throwable",
"java.util.Enumeration" : "Enumeration"
"java.lang.Throwable" : "Throwable"
}
}
22 changes: 22 additions & 0 deletions Sources/JavaKitCollection/Java2Swift.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"classes" : {
"java.util.Collection" : "JavaCollection",
"java.util.Enumeration" : "Enumeration",
"java.util.Iterator" : "JavaIterator",
"java.util.List" : "List",
"java.util.ListIterator" : "ListIterator",
"java.util.Queue" : "Queue",
"java.util.RandomAccess" : "RandomAccess",
"java.util.Set" : "JavaSet",
"java.util.ArrayDeque" : "ArrayDeque",
"java.util.ArrayList" : "ArrayList",
"java.util.BitSet" : "BitSet",
"java.util.Dictionary" : "JavaDictionary",
"java.util.HashMap" : "HashMap",
"java.util.HashSet" : "HashSet",
"java.util.PriorityQueue" : "PriorityQueue",
"java.util.Stack" : "Stack",
"java.util.TreeMap" : "TreeMap",
"java.util.TreeSet" : "TreeSet"
}
}
27 changes: 27 additions & 0 deletions Sources/JavaKitCollection/JavaIterator+Iterator.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Swift.org project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import JavaKit

extension JavaIterator: IteratorProtocol {
public typealias Element = E

public func next() -> E? {
if hasNext() {
let nextResult: JavaObject? = next()
return nextResult.map { $0.as(E.self)! }
}

return nil
}
}
23 changes: 23 additions & 0 deletions Sources/JavaKitCollection/List+Sequence.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Swift.org project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

extension List: Sequence {
public typealias Element = E
public typealias Iterator = JavaIterator<E>

public func makeIterator() -> Iterator {
return self.iterator()!.as(JavaIterator<E>.self)!
}
}

153 changes: 153 additions & 0 deletions Sources/JavaKitCollection/generated/ArrayDeque.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
// Auto-generated by Java-to-Swift wrapper generator.
import JavaKit
import JavaRuntime

@JavaClass("java.util.ArrayDeque")
public struct ArrayDeque<E: AnyJavaObject> {
@JavaMethod
public init(_ arg0: Int32, environment: JNIEnvironment)

@JavaMethod
public init(environment: JNIEnvironment)

@JavaMethod
public init(_ arg0: JavaCollection<JavaObject>?, environment: JNIEnvironment)

@JavaMethod
public func remove() -> JavaObject?

@JavaMethod
public func remove(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func size() -> Int32

@JavaMethod
public func clone() -> ArrayDeque<JavaObject>?

@JavaMethod
public func clone() throws -> JavaObject?

@JavaMethod
public func clear()

@JavaMethod
public func isEmpty() -> Bool

@JavaMethod
public func add(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func toArray(_ arg0: [JavaObject?]) -> [JavaObject?]

@JavaMethod
public func toArray() -> [JavaObject?]

@JavaMethod
public func iterator() -> JavaIterator<JavaObject>?

@JavaMethod
public func contains(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func addAll(_ arg0: JavaCollection<JavaObject>?) -> Bool

@JavaMethod
public func peek() -> JavaObject?

@JavaMethod
public func getFirst() -> JavaObject?

@JavaMethod
public func getLast() -> JavaObject?

@JavaMethod
public func element() -> JavaObject?

@JavaMethod
public func addFirst(_ arg0: JavaObject?)

@JavaMethod
public func addLast(_ arg0: JavaObject?)

@JavaMethod
public func removeFirst() -> JavaObject?

@JavaMethod
public func removeLast() -> JavaObject?

@JavaMethod
public func removeAll(_ arg0: JavaCollection<JavaObject>?) -> Bool

@JavaMethod
public func retainAll(_ arg0: JavaCollection<JavaObject>?) -> Bool

@JavaMethod
public func poll() -> JavaObject?

@JavaMethod
public func push(_ arg0: JavaObject?)

@JavaMethod
public func pop() -> JavaObject?

@JavaMethod
public func pollFirst() -> JavaObject?

@JavaMethod
public func pollLast() -> JavaObject?

@JavaMethod
public func offerLast(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func peekFirst() -> JavaObject?

@JavaMethod
public func removeFirstOccurrence(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func offerFirst(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func peekLast() -> JavaObject?

@JavaMethod
public func removeLastOccurrence(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func offer(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func descendingIterator() -> JavaIterator<JavaObject>?

@JavaMethod
public func toString() -> String

@JavaMethod
public func containsAll(_ arg0: JavaCollection<JavaObject>?) -> Bool

@JavaMethod
public func equals(_ arg0: JavaObject?) -> Bool

@JavaMethod
public func hashCode() -> Int32

@JavaMethod
public func getClass() -> JavaClass<JavaObject>?

@JavaMethod
public func notify()

@JavaMethod
public func notifyAll()

@JavaMethod
public func wait(_ arg0: Int64) throws

@JavaMethod
public func wait(_ arg0: Int64, _ arg1: Int32) throws

@JavaMethod
public func wait() throws
}
Loading