Skip to content

Commit a874bca

Browse files
authored
Merge pull request #90 from DougGregor/javakitcollection
JavaKitCollection module
2 parents f9c84cb + cce97fd commit a874bca

39 files changed

+1938
-26
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,3 @@ Package.resolved
2727

2828
# Cache of project
2929
.gradletasknamecache
30-
31-
# Ignore generated sources
32-
**/generated/

.licenseignore

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,7 @@ Makefile
3333
**/*.html
3434
**/CMakeLists.txt
3535
**/*.jar
36+
**/generated/*.swift
3637
gradle/wrapper/gradle-wrapper.properties
3738
gradlew
3839
gradlew.bat
39-
**/*.swift2java
40-
Sources/JavaKit/generated/*
41-
Sources/JavaKitJar/generated/*
42-
Sources/JavaKitNetwork/generated/*
43-
Sources/JavaKitReflection/generated/*
44-
Sources/_Subprocess/*
45-
Sources/_Subprocess/**/*
46-
Sources/_SubprocessCShims/*
47-
Sources/_SubprocessCShims/**/*

Makefile

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,21 @@ generate-JavaKit: Java2Swift
7272
mkdir -p Sources/JavaKit/generated
7373
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKit -o Sources/JavaKit/generated Sources/JavaKit/Java2Swift.config
7474

75-
generate-JavaKitReflection: Java2Swift generate-JavaKit
75+
generate-JavaKitCollection: Java2Swift
76+
mkdir -p Sources/JavaKitCollection/generated
77+
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitCollection --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitCollection/generated Sources/JavaKitCollection/Java2Swift.config
78+
79+
generate-JavaKitReflection: Java2Swift generate-JavaKit generate-JavaKitCollection
7680
mkdir -p Sources/JavaKitReflection/generated
77-
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitReflection --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitReflection/generated Sources/JavaKitReflection/Java2Swift.config
81+
$(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
7882

79-
generate-JavaKitJar: Java2Swift generate-JavaKit
83+
generate-JavaKitJar: Java2Swift generate-JavaKit generate-JavaKitCollection
8084
mkdir -p Sources/JavaKitJar/generated
81-
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitJar --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitJar/generated Sources/JavaKitJar/Java2Swift.config
85+
$(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
8286

83-
generate-JavaKitNetwork: Java2Swift generate-JavaKit
87+
generate-JavaKitNetwork: Java2Swift generate-JavaKit generate-JavaKitCollection
8488
mkdir -p Sources/JavaKitNetwork/generated
85-
$(BUILD_DIR)/debug/Java2Swift --module-name JavaKitNetwork --depends-on JavaKit=Sources/JavaKit/Java2Swift.config -o Sources/JavaKitNetwork/generated Sources/JavaKitNetwork/Java2Swift.config
89+
$(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
8690

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

Package.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ let package = Package(
5757
targets: ["JavaRuntime"]
5858
),
5959

60+
.library(
61+
name: "JavaKitCollection",
62+
targets: ["JavaKitCollection"]
63+
),
64+
6065
.library(
6166
name: "JavaKitJar",
6267
targets: ["JavaKitReflection"]
@@ -163,17 +168,26 @@ let package = Package(
163168
]
164169
),
165170
.target(
166-
name: "JavaKitJar",
171+
name: "JavaKitCollection",
167172
dependencies: ["JavaKit"],
168173
exclude: ["Java2Swift.config"],
169174
swiftSettings: [
170175
.swiftLanguageMode(.v5),
171176
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
172177
]
173178
),
179+
.target(
180+
name: "JavaKitJar",
181+
dependencies: ["JavaKit", "JavaKitCollection"],
182+
exclude: ["Java2Swift.config"],
183+
swiftSettings: [
184+
.swiftLanguageMode(.v5),
185+
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
186+
]
187+
),
174188
.target(
175189
name: "JavaKitNetwork",
176-
dependencies: ["JavaKit"],
190+
dependencies: ["JavaKit", "JavaKitCollection"],
177191
exclude: ["Java2Swift.config"],
178192
swiftSettings: [
179193
.swiftLanguageMode(.v5),
@@ -182,7 +196,7 @@ let package = Package(
182196
),
183197
.target(
184198
name: "JavaKitReflection",
185-
dependencies: ["JavaKit"],
199+
dependencies: ["JavaKit", "JavaKitCollection"],
186200
exclude: ["Java2Swift.config"],
187201
swiftSettings: [
188202
.swiftLanguageMode(.v5),

Sources/JavaKit/BridgedValues/JavaValue+Array.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ extension Array: JavaValue where Element: JavaValue {
9393
public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray {
9494
return { environment, size in
9595
// FIXME: We should have a bridged JavaArray that we can use here.
96-
let arrayClass = environment.interface.FindClass(environment, "java.lang.Array")
96+
let arrayClass = environment.interface.FindClass(environment, "java/lang/Array")
9797
return environment.interface.NewObjectArray(environment, size, arrayClass, nil)
9898
}
9999
}

Sources/JavaKit/BridgedValues/JavaValue+String.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ extension String: JavaValue {
6464
public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray {
6565
return { environment, size in
6666
// FIXME: Introduce a JavaString class that we can use for this.
67-
let stringClass = environment.interface.FindClass(environment, "java.lang.String")
67+
let stringClass = environment.interface.FindClass(environment, "java/lang/String")
6868
return environment.interface.NewObjectArray(environment, size, stringClass, nil)
6969
}
7070
}

Sources/JavaKit/Java2Swift.config

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"java.lang.Exception" : "Exception",
55
"java.lang.Object" : "JavaObject",
66
"java.lang.RuntimeException" : "RuntimeException",
7-
"java.lang.Throwable" : "Throwable",
8-
"java.util.Enumeration" : "Enumeration"
7+
"java.lang.Throwable" : "Throwable"
98
}
109
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"classes" : {
3+
"java.util.Collection" : "JavaCollection",
4+
"java.util.Enumeration" : "Enumeration",
5+
"java.util.Iterator" : "JavaIterator",
6+
"java.util.List" : "List",
7+
"java.util.ListIterator" : "ListIterator",
8+
"java.util.Queue" : "Queue",
9+
"java.util.RandomAccess" : "RandomAccess",
10+
"java.util.Set" : "JavaSet",
11+
"java.util.ArrayDeque" : "ArrayDeque",
12+
"java.util.ArrayList" : "ArrayList",
13+
"java.util.BitSet" : "BitSet",
14+
"java.util.Dictionary" : "JavaDictionary",
15+
"java.util.HashMap" : "HashMap",
16+
"java.util.HashSet" : "HashSet",
17+
"java.util.PriorityQueue" : "PriorityQueue",
18+
"java.util.Stack" : "Stack",
19+
"java.util.TreeMap" : "TreeMap",
20+
"java.util.TreeSet" : "TreeSet"
21+
}
22+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
import JavaKit
15+
16+
extension JavaIterator: IteratorProtocol {
17+
public typealias Element = E
18+
19+
public func next() -> E? {
20+
if hasNext() {
21+
let nextResult: JavaObject? = next()
22+
return nextResult.map { $0.as(E.self)! }
23+
}
24+
25+
return nil
26+
}
27+
}

0 commit comments

Comments
 (0)