diff --git a/Benchmarks/Package.swift b/Benchmarks/Package.swift index 9df7b27b3..62c40289d 100644 --- a/Benchmarks/Package.swift +++ b/Benchmarks/Package.swift @@ -1,91 +1,7 @@ // swift-tools-version: 6.0 -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "benchmarks", platforms: [ @@ -99,15 +15,13 @@ let package = Package( .executableTarget( name: "JavaApiCallBenchmarks", dependencies: [ - .product(name: "CSwiftJavaJNI", package: "swift-java"), .product(name: "SwiftJava", package: "swift-java"), .product(name: "JavaNet", package: "swift-java"), .product(name: "Benchmark", package: "package-benchmark"), ], path: "Benchmarks/JavaApiCallBenchmarks", swiftSettings: [ - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), - .swiftLanguageMode(.v5), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "BenchmarkPlugin", package: "package-benchmark") diff --git a/Package.swift b/Package.swift index 1702da7a0..e6de92271 100644 --- a/Package.swift +++ b/Package.swift @@ -10,12 +10,8 @@ import PackageDescription // Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. func findJavaHome() -> String { if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - print("JAVA_HOME = \(home)") return home } - if let opts = ProcessInfo.processInfo.environment["SWIFT_JAVA_JAVA_OPTS"] { - print("SWIFT_JAVA_JAVA_OPTS = \(opts)") - } // This is a workaround for envs (some IDEs) which have trouble with // picking up env variables during the build process @@ -24,13 +20,10 @@ func findJavaHome() -> String { if let lastChar = home.last, lastChar.isNewline { return String(home.dropLast()) } - return home } - if let home = getJavaHomeFromLibexecJavaHome(), - !home.isEmpty - { + if let home = getJavaHomeFromLibexecJavaHome(), !home.isEmpty { return home } @@ -45,26 +38,22 @@ func findJavaHome() -> String { if ProcessInfo.processInfo.environment["SPI_PROCESSING"] == "1" && ProcessInfo.processInfo.environment["SPI_BUILD"] == nil { - // Just ignore that we're missing a JAVA_HOME when building in Swift Package Index during general processing where no Java is needed. However, do _not_ suppress the error during SPI's compatibility build stage where Java is required. return "" } fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") } -/// On MacOS we can use the java_home tool as a fallback if we can't find JAVA_HOME environment variable. func getJavaHomeFromLibexecJavaHome() -> String? { let task = Process() task.executableURL = URL(fileURLWithPath: "/usr/libexec/java_home") - // Check if the executable exists before trying to run it guard FileManager.default.fileExists(atPath: task.executableURL!.path) else { - print("/usr/libexec/java_home does not exist") return nil } let pipe = Pipe() task.standardOutput = pipe - task.standardError = pipe // Redirect standard error to the same pipe for simplicity + task.standardError = pipe do { try task.run() @@ -76,15 +65,9 @@ func getJavaHomeFromLibexecJavaHome() -> String? { if task.terminationStatus == 0 { return output } else { - print("java_home terminated with status: \(task.terminationStatus)") - // Optionally, log the error output for debugging - if let errorOutput = String(data: pipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) { - print("Error output: \(errorOutput)") - } return nil } } catch { - print("Error running java_home: \(error)") return nil } } @@ -142,6 +125,14 @@ let javaPlatformIncludePath = "\(javaIncludePath)/darwin" let javaPlatformIncludePath = "\(javaIncludePath)/win32" #endif +let swiftJavaJNICoreDep: Package.Dependency +if let localPath = ProcessInfo.processInfo.environment["SWIFT_JAVA_JNI_CORE_PATH"] { + swiftJavaJNICoreDep = .package(path: localPath) +} else { + print("Using upstream 'swift-java-jni-core', to override use the SWIFT_JAVA_JNI_CORE_PATH env variable") + swiftJavaJNICoreDep = .package(url: "https://github.com/swiftlang/swift-java-jni-core", branch: "main") +} + let package = Package( name: "swift-java", platforms: [ @@ -155,11 +146,6 @@ let package = Package( targets: ["SwiftJava", "SwiftJavaRuntimeSupport"] ), - .library( - name: "CSwiftJavaJNI", - targets: ["CSwiftJavaJNI"] - ), - .library( name: "SwiftJavaConfigurationShared", targets: ["SwiftJavaConfigurationShared"] @@ -195,11 +181,6 @@ let package = Package( targets: ["JavaLangReflect"] ), - .library( - name: "JavaTypes", - targets: ["JavaTypes"] - ), - .executable( name: "swift-java", targets: ["SwiftJavaTool"] @@ -258,6 +239,7 @@ let package = Package( .trait(name: "AndroidCoreLibraryDesugaring") ], dependencies: [ + swiftJavaJNICoreDep, .package(url: "https://github.com/swiftlang/swift-syntax", from: "602.0.0"), .package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"), .package(url: "https://github.com/apple/swift-system", from: "1.4.0"), @@ -288,19 +270,11 @@ let package = Package( .swiftLanguageMode(.v5) ] ), - .target( - name: "JavaTypes", - swiftSettings: [ - .swiftLanguageMode(.v5) - ] - ), - .target( name: "SwiftJava", dependencies: [ - "CSwiftJavaJNI", + .product(name: "SwiftJavaJNICore", package: "swift-java-jni-core"), "SwiftJavaMacros", - "JavaTypes", ], exclude: ["swift-java.config"], swiftSettings: [ @@ -322,15 +296,10 @@ let package = Package( .when(platforms: [.linux, .macOS]) ), .unsafeFlags( - [ - "-L\(javaHome)/lib" - ], + ["-L\(javaHome)/lib"], .when(platforms: [.windows]) ), - .linkedLibrary( - "jvm", - .when(platforms: [.linux, .macOS, .windows]) - ), + .linkedLibrary("jvm", .when(platforms: [.linux, .macOS, .windows])), ] ), .target( @@ -340,7 +309,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( @@ -350,7 +319,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( @@ -360,7 +329,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( @@ -370,7 +339,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( @@ -380,7 +349,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( @@ -390,7 +359,7 @@ let package = Package( exclude: ["swift-java.config"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -412,18 +381,17 @@ let package = Package( dependencies: [], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), .target( name: "SwiftJavaRuntimeSupport", dependencies: [ - "CSwiftJavaJNI", - "SwiftJava", + "SwiftJava" ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -431,21 +399,7 @@ let package = Package( name: "SwiftRuntimeFunctions", swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), - ] - ), - - .target( - name: "CSwiftJavaJNI", - swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags( - ["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], - .when(platforms: [.macOS, .linux, .windows]) - ), - ], - linkerSettings: [ - .linkedLibrary("log", .when(platforms: [.android])) + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -469,15 +423,14 @@ let package = Package( "JavaUtilJar", "JavaLangReflect", "JavaNet", - "JavaTypes", "SwiftJavaShared", "SwiftJavaConfigurationShared", .product(name: "Subprocess", package: "swift-subprocess"), ], swiftSettings: [ .swiftLanguageMode(.v5), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), .enableUpcomingFeature("BareSlashRegexLiterals"), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), ] ), @@ -499,7 +452,7 @@ let package = Package( ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), .enableUpcomingFeature("BareSlashRegexLiterals"), .define( "SYSTEM_PACKAGE_DARWIN", @@ -518,13 +471,13 @@ let package = Package( .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "OrderedCollections", package: "swift-collections"), - "JavaTypes", + .product(name: "SwiftJavaJNICore", package: "swift-java-jni-core"), "SwiftJavaShared", "SwiftJavaConfigurationShared", ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -544,17 +497,7 @@ let package = Package( ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), - ] - ), - - .testTarget( - name: "JavaTypesTests", - dependencies: [ - "JavaTypes" - ], - swiftSettings: [ - .swiftLanguageMode(.v5) + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -576,7 +519,7 @@ let package = Package( ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -585,7 +528,7 @@ let package = Package( dependencies: ["SwiftJavaConfigurationShared"], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), @@ -596,7 +539,7 @@ let package = Package( ], swiftSettings: [ .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])), ] ), ] diff --git a/Samples/JavaDependencySampleApp/Package.swift b/Samples/JavaDependencySampleApp/Package.swift index c328a6571..5e88fbf51 100644 --- a/Samples/JavaDependencySampleApp/Package.swift +++ b/Samples/JavaDependencySampleApp/Package.swift @@ -2,92 +2,8 @@ // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "JavaDependencySampleApp", platforms: [ @@ -114,14 +30,12 @@ let package = Package( dependencies: [ .product(name: "SwiftJava", package: "swift-java"), .product(name: "SwiftJavaConfigurationShared", package: "swift-java"), - .product(name: "CSwiftJavaJNI", package: "swift-java"), .product(name: "JavaUtilFunction", package: "swift-java"), "JavaCommonsCSV", ], exclude: ["swift-java.config"], swiftSettings: [ - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), - .swiftLanguageMode(.v5), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "SwiftJavaPlugin", package: "swift-java") @@ -139,8 +53,7 @@ let package = Package( ], exclude: ["swift-java.config"], swiftSettings: [ - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), - .swiftLanguageMode(.v5), + .swiftLanguageMode(.v5) ], plugins: [ // .plugin(name: "SwiftJavaBootstrapJavaPlugin", package: "swift-java"), diff --git a/Samples/JavaKitSampleApp/Package.swift b/Samples/JavaKitSampleApp/Package.swift index 5b3b749c1..b01a77bb3 100644 --- a/Samples/JavaKitSampleApp/Package.swift +++ b/Samples/JavaKitSampleApp/Package.swift @@ -2,91 +2,8 @@ // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#elseif os(Windows) -let javaPlatformIncludePath = "\(javaIncludePath)/win32)" -#endif - let package = Package( name: "JavaKitSampleApp", platforms: [ @@ -117,8 +34,7 @@ let package = Package( .product(name: "JavaUtilJar", package: "swift-java"), ], swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "JavaCompilerPlugin", package: "swift-java"), @@ -132,8 +48,7 @@ let package = Package( "JavaKitExample" ], swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .swiftLanguageMode(.v5) ] ), ] diff --git a/Samples/JavaSieve/Package.swift b/Samples/JavaSieve/Package.swift index 2cb69c6c5..81545a8bf 100644 --- a/Samples/JavaSieve/Package.swift +++ b/Samples/JavaSieve/Package.swift @@ -1,92 +1,8 @@ // swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "JavaSieve", platforms: [ @@ -106,9 +22,6 @@ let package = Package( .product(name: "JavaUtilJar", package: "swift-java"), ], exclude: ["swift-java.config"], - swiftSettings: [ - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]) - ], plugins: [ .plugin(name: "SwiftJavaPlugin", package: "swift-java") ] @@ -124,9 +37,6 @@ let package = Package( .product(name: "JavaUtil", package: "swift-java"), ], exclude: ["swift-java.config"], - swiftSettings: [ - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]) - ], plugins: [ .plugin(name: "SwiftJavaPlugin", package: "swift-java") ] diff --git a/Samples/SwiftAndJavaJarSampleLib/Package.swift b/Samples/SwiftAndJavaJarSampleLib/Package.swift index 88a0dd590..68bc6354e 100644 --- a/Samples/SwiftAndJavaJarSampleLib/Package.swift +++ b/Samples/SwiftAndJavaJarSampleLib/Package.swift @@ -2,92 +2,8 @@ // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "SwiftAndJavaJarSampleLib", platforms: [ @@ -112,15 +28,13 @@ let package = Package( name: "MySwiftLibrary", dependencies: [ .product(name: "SwiftJava", package: "swift-java"), - .product(name: "CSwiftJavaJNI", package: "swift-java"), .product(name: "SwiftRuntimeFunctions", package: "swift-java"), ], exclude: [ "swift-java.config" ], swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "JExtractSwiftPlugin", package: "swift-java") diff --git a/Samples/SwiftJavaExtractFFMSampleApp/Package.swift b/Samples/SwiftJavaExtractFFMSampleApp/Package.swift index 6a86ffbb9..e8e4c8e29 100644 --- a/Samples/SwiftJavaExtractFFMSampleApp/Package.swift +++ b/Samples/SwiftJavaExtractFFMSampleApp/Package.swift @@ -2,92 +2,8 @@ // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "SwiftJavaExtractFFMSampleApp", platforms: [ @@ -112,15 +28,13 @@ let package = Package( name: "MySwiftLibrary", dependencies: [ .product(name: "SwiftJava", package: "swift-java"), - .product(name: "CSwiftJavaJNI", package: "swift-java"), .product(name: "SwiftRuntimeFunctions", package: "swift-java"), ], exclude: [ "swift-java.config" ], swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "JExtractSwiftPlugin", package: "swift-java") diff --git a/Samples/SwiftJavaExtractFFMSampleApp/Sources/MySwiftLibrary/jni/JNIImplementations.swift b/Samples/SwiftJavaExtractFFMSampleApp/Sources/MySwiftLibrary/jni/JNIImplementations.swift index 785887f86..245616e6d 100644 --- a/Samples/SwiftJavaExtractFFMSampleApp/Sources/MySwiftLibrary/jni/JNIImplementations.swift +++ b/Samples/SwiftJavaExtractFFMSampleApp/Sources/MySwiftLibrary/jni/JNIImplementations.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore @JavaClass("com.example.swift.HelloJava2Swift") open class HelloJava2Swift: JavaObject { diff --git a/Samples/SwiftJavaExtractJNISampleApp/Package.swift b/Samples/SwiftJavaExtractJNISampleApp/Package.swift index c30326cd1..cf72cc50b 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/Package.swift +++ b/Samples/SwiftJavaExtractJNISampleApp/Package.swift @@ -2,92 +2,8 @@ // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport -import Foundation import PackageDescription -// Note: the JAVA_HOME environment variable must be set to point to where -// Java is installed, e.g., -// Library/Java/JavaVirtualMachines/openjdk-21.jdk/Contents/Home. -func findJavaHome() -> String { - if let home = ProcessInfo.processInfo.environment["JAVA_HOME"] { - return home - } - - // This is a workaround for envs (some IDEs) which have trouble with - // picking up env variables during the build process - let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home" - if let home = try? String(contentsOfFile: path, encoding: .utf8) { - if let lastChar = home.last, lastChar.isNewline { - return String(home.dropLast()) - } - - return home - } - - if let home = getJavaHomeFromSDKMAN() { - return home - } - - if let home = getJavaHomeFromPath() { - return home - } - - fatalError("Please set the JAVA_HOME environment variable to point to where Java is installed.") -} - -func getJavaHomeFromSDKMAN() -> String? { - let home = FileManager.default.homeDirectoryForCurrentUser - .appendingPathComponent(".sdkman/candidates/java/current") - - let javaBin = home.appendingPathComponent("bin/java").path - if FileManager.default.isExecutableFile(atPath: javaBin) { - return home.path - } - return nil -} - -func getJavaHomeFromPath() -> String? { - let task = Process() - task.executableURL = URL(fileURLWithPath: "/usr/bin/which") - task.arguments = ["java"] - - let pipe = Pipe() - task.standardOutput = pipe - - do { - try task.run() - task.waitUntilExit() - guard task.terminationStatus == 0 else { return nil } - - let data = pipe.fileHandleForReading.readDataToEndOfFile() - guard - let javaPath = String(data: data, encoding: .utf8)? - .trimmingCharacters(in: .whitespacesAndNewlines), - !javaPath.isEmpty - else { return nil } - - let resolved = URL(fileURLWithPath: javaPath).resolvingSymlinksInPath() - return - resolved - .deletingLastPathComponent() - .deletingLastPathComponent() - .path - } catch { - return nil - } -} -let javaHome = findJavaHome() - -let javaIncludePath = "\(javaHome)/include" -#if os(Linux) -let javaPlatformIncludePath = "\(javaIncludePath)/linux" -#elseif os(macOS) -let javaPlatformIncludePath = "\(javaIncludePath)/darwin" -#else -// TODO: Handle windows as well -#error("Currently only macOS and Linux platforms are supported, this may change in the future.") -#endif - let package = Package( name: "JExtractJNISampleApp", platforms: [ @@ -108,15 +24,13 @@ let package = Package( .target( name: "MySwiftLibrary", dependencies: [ - .product(name: "SwiftJava", package: "swift-java"), - .product(name: "CSwiftJavaJNI", package: "swift-java"), + .product(name: "SwiftJava", package: "swift-java") ], exclude: [ "swift-java.config" ], swiftSettings: [ - .swiftLanguageMode(.v5), - .unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]), + .swiftLanguageMode(.v5) ], plugins: [ .plugin(name: "JExtractSwiftPlugin", package: "swift-java") diff --git a/Sources/CSwiftJavaJNI/AndroidSupport.cpp b/Sources/CSwiftJavaJNI/AndroidSupport.cpp deleted file mode 100644 index a223530a1..000000000 --- a/Sources/CSwiftJavaJNI/AndroidSupport.cpp +++ /dev/null @@ -1,98 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2025 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 -// -//===----------------------------------------------------------------------===// - -#ifdef __ANDROID__ - -#include -#include -#include - -// these are not exported by the Android SDK - -extern "C" { - using JavaRuntime_GetDefaultJavaVMInitArgs_fn = jint (*)(void *vm_args); - using JavaRuntime_CreateJavaVM_fn = jint (*)(JavaVM **, JNIEnv **, void *); - using JavaRuntime_GetCreatedJavaVMs_fn = jint (*)(JavaVM **, jsize, jsize *); -} - -static JavaRuntime_GetDefaultJavaVMInitArgs_fn - JavaRuntime_GetDefaultJavaVMInitArgs; -static JavaRuntime_CreateJavaVM_fn JavaRuntime_CreateJavaVM; -static JavaRuntime_GetCreatedJavaVMs_fn JavaRuntime_GetCreatedJavaVMs; - -static void *JavaRuntime_dlhandle; - -__attribute__((constructor)) static void JavaRuntime_init(void) { - JavaRuntime_dlhandle = dlopen("libnativehelper.so", RTLD_NOW | RTLD_LOCAL); - if (JavaRuntime_dlhandle == nullptr) { - __android_log_print(ANDROID_LOG_FATAL, "JavaRuntime", - "failed to open libnativehelper.so: %s", dlerror()); - return; - } - - JavaRuntime_GetDefaultJavaVMInitArgs = - reinterpret_cast( - dlsym(JavaRuntime_dlhandle, "JNI_GetDefaultJavaVMInitArgs")); - if (JavaRuntime_GetDefaultJavaVMInitArgs == nullptr) - __android_log_print(ANDROID_LOG_FATAL, "JavaRuntime", - "JNI_GetDefaultJavaVMInitArgs not found: %s", - dlerror()); - - JavaRuntime_CreateJavaVM = reinterpret_cast( - dlsym(JavaRuntime_dlhandle, "JNI_CreateJavaVM")); - if (JavaRuntime_CreateJavaVM == nullptr) - __android_log_print(ANDROID_LOG_FATAL, "JavaRuntime", - "JNI_CreateJavaVM not found: %s", dlerror()); - - JavaRuntime_GetCreatedJavaVMs = - reinterpret_cast( - dlsym(JavaRuntime_dlhandle, "JNI_GetCreatedJavaVMs")); - if (JavaRuntime_GetCreatedJavaVMs == nullptr) - __android_log_print(ANDROID_LOG_FATAL, "JavaRuntime", - "JNI_GetCreatedJavaVMs not found: %s", dlerror()); -} - -__attribute__((destructor)) static void JavaRuntime_deinit(void) { - if (JavaRuntime_dlhandle) { - dlclose(JavaRuntime_dlhandle); - JavaRuntime_dlhandle = nullptr; - } - - JavaRuntime_GetDefaultJavaVMInitArgs = nullptr; - JavaRuntime_CreateJavaVM = nullptr; - JavaRuntime_GetCreatedJavaVMs = nullptr; -} - -jint JNI_GetDefaultJavaVMInitArgs(void *vm_args) { - if (JavaRuntime_GetDefaultJavaVMInitArgs == nullptr) - return JNI_ERR; - - return (*JavaRuntime_GetDefaultJavaVMInitArgs)(vm_args); -} - -jint JNI_CreateJavaVM(JavaVM **vm, JNIEnv **env, void *vm_args) { - if (JavaRuntime_CreateJavaVM == nullptr) - return JNI_ERR; - - return (*JavaRuntime_CreateJavaVM)(vm, env, vm_args); -} - -jint JNI_GetCreatedJavaVMs(JavaVM **vmBuf, jsize bufLen, jsize *nVMs) { - if (JavaRuntime_GetCreatedJavaVMs == nullptr) - return JNI_ERR; - - return (*JavaRuntime_GetCreatedJavaVMs)(vmBuf, bufLen, nVMs); -} - -#endif diff --git a/Sources/CSwiftJavaJNI/dummy.c b/Sources/CSwiftJavaJNI/dummy.c deleted file mode 100644 index 336008819..000000000 --- a/Sources/CSwiftJavaJNI/dummy.c +++ /dev/null @@ -1,15 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -// Dummy file so that SwiftPM produces an object file diff --git a/Sources/CSwiftJavaJNI/include/CSwiftJavaJNI.h b/Sources/CSwiftJavaJNI/include/CSwiftJavaJNI.h deleted file mode 100644 index fb5f71afd..000000000 --- a/Sources/CSwiftJavaJNI/include/CSwiftJavaJNI.h +++ /dev/null @@ -1,20 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -#ifndef CSwiftJavaJNI_h -#define CSwiftJavaJNI_h - -#include - -#endif /* CSwiftJavaJNI_h */ diff --git a/Sources/CSwiftJavaJNI/include/module.modulemap b/Sources/CSwiftJavaJNI/include/module.modulemap deleted file mode 100644 index 2be3eda91..000000000 --- a/Sources/CSwiftJavaJNI/include/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSwiftJavaJNI { - umbrella header "CSwiftJavaJNI.h" - export * -} diff --git a/Sources/JExtractSwiftLib/Common/TypeAnnotations.swift b/Sources/JExtractSwiftLib/Common/TypeAnnotations.swift index ff0d2dde3..b23281d33 100644 --- a/Sources/JExtractSwiftLib/Common/TypeAnnotations.swift +++ b/Sources/JExtractSwiftLib/Common/TypeAnnotations.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore /// Determine if the given type needs any extra annotations that should be included /// in Java sources when the corresponding Java type is rendered. diff --git a/Sources/JExtractSwiftLib/Convenience/JavaType+Extensions.swift b/Sources/JExtractSwiftLib/Convenience/JavaType+Extensions.swift index 757e068de..3711b2e35 100644 --- a/Sources/JExtractSwiftLib/Convenience/JavaType+Extensions.swift +++ b/Sources/JExtractSwiftLib/Convenience/JavaType+Extensions.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore extension JavaType { var jniTypeSignature: String { diff --git a/Sources/JExtractSwiftLib/Convenience/String+Extensions.swift b/Sources/JExtractSwiftLib/Convenience/String+Extensions.swift index f7d27a741..37494fb3a 100644 --- a/Sources/JExtractSwiftLib/Convenience/String+Extensions.swift +++ b/Sources/JExtractSwiftLib/Convenience/String+Extensions.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore extension String { diff --git a/Sources/JExtractSwiftLib/FFM/CDeclLowering/FFMSwift2JavaGenerator+FunctionLowering.swift b/Sources/JExtractSwiftLib/FFM/CDeclLowering/FFMSwift2JavaGenerator+FunctionLowering.swift index b2438dd33..047479802 100644 --- a/Sources/JExtractSwiftLib/FFM/CDeclLowering/FFMSwift2JavaGenerator+FunctionLowering.swift +++ b/Sources/JExtractSwiftLib/FFM/CDeclLowering/FFMSwift2JavaGenerator+FunctionLowering.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore import SwiftSyntax extension FFMSwift2JavaGenerator { diff --git a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+FoundationData.swift b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+FoundationData.swift index b3fa1b30b..0c96eaf7b 100644 --- a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+FoundationData.swift +++ b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+FoundationData.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftSyntax import SwiftSyntaxBuilder diff --git a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaBindingsPrinting.swift b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaBindingsPrinting.swift index 859db24c9..047ac3c0c 100644 --- a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaBindingsPrinting.swift +++ b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaBindingsPrinting.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore extension FFMSwift2JavaGenerator { package func printFunctionDowncallMethods( diff --git a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaTranslation.swift b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaTranslation.swift index 50024c751..1f22cb70a 100644 --- a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaTranslation.swift +++ b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator+JavaTranslation.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore extension FFMSwift2JavaGenerator { func translatedDecl( diff --git a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift index ffc317fee..e0bed7a01 100644 --- a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift +++ b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftSyntax import SwiftSyntaxBuilder diff --git a/Sources/JExtractSwiftLib/FFM/ForeignValueLayouts.swift b/Sources/JExtractSwiftLib/FFM/ForeignValueLayouts.swift index a06d7f25f..8d2b76bfa 100644 --- a/Sources/JExtractSwiftLib/FFM/ForeignValueLayouts.swift +++ b/Sources/JExtractSwiftLib/FFM/ForeignValueLayouts.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore /// Represents a value of a `java.lang.foreign.Self` that we want to render in generated Java code. /// diff --git a/Sources/JExtractSwiftLib/JNI/JNIJavaTypeTranslator.swift b/Sources/JExtractSwiftLib/JNI/JNIJavaTypeTranslator.swift index f4c4882c6..78bf945fc 100644 --- a/Sources/JExtractSwiftLib/JNI/JNIJavaTypeTranslator.swift +++ b/Sources/JExtractSwiftLib/JNI/JNIJavaTypeTranslator.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore enum JNIJavaTypeTranslator { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+InterfaceWrapperGeneration.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+InterfaceWrapperGeneration.swift index 5f9022806..252082d10 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+InterfaceWrapperGeneration.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+InterfaceWrapperGeneration.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftSyntax extension JNISwift2JavaGenerator { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift index 736e1ba3f..9f1464e1a 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift @@ -13,8 +13,8 @@ //===----------------------------------------------------------------------===// import Foundation -import JavaTypes import OrderedCollections +import SwiftJavaJNICore // MARK: Defaults diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift index 32765ca13..225a7fe76 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore extension JNISwift2JavaGenerator { var javaTranslator: JavaTranslation { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift index b9a28003b..a14fe6b4e 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore extension JNISwift2JavaGenerator { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift index 73a409245..0f2ab2995 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift @@ -12,7 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore +import SwiftSyntax #if canImport(FoundationEssentials) import FoundationEssentials @@ -737,7 +738,7 @@ extension JNISwift2JavaGenerator { // Generated by swift-java import SwiftJava - import CSwiftJavaJNI + import SwiftJavaJNICore import SwiftJavaRuntimeSupport """ diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift index 507e1863a..2acaab6e3 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import JavaTypes import SwiftJavaConfigurationShared +import SwiftJavaJNICore /// A table that where keys are Swift class names and the values are /// the fully qualified canoical names. diff --git a/Sources/JExtractSwiftLib/JavaParameter.swift b/Sources/JExtractSwiftLib/JavaParameter.swift index a0d92e91e..2419f0de8 100644 --- a/Sources/JExtractSwiftLib/JavaParameter.swift +++ b/Sources/JExtractSwiftLib/JavaParameter.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore /// Represent a parameter in Java code. struct JavaParameter { diff --git a/Sources/JExtractSwiftLib/JavaTypes/JavaType+JDK.swift b/Sources/JExtractSwiftLib/JavaTypes/JavaType+JDK.swift index 33164c1c5..5f52d87cd 100644 --- a/Sources/JExtractSwiftLib/JavaTypes/JavaType+JDK.swift +++ b/Sources/JExtractSwiftLib/JavaTypes/JavaType+JDK.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore extension JavaType { /// The description of the type java.lang.foreign.MemorySegment. diff --git a/Sources/JExtractSwiftLib/JavaTypes/JavaType+SwiftKit.swift b/Sources/JExtractSwiftLib/JavaTypes/JavaType+SwiftKit.swift index 7914761e2..0f03e7e63 100644 --- a/Sources/JExtractSwiftLib/JavaTypes/JavaType+SwiftKit.swift +++ b/Sources/JExtractSwiftLib/JavaTypes/JavaType+SwiftKit.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import JavaTypes +import SwiftJavaJNICore extension JavaType { diff --git a/Sources/JExtractSwiftLib/Swift2JavaTranslator.swift b/Sources/JExtractSwiftLib/Swift2JavaTranslator.swift index 36fb47587..b7efe7e21 100644 --- a/Sources/JExtractSwiftLib/Swift2JavaTranslator.swift +++ b/Sources/JExtractSwiftLib/Swift2JavaTranslator.swift @@ -13,9 +13,9 @@ //===----------------------------------------------------------------------===// import Foundation -import JavaTypes import SwiftBasicFormat import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftParser import SwiftSyntax diff --git a/Sources/JavaKitDependencyResolver/DependencyResolver.swift b/Sources/JavaKitDependencyResolver/DependencyResolver.swift index b2e27ff11..fc9bafc69 100644 --- a/Sources/JavaKitDependencyResolver/DependencyResolver.swift +++ b/Sources/JavaKitDependencyResolver/DependencyResolver.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore @JavaInterface("org.swift.jni.dependencies.DependencyResolver") public struct DependencyResolver { diff --git a/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift b/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift index be77ac064..dc25c7f97 100644 --- a/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift +++ b/Sources/JavaStdlib/JavaIO/generated/BufferedInputStream.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.BufferedInputStream") open class BufferedInputStream: InputStream { diff --git a/Sources/JavaStdlib/JavaIO/generated/FileDescriptor.swift b/Sources/JavaStdlib/JavaIO/generated/FileDescriptor.swift index 17766b218..b19df7ec3 100644 --- a/Sources/JavaStdlib/JavaIO/generated/FileDescriptor.swift +++ b/Sources/JavaStdlib/JavaIO/generated/FileDescriptor.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.FileDescriptor") open class FileDescriptor: JavaObject { diff --git a/Sources/JavaStdlib/JavaIO/generated/FileReader.swift b/Sources/JavaStdlib/JavaIO/generated/FileReader.swift index 933faeb72..b8f57b2db 100644 --- a/Sources/JavaStdlib/JavaIO/generated/FileReader.swift +++ b/Sources/JavaStdlib/JavaIO/generated/FileReader.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.FileReader") open class FileReader: InputStreamReader { diff --git a/Sources/JavaStdlib/JavaIO/generated/InputStream.swift b/Sources/JavaStdlib/JavaIO/generated/InputStream.swift index 5566c011a..c4f13c94e 100644 --- a/Sources/JavaStdlib/JavaIO/generated/InputStream.swift +++ b/Sources/JavaStdlib/JavaIO/generated/InputStream.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.InputStream", implements: Closeable.self) open class InputStream: JavaObject { diff --git a/Sources/JavaStdlib/JavaIO/generated/InputStreamReader.swift b/Sources/JavaStdlib/JavaIO/generated/InputStreamReader.swift index 917144d6f..29dca736d 100644 --- a/Sources/JavaStdlib/JavaIO/generated/InputStreamReader.swift +++ b/Sources/JavaStdlib/JavaIO/generated/InputStreamReader.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.InputStreamReader") open class InputStreamReader: Reader { diff --git a/Sources/JavaStdlib/JavaIO/generated/Reader.swift b/Sources/JavaStdlib/JavaIO/generated/Reader.swift index a281de84f..8893a0c24 100644 --- a/Sources/JavaStdlib/JavaIO/generated/Reader.swift +++ b/Sources/JavaStdlib/JavaIO/generated/Reader.swift @@ -1,7 +1,7 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import JavaUtil import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.Reader", implements: Readable.self, Closeable.self) open class Reader: JavaObject { diff --git a/Sources/JavaStdlib/JavaIO/generated/StringReader.swift b/Sources/JavaStdlib/JavaIO/generated/StringReader.swift index 3abbad307..f8b6434a6 100644 --- a/Sources/JavaStdlib/JavaIO/generated/StringReader.swift +++ b/Sources/JavaStdlib/JavaIO/generated/StringReader.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaClass("java.io.StringReader") open class StringReader: Reader { diff --git a/Sources/JavaStdlib/JavaIO/generated/WatchService.swift b/Sources/JavaStdlib/JavaIO/generated/WatchService.swift index 915487bea..cf1d4d12a 100644 --- a/Sources/JavaStdlib/JavaIO/generated/WatchService.swift +++ b/Sources/JavaStdlib/JavaIO/generated/WatchService.swift @@ -1,6 +1,6 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI import SwiftJava +// Auto-generated by Java-to-Swift wrapper generator. +import SwiftJavaJNICore @JavaInterface("java.nio.file.WatchService", extends: Closeable.self) public struct WatchService { diff --git a/Sources/JavaStdlib/JavaLangReflect/TypeVariable+Extensions.swift b/Sources/JavaStdlib/JavaLangReflect/TypeVariable+Extensions.swift index cae39e27d..4926abcc5 100644 --- a/Sources/JavaStdlib/JavaLangReflect/TypeVariable+Extensions.swift +++ b/Sources/JavaStdlib/JavaLangReflect/TypeVariable+Extensions.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore // FIXME: all interfaces should ahve these https://github.com/swiftlang/swift-java/issues/430 extension TypeVariable { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/AccessibleObject.swift b/Sources/JavaStdlib/JavaLangReflect/generated/AccessibleObject.swift index 05f3dc760..30eebf20e 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/AccessibleObject.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/AccessibleObject.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.AccessibleObject") open class AccessibleObject: JavaObject { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/AnnotatedType.swift b/Sources/JavaStdlib/JavaLangReflect/generated/AnnotatedType.swift index d8144e63c..95407466b 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/AnnotatedType.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/AnnotatedType.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.AnnotatedType") public struct AnnotatedType { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Annotation.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Annotation.swift index cd17c3a1e..ad91c0d85 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Annotation.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Annotation.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.annotation.Annotation") public struct Annotation { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Constructor.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Constructor.swift index f0ef597bf..55881b40f 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Constructor.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Constructor.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Constructor") open class Constructor: Executable { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Executable.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Executable.swift index 289823aee..4f6e10106 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Executable.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Executable.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Executable", implements: GenericDeclaration.self) open class Executable: AccessibleObject { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Field.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Field.swift index 673718d43..4a04cfbb1 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Field.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Field.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Field") open class Field: AccessibleObject { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/GenericArrayType.swift b/Sources/JavaStdlib/JavaLangReflect/generated/GenericArrayType.swift index dddef99c6..a45825fd8 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/GenericArrayType.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/GenericArrayType.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.GenericArrayType", extends: Type.self) public struct GenericArrayType { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/GenericDeclaration.swift b/Sources/JavaStdlib/JavaLangReflect/generated/GenericDeclaration.swift index c14972ebc..311904740 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/GenericDeclaration.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/GenericDeclaration.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.GenericDeclaration") public struct GenericDeclaration { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Method.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Method.swift index 7eaa99160..dc3455c99 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Method.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Method.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Method") open class Method: Executable { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Parameter.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Parameter.swift index 9d47ca8ab..f472d766d 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Parameter.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Parameter.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Parameter") open class Parameter: JavaObject { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/ParameterizedType.swift b/Sources/JavaStdlib/JavaLangReflect/generated/ParameterizedType.swift index b7d3fb960..22b9f0a81 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/ParameterizedType.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/ParameterizedType.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.ParameterizedType", extends: Type.self) public struct ParameterizedType { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/Type.swift b/Sources/JavaStdlib/JavaLangReflect/generated/Type.swift index 72230a261..70460beea 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/Type.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/Type.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.Type") public struct Type { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/TypeVariable.swift b/Sources/JavaStdlib/JavaLangReflect/generated/TypeVariable.swift index ec3e7ad4f..76c21b7d0 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/TypeVariable.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/TypeVariable.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.TypeVariable", extends: Type.self) public struct TypeVariable: CustomStringConvertible { diff --git a/Sources/JavaStdlib/JavaLangReflect/generated/WildcardType.swift b/Sources/JavaStdlib/JavaLangReflect/generated/WildcardType.swift index ad46ef08b..a40fbba80 100644 --- a/Sources/JavaStdlib/JavaLangReflect/generated/WildcardType.swift +++ b/Sources/JavaStdlib/JavaLangReflect/generated/WildcardType.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.WildcardType", extends: Type.self) public struct WildcardType { diff --git a/Sources/JavaStdlib/JavaNet/URL+Extensions.swift b/Sources/JavaStdlib/JavaNet/URL+Extensions.swift index da1d1fe36..264ce4d5a 100644 --- a/Sources/JavaStdlib/JavaNet/URL+Extensions.swift +++ b/Sources/JavaStdlib/JavaNet/URL+Extensions.swift @@ -12,9 +12,9 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import Foundation import SwiftJava +import SwiftJavaJNICore public typealias SwiftJavaFoundationURL = Foundation.URL diff --git a/Sources/JavaStdlib/JavaNet/URLClassLoader+Workaround.swift b/Sources/JavaStdlib/JavaNet/URLClassLoader+Workaround.swift index 4c55f6af6..b7829aeb4 100644 --- a/Sources/JavaStdlib/JavaNet/URLClassLoader+Workaround.swift +++ b/Sources/JavaStdlib/JavaNet/URLClassLoader+Workaround.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore // FIXME: workaround until importing properly would make UCL inherit from CL https://github.com/swiftlang/swift-java/issues/423 extension URLClassLoader /* workaround for missing inherits from ClassLoader */ { diff --git a/Sources/JavaStdlib/JavaNet/generated/URI.swift b/Sources/JavaStdlib/JavaNet/generated/URI.swift index 648c4ac55..b651890fc 100644 --- a/Sources/JavaStdlib/JavaNet/generated/URI.swift +++ b/Sources/JavaStdlib/JavaNet/generated/URI.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.net.URI") open class URI: JavaObject { diff --git a/Sources/JavaStdlib/JavaNet/generated/URL.swift b/Sources/JavaStdlib/JavaNet/generated/URL.swift index 495ec0768..de08cdde2 100644 --- a/Sources/JavaStdlib/JavaNet/generated/URL.swift +++ b/Sources/JavaStdlib/JavaNet/generated/URL.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.net.URL") open class URL: JavaObject { diff --git a/Sources/JavaStdlib/JavaNet/generated/URLClassLoader.swift b/Sources/JavaStdlib/JavaNet/generated/URLClassLoader.swift index 47f4c4fd3..72ca596f2 100644 --- a/Sources/JavaStdlib/JavaNet/generated/URLClassLoader.swift +++ b/Sources/JavaStdlib/JavaNet/generated/URLClassLoader.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.net.URLClassLoader") open class URLClassLoader: JavaObject { diff --git a/Sources/JavaStdlib/JavaNet/generated/URLConnection.swift b/Sources/JavaStdlib/JavaNet/generated/URLConnection.swift index 33714b3df..0ff4283ad 100644 --- a/Sources/JavaStdlib/JavaNet/generated/URLConnection.swift +++ b/Sources/JavaStdlib/JavaNet/generated/URLConnection.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.net.URLConnection") public struct URLConnection { diff --git a/Sources/JavaStdlib/JavaUtil/generated/ArrayDeque.swift b/Sources/JavaStdlib/JavaUtil/generated/ArrayDeque.swift index 14a42df49..1a2f04242 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/ArrayDeque.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/ArrayDeque.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.ArrayDeque") open class ArrayDeque: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/ArrayList.swift b/Sources/JavaStdlib/JavaUtil/generated/ArrayList.swift index 769467133..04769f065 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/ArrayList.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/ArrayList.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.ArrayList", implements: List.self, RandomAccess.self) open class ArrayList: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift b/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift index 71fd27a72..be2d5ce06 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/BitSet.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.BitSet") open class BitSet: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/Enumeration.swift b/Sources/JavaStdlib/JavaUtil/generated/Enumeration.swift index e2a424099..4d19b0475 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/Enumeration.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/Enumeration.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.Enumeration") public struct Enumeration { diff --git a/Sources/JavaStdlib/JavaUtil/generated/HashMap.swift b/Sources/JavaStdlib/JavaUtil/generated/HashMap.swift index ace4090bc..c8df11680 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/HashMap.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/HashMap.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.HashMap") open class HashMap: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/HashSet.swift b/Sources/JavaStdlib/JavaUtil/generated/HashSet.swift index 30f451d54..849062277 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/HashSet.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/HashSet.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.HashSet", implements: JavaSet.self) open class HashSet: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/JavaDictionary.swift b/Sources/JavaStdlib/JavaUtil/generated/JavaDictionary.swift index 8ae665fc3..0a4ea4df7 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/JavaDictionary.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/JavaDictionary.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.Dictionary") open class JavaDictionary: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/LinkedList.swift b/Sources/JavaStdlib/JavaUtil/generated/LinkedList.swift index f29d68d39..9e2c5bfbd 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/LinkedList.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/LinkedList.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.LinkedList") public struct LinkedList { diff --git a/Sources/JavaStdlib/JavaUtil/generated/PriorityQueue.swift b/Sources/JavaStdlib/JavaUtil/generated/PriorityQueue.swift index cb101294a..39adb1049 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/PriorityQueue.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/PriorityQueue.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.PriorityQueue") open class PriorityQueue: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/Queue.swift b/Sources/JavaStdlib/JavaUtil/generated/Queue.swift index 73de8a31d..71ac0385a 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/Queue.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/Queue.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.Queue", extends: JavaCollection.self) public struct Queue { diff --git a/Sources/JavaStdlib/JavaUtil/generated/RandomAccess.swift b/Sources/JavaStdlib/JavaUtil/generated/RandomAccess.swift index 703ac70c3..e8d6f0b8c 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/RandomAccess.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/RandomAccess.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.RandomAccess") public struct RandomAccess { diff --git a/Sources/JavaStdlib/JavaUtil/generated/Stack.swift b/Sources/JavaStdlib/JavaUtil/generated/Stack.swift index edb59ec81..0fba16345 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/Stack.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/Stack.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.Stack") open class Stack: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/TreeMap.swift b/Sources/JavaStdlib/JavaUtil/generated/TreeMap.swift index 05113389a..a125b23d7 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/TreeMap.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/TreeMap.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.TreeMap") open class TreeMap: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtil/generated/TreeSet.swift b/Sources/JavaStdlib/JavaUtil/generated/TreeSet.swift index 672057779..1ce1a686a 100644 --- a/Sources/JavaStdlib/JavaUtil/generated/TreeSet.swift +++ b/Sources/JavaStdlib/JavaUtil/generated/TreeSet.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.TreeSet") open class TreeSet: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiConsumer.swift index 273e2301b..2c578d34f 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.BiConsumer") public struct JavaBiConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiFunction.swift index 7903a3729..3039e0dd6 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.BiFunction") public struct JavaBiFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiPredicate.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiPredicate.swift index b926fdb9e..e1741449f 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiPredicate.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBiPredicate.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.BiPredicate") public struct JavaBiPredicate { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBinaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBinaryOperator.swift index b911fdaf5..7ee22097e 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBinaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBinaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface( "java.util.function.BinaryOperator", diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBooleanSupplier.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBooleanSupplier.swift index 41a8351a4..fa495e93d 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBooleanSupplier.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaBooleanSupplier.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.BooleanSupplier") public struct JavaBooleanSupplier { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaConsumer.swift index 0e13b30fa..8c18e1998 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.Consumer") public struct JavaConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleBinaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleBinaryOperator.swift index a05d4fe01..a3805ee08 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleBinaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleBinaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleBinaryOperator") public struct JavaDoubleBinaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleConsumer.swift index 3582f545e..ed2a0c306 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleConsumer") public struct JavaDoubleConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleFunction.swift index 95c8ae96e..467f305f5 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleFunction") public struct JavaDoubleFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoublePredicate.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoublePredicate.swift index 628d32048..5d196d864 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoublePredicate.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoublePredicate.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoublePredicate") public struct JavaDoublePredicate { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleSupplier.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleSupplier.swift index 4abd42873..255aeeca5 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleSupplier.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleSupplier.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleSupplier") public struct JavaDoubleSupplier { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToIntFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToIntFunction.swift index a1183b758..1064065df 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToIntFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToIntFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleToIntFunction") public struct JavaDoubleToIntFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToLongFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToLongFunction.swift index da59036bd..dec8a02db 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToLongFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleToLongFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleToLongFunction") public struct JavaDoubleToLongFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleUnaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleUnaryOperator.swift index de4e7b013..d8bbef73d 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleUnaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaDoubleUnaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.DoubleUnaryOperator") public struct JavaDoubleUnaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaFunction.swift index c78984ff6..612266c46 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.Function") public struct JavaFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntBinaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntBinaryOperator.swift index feb6d9b42..c622e896e 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntBinaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntBinaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntBinaryOperator") public struct JavaIntBinaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntConsumer.swift index 072d36b12..5faf553b2 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntConsumer") public struct JavaIntConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntFunction.swift index afcb5e70f..2008c0f3c 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntFunction") public struct JavaIntFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntPredicate.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntPredicate.swift index bb425d912..e96c31c7f 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntPredicate.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntPredicate.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntPredicate") public struct JavaIntPredicate { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntSupplier.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntSupplier.swift index c7dce4f9b..78a3a4296 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntSupplier.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntSupplier.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntSupplier") public struct JavaIntSupplier { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToDoubleFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToDoubleFunction.swift index ffd369d5f..fa648fe73 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToDoubleFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToDoubleFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntToDoubleFunction") public struct JavaIntToDoubleFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToLongFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToLongFunction.swift index fa11fcbb0..089fa1f59 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToLongFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntToLongFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntToLongFunction") public struct JavaIntToLongFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntUnaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntUnaryOperator.swift index 716d93b0d..47cc8eb39 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntUnaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaIntUnaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.IntUnaryOperator") public struct JavaIntUnaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongBinaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongBinaryOperator.swift index 0ec7d8ee5..2fcf10d73 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongBinaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongBinaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongBinaryOperator") public struct JavaLongBinaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongConsumer.swift index 63cb4dff4..f0ff32770 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongConsumer") public struct JavaLongConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongFunction.swift index f77d7257b..0a472cf5a 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongFunction") public struct JavaLongFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongPredicate.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongPredicate.swift index e5948ae66..cba34278c 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongPredicate.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongPredicate.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongPredicate") public struct JavaLongPredicate { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongSupplier.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongSupplier.swift index 0aea4cc1c..3908f00c9 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongSupplier.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongSupplier.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongSupplier") public struct JavaLongSupplier { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToDoubleFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToDoubleFunction.swift index 8d147c79e..52b59e718 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToDoubleFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToDoubleFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongToDoubleFunction") public struct JavaLongToDoubleFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToIntFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToIntFunction.swift index eec2cdbc5..b59b78b26 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToIntFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongToIntFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongToIntFunction") public struct JavaLongToIntFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongUnaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongUnaryOperator.swift index 7c55c8986..cd1f9e092 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongUnaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaLongUnaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.LongUnaryOperator") public struct JavaLongUnaryOperator { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjDoubleConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjDoubleConsumer.swift index a6c79ec57..b78e0c13f 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjDoubleConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjDoubleConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ObjDoubleConsumer") public struct JavaObjDoubleConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjIntConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjIntConsumer.swift index a7513a37c..f540d7da3 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjIntConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjIntConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ObjIntConsumer") public struct JavaObjIntConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjLongConsumer.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjLongConsumer.swift index 55fc61460..fa0c741e8 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjLongConsumer.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaObjLongConsumer.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ObjLongConsumer") public struct JavaObjLongConsumer { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaPredicate.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaPredicate.swift index a3119adde..9a5bd7502 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaPredicate.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaPredicate.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.Predicate") public struct JavaPredicate { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaSupplier.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaSupplier.swift index 29c26603f..3ff916cc4 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaSupplier.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaSupplier.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.Supplier") public struct JavaSupplier { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleBiFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleBiFunction.swift index 7bcca2114..212bd1339 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleBiFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleBiFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToDoubleBiFunction") public struct JavaToDoubleBiFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleFunction.swift index 78d090574..aa972d88a 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToDoubleFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToDoubleFunction") public struct JavaToDoubleFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntBiFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntBiFunction.swift index d57db659c..de251dd2f 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntBiFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntBiFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToIntBiFunction") public struct JavaToIntBiFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntFunction.swift index 7f7976216..b64152b07 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToIntFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToIntFunction") public struct JavaToIntFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongBiFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongBiFunction.swift index 26edf8c6d..6082ce083 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongBiFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongBiFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToLongBiFunction") public struct JavaToLongBiFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongFunction.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongFunction.swift index dc5ce2508..4bdad57a5 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongFunction.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaToLongFunction.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface("java.util.function.ToLongFunction") public struct JavaToLongFunction { diff --git a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaUnaryOperator.swift b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaUnaryOperator.swift index bd20f6504..9db34cbc8 100644 --- a/Sources/JavaStdlib/JavaUtilFunction/generated/JavaUnaryOperator.swift +++ b/Sources/JavaStdlib/JavaUtilFunction/generated/JavaUnaryOperator.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaInterface( "java.util.function.UnaryOperator", diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/Attributes.swift b/Sources/JavaStdlib/JavaUtilJar/generated/Attributes.swift index 4925218df..4c3bdbb73 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/Attributes.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/Attributes.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.Attributes") open class Attributes: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/JarEntry.swift b/Sources/JavaStdlib/JavaUtilJar/generated/JarEntry.swift index 7ae497491..39c590d2e 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/JarEntry.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/JarEntry.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.JarEntry") open class JarEntry: ZipEntry { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/JarFile.swift b/Sources/JavaStdlib/JavaUtilJar/generated/JarFile.swift index 0971ccf15..6e111818a 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/JarFile.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/JarFile.swift @@ -1,7 +1,7 @@ -import CSwiftJavaJNI import JavaUtil // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.JarFile") open class JarFile: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift b/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift index c2cb6c587..94af73f01 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/JarInputStream.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.JarInputStream") open class JarInputStream: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/JarOutputStream.swift b/Sources/JavaStdlib/JavaUtilJar/generated/JarOutputStream.swift index ba2adf63e..ff13a7302 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/JarOutputStream.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/JarOutputStream.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.JarOutputStream") open class JarOutputStream: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/Manifest.swift b/Sources/JavaStdlib/JavaUtilJar/generated/Manifest.swift index 1619c0c26..271fd7cd3 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/Manifest.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/Manifest.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.jar.Manifest") open class Manifest: JavaObject { diff --git a/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift b/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift index 2cede4aa1..e7a80eaf6 100644 --- a/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift +++ b/Sources/JavaStdlib/JavaUtilJar/generated/ZipEntry.swift @@ -1,6 +1,6 @@ -import CSwiftJavaJNI // Auto-generated by Java-to-Swift wrapper generator. import SwiftJava +import SwiftJavaJNICore @JavaClass("java.util.zip.ZipEntry") open class ZipEntry: JavaObject { diff --git a/Sources/JavaTypes/JavaAnnotation.swift b/Sources/JavaTypes/JavaAnnotation.swift deleted file mode 100644 index 233af732f..000000000 --- a/Sources/JavaTypes/JavaAnnotation.swift +++ /dev/null @@ -1,47 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// Describes a Java annotation (e.g. `@Deprecated` or `@Unsigned`) -public struct JavaAnnotation: Equatable, Hashable { - public let type: JavaType - public let arguments: [String] - - public init(className name: some StringProtocol, arguments: [String] = []) { - type = JavaType(className: name) - self.arguments = arguments - } - - public func render() -> String { - guard let className = type.className else { - fatalError("Java annotation must have a className") - } - - var res = "@\(className)" - guard !arguments.isEmpty else { - return res - } - - res += "(" - res += arguments.joined(separator: ",") - res += ")" - return res - } - -} - -extension JavaAnnotation { - public static var unsigned: JavaAnnotation { - JavaAnnotation(className: "Unsigned") - } -} diff --git a/Sources/JavaTypes/JavaDemanglingError.swift b/Sources/JavaTypes/JavaDemanglingError.swift deleted file mode 100644 index 445957d40..000000000 --- a/Sources/JavaTypes/JavaDemanglingError.swift +++ /dev/null @@ -1,22 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// Describes an error that can occur when demangling a Java name. -enum JavaDemanglingError: Error { - /// This does not match the form of a Java mangled type name. - case invalidMangledName(String) - - /// Extra text after the mangled name. - case extraText(String) -} diff --git a/Sources/JavaTypes/JavaExceptionType.swift b/Sources/JavaTypes/JavaExceptionType.swift deleted file mode 100644 index 9bfc1a9fb..000000000 --- a/Sources/JavaTypes/JavaExceptionType.swift +++ /dev/null @@ -1,30 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// Describes a Java exception class (e.g. `SwiftIntegerOverflowException`) -public struct JavaExceptionType: Equatable, Hashable { - public let type: JavaType - public let message: String? - - public init(className name: some StringProtocol, message: String? = nil) { - self.type = JavaType(className: name) - self.message = message - } -} - -extension JavaExceptionType { - public static var integerOverflow: JavaExceptionType { - JavaExceptionType(className: "org.swift.swiftkit.core.SwiftIntegerOverflowException") - } -} diff --git a/Sources/JavaTypes/JavaType+JNI.swift b/Sources/JavaTypes/JavaType+JNI.swift deleted file mode 100644 index b9b00ccb8..000000000 --- a/Sources/JavaTypes/JavaType+JNI.swift +++ /dev/null @@ -1,60 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaType { - /// Map this Java type to the appropriate JNI type name. - package var jniTypeName: String { - switch self { - case .boolean: "jboolean" - case .float: "jfloat" - case .double: "jdouble" - case .byte: "jbyte" - case .char: "jchar" - case .short: "jshort" - case .int: "jint" - case .long: "jlong" - case .void: "void" - case .array(.boolean): "jbooleanArray?" - case .array(.byte): "jbyteArray?" - case .array(.char): "jcharArray?" - case .array(.short): "jshortArray?" - case .array(.int): "jintArray?" - case .array(.long): "jlongArray?" - case .array(.float): "jfloatArray?" - case .array(.double): "jdoubleArray?" - case .array: "jobjectArray?" - case .class(package: "java.lang", name: "String", _): "jstring?" - case .class(package: "java.lang", name: "Class", _): "jclass?" - case .class(package: "java.lang", name: "Throwable", _): "jthrowable?" - case .class: "jobject?" - } - } - - /// Map this Java type to the appropriate JNI field name within the 'jvalue' - /// union. - public var jniFieldName: String { - switch self { - case .boolean: "z" - case .byte: "b" - case .char: "c" - case .short: "s" - case .int: "i" - case .long: "j" - case .float: "f" - case .double: "d" - case .class, .array: "l" - case .void: fatalError("There is no field name for 'void'") - } - } -} diff --git a/Sources/JavaTypes/JavaType+JavaSource.swift b/Sources/JavaTypes/JavaType+JavaSource.swift deleted file mode 100644 index 96f72be71..000000000 --- a/Sources/JavaTypes/JavaType+JavaSource.swift +++ /dev/null @@ -1,90 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaType { - /// Form a Java type based on the name that is produced by - /// java.lang.Class.getName(). This can be primitive types like "int", - /// class types like "java.lang.String", or arrays thereof. - public init(javaTypeName: String) throws { - switch javaTypeName { - case "boolean": self = .boolean - case "byte": self = .byte - case "char": self = .char - case "short": self = .short - case "int": self = .int - case "long": self = .long - case "float": self = .float - case "double": self = .double - case "void": self = .void - - case let name where name.starts(with: "["): - self = try JavaType(mangledName: name) - - case let className: - self = JavaType(className: className) - } - } -} - -extension JavaType: CustomStringConvertible { - /// Description of the Java type as it would appear in Java source. - public var description: String { - switch self { - case .boolean: "boolean" - case .byte: "byte" - case .char: "char" - case .short: "short" - case .int: "int" - case .long: "long" - case .float: "float" - case .double: "double" - case .void: "void" - case .array(let elementType): "\(elementType.description)[]" - case .class(let package, let name, let typeParameters): - if let package { - if !typeParameters.isEmpty { - "\(package).\(name)<\(typeParameters.map(\.description).joined(separator: ", "))>" - } else { - "\(package).\(name)" - } - } else { - name - } - } - } - - /// Returns the class name if this java type was a class, - /// and nil otherwise. - public var className: String? { - switch self { - case .class(_, let name, _): - return name - default: - return nil - } - } - - /// Returns the fully qualified class name if this java type was a class, - /// and nil otherwise. - public var fullyQualifiedClassName: String? { - switch self { - case .class(.some(let package), let name, _): - return "\(package).\(name)" - case .class(nil, let name, _): - return name - default: - return nil - } - } -} diff --git a/Sources/JavaTypes/JavaType+SwiftNames.swift b/Sources/JavaTypes/JavaType+SwiftNames.swift deleted file mode 100644 index 04159bd3a..000000000 --- a/Sources/JavaTypes/JavaType+SwiftNames.swift +++ /dev/null @@ -1,116 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// The type of a resolver function that turns a canonical Java class name into -/// the corresponding Swift type name. If there is no such Swift type, the -/// resolver can throw an error to indicate the problem. -public typealias JavaToSwiftClassNameResolver = (String) throws -> String - -extension JavaType { - /// Whether this Java type needs to be represented by a Swift optional. - public func isSwiftOptional(stringIsValueType: Bool) -> Bool { - switch self { - case .boolean, .byte, .char, .short, .int, .long, .float, .double, .void, - .array: - return false - - case .class(package: "java.lang", name: "String", _): - return !stringIsValueType - - case .class: - return true - } - } - - public var isSwiftClosure: Bool { - switch self { - case .boolean, .byte, .char, .short, .int, .long, .float, .double, .void, - .array: - return false - case .class(package: "java.lang", name: "Runnable", _): - return true - case .class: - return false - } - } - - public var isVoid: Bool { - if case .void = self { - return true - } - return false - } - - public var isString: Bool { - switch self { - case .boolean, .byte, .char, .short, .int, .long, .float, .double, .void, - .array: - return false - case .class(package: "java.lang", name: "String", _): - return true - case .class: - return false - } - } - - /// Produce the Swift type name for this Java type. - public func swiftTypeName(resolver: JavaToSwiftClassNameResolver) rethrows -> String { - switch self { - case .boolean: return "Bool" - case .byte: return "Int8" - case .char: return "UInt16" - case .short: return "Int16" - case .int: return "Int32" - case .long: return "Int64" - case .float: return "Float" - case .double: return "Double" - case .void: return "Void" - case .array(let elementType): - let elementTypeName = try elementType.swiftTypeName(resolver: resolver) - let elementIsOptional = elementType.isSwiftOptional(stringIsValueType: true) - return "[\(elementTypeName)\(elementIsOptional ? "?" : "")]" - - case .class: return try resolver(description) - } - } - -} - -/// Determines how type conversion should deal with Swift's unsigned numeric types. -/// -/// When `ignoreSign` is used, unsigned Swift types are imported directly as their corresponding bit-width types, -/// which may yield surprising values when an unsigned Swift value is interpreted as a signed Java type: -/// - `UInt8` is imported as `byte` -/// - `UInt16` is imported as `char` (this is always correct, since `char` is unsigned in Java) -/// - `UInt32` is imported as `int` -/// - `UInt64` is imported as `long` -/// -/// When `wrapUnsignedGuava` is used, unsigned Swift types are imported as safe "wrapper" types from the popular Guava -/// library on the Java side. SwiftJava does not include these types, so you would have to make sure your project depends -/// on Guava for such generated code to be able to compile. -/// -/// These make the Unsigned nature of the types explicit in Java, however they come at a cost of allocating the wrapper -/// object, and indirection when accessing the underlying numeric value. These are often useful as a signal to watch out -/// when dealing with a specific API, however in high performance use-cases, one may want to choose using the primitive -/// values directly, and interact with them using {@code UnsignedIntegers} SwiftKit helper classes on the Java side. -/// -/// The type mappings in this mode are as follows: -/// - `UInt8` is imported as `com.google.common.primitives.UnsignedInteger` -/// - `UInt16` is imported as `char` (this is always correct, since `char` is unsigned in Java) -/// - `UInt32` is imported as `com.google.common.primitives.UnsignedInteger` -/// - `UInt64` is imported as `com.google.common.primitives.UnsignedLong` -public enum UnsignedNumericsMode { - case ignoreSign - case wrapUnsignedGuava -} diff --git a/Sources/JavaTypes/JavaType.swift b/Sources/JavaTypes/JavaType.swift deleted file mode 100644 index 0e8023559..000000000 --- a/Sources/JavaTypes/JavaType.swift +++ /dev/null @@ -1,88 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// Describes the Java type system. -/// -/// Some types may need to be annotated when in parameter position, -public enum JavaType: Equatable, Hashable { - case boolean - case byte(parameterAnnotations: [JavaAnnotation]) - case char(parameterAnnotations: [JavaAnnotation]) - case short(parameterAnnotations: [JavaAnnotation]) - case int(parameterAnnotations: [JavaAnnotation]) - case long(parameterAnnotations: [JavaAnnotation]) - case float - case double - case void - - /// A Java class separated into its package (e.g., "java.lang") and class name - /// (e.g., "Object") - case `class`(package: String?, name: String, typeParameters: [JavaType] = []) - - /// A Java array. - indirect case array(JavaType) - - public static var byte: JavaType { .byte(parameterAnnotations: []) } - public static var char: JavaType { .char(parameterAnnotations: []) } - public static var short: JavaType { .short(parameterAnnotations: []) } - public static var int: JavaType { .int(parameterAnnotations: []) } - public static var long: JavaType { .long(parameterAnnotations: []) } - - /// Given a class name such as "java.lang.Object", split it into - /// its package and class name to form a class instance. - public init(className name: some StringProtocol) { - if let lastDot = name.lastIndex(of: ".") { - self = .class( - package: String(name[.. JavaType { - guard let firstChar = string.first else { - throw JavaDemanglingError.invalidMangledName(String(string)) - } - - switch firstChar { - case "Z": - string = string.dropFirst() - return .boolean - case "B": - string = string.dropFirst() - return .byte - case "C": - string = string.dropFirst() - return .char - case "D": - string = string.dropFirst() - return .double - case "F": - string = string.dropFirst() - return .float - case "I": - string = string.dropFirst() - return .int - case "J": - string = string.dropFirst() - return .long - case "S": - string = string.dropFirst() - return .short - case "V": - string = string.dropFirst() - return .void - case "[": - // Count the brackets to determine array depth. - var arrayDepth = 1 - string = string.dropFirst() - while string.first == "[" { - arrayDepth += 1 - string = string.dropFirst() - } - - var resultType = try demangleNextType(from: &string) - while arrayDepth > 0 { - resultType = .array(resultType) - arrayDepth -= 1 - } - - return resultType - - case "L": - guard let semicolonIndex = string.firstIndex(of: ";") else { - throw JavaDemanglingError.invalidMangledName(String(string)) - } - - // Extract the canonical Java class name with the slashes in it. - let afterStart = string.index(after: string.startIndex) - let canonicalNameWithSlashes = string[afterStart.. String { - String(self.map { $0 == "." ? "/" as Character : $0 }) - } - - /// Return the string after replacing all of the forward slashes ("/") with - /// periods ("."). - fileprivate func replacingSlashesWithPeriods() -> String { - String(self.map { $0 == "/" ? "." as Character : $0 }) - } - - /// Return the string after replacing all of the periods (".") with slashes ("$"). - fileprivate func replacingPeriodsWithDollars() -> String { - String(self.map { $0 == "." ? "$" as Character : $0 }) - } -} diff --git a/Sources/JavaTypes/MethodSignature.swift b/Sources/JavaTypes/MethodSignature.swift deleted file mode 100644 index 3e2b66139..000000000 --- a/Sources/JavaTypes/MethodSignature.swift +++ /dev/null @@ -1,27 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -/// Describes a Java method signature. -public struct MethodSignature: Equatable, Hashable { - /// The result type of this method. - public let resultType: JavaType - - /// The parameter types of this method. - public let parameterTypes: [JavaType] - - public init(resultType: JavaType, parameterTypes: [JavaType]) { - self.resultType = resultType - self.parameterTypes = parameterTypes - } -} diff --git a/Sources/SwiftJava/AnyJavaObject.swift b/Sources/SwiftJava/AnyJavaObject.swift index 002d4e3e8..714a82d40 100644 --- a/Sources/SwiftJava/AnyJavaObject.swift +++ b/Sources/SwiftJava/AnyJavaObject.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore /// Protocol that describes Swift types that are bridged to a Java class type. /// diff --git a/Sources/SwiftJava/BridgedValues/JavaValue+Array.swift b/Sources/SwiftJava/BridgedValues/JavaValue+Array.swift deleted file mode 100644 index e67db9e43..000000000 --- a/Sources/SwiftJava/BridgedValues/JavaValue+Array.swift +++ /dev/null @@ -1,162 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaTypes - -extension Array: JavaValue where Element: JavaValue { - public typealias JNIType = jobject? - - public static var jvalueKeyPath: WritableKeyPath { \.l } - - public static var javaType: JavaType { .array(Element.javaType) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - let jniCount = environment.interface.GetArrayLength(environment, value) - let count = Int(jniCount) - - guard let value else { - self = [] - return - } - - // Fast path for byte types: Since the memory layout of `jbyte` (Int8) and UInt8/Int8 is identical, - // we can rebind the memory and fill it directly without creating an intermediate array. - // This mirrors the optimization in `getJNIValue` in the reverse direction. - if Element.self == UInt8.self { - let result = [UInt8](unsafeUninitializedCapacity: count) { buffer, initializedCount in - buffer.withMemoryRebound(to: jbyte.self) { jbyteBuffer in - UInt8.jniGetArrayRegion(in: environment)( - environment, - value, - 0, - jniCount, - jbyteBuffer.baseAddress - ) - } - initializedCount = count - } - self = result as! Self - } else if Element.self == Int8.self { - let result = [Int8](unsafeUninitializedCapacity: Int(jniCount)) { buffer, initializedCount in - Int8.jniGetArrayRegion(in: environment)( - environment, - value, - 0, - jniCount, - buffer.baseAddress - ) - initializedCount = count - } - self = result as! Self - } else { - // Slow path for other types: create intermediate array and map - let jniArray = [Element.JNIType](unsafeUninitializedCapacity: count) { buffer, initializedCount in - Element.jniGetArrayRegion(in: environment)( - environment, - value, - 0, - jniCount, - buffer.baseAddress - ) - initializedCount = Int(jniCount) - } - self = jniArray.map { Element(fromJNI: $0, in: environment) } - } - } - - @inlinable - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { - let count = self.count - var jniArray = Element.jniNewArray(in: environment)(environment, Int32(count))! - - if Element.self == UInt8.self || Element.self == Int8.self { - // Fast path, Since the memory layout of `jbyte`` and those is the same, we rebind the memory - // rather than convert every element independently. This allows us to avoid another Swift array creation. - self.withUnsafeBytes { buffer in - buffer.getJNIValue(into: &jniArray, in: environment) - } - } else { - // Slow path, convert every element to the apropriate JNIType: - let jniElementBuffer: [Element.JNIType] = self.map { // meh, temporary array - $0.getJNIValue(in: environment) - } - Element.jniSetArrayRegion(in: environment)( - environment, - jniArray, - 0, - jsize(self.count), - jniElementBuffer - ) - } - - return jniArray - } - - public static func jniMethodCall(in environment: JNIEnvironment) -> JNIMethodCall { - environment.interface.CallObjectMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetObjectField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetObjectField - } - - public static func jniStaticMethodCall(in environment: JNIEnvironment) -> JNIStaticMethodCall { - environment.interface.CallStaticObjectMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticObjectField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticObjectField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - { environment, size in - // FIXME: We should have a bridged JavaArray that we can use here. - let arrayClass = environment.interface.FindClass(environment, "java/lang/Array") - return environment.interface.NewObjectArray(environment, size, arrayClass, nil) - } - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - { environment, array, start, length, outPointer in - let buffer = UnsafeMutableBufferPointer(start: outPointer, count: Int(length)) - for i in 0.. JNISetArrayRegion { - { environment, array, start, length, outPointer in - let buffer = UnsafeBufferPointer(start: outPointer, count: Int(length)) - for i in start.. { \.z } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { self ? 1 : 0 } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = value != 0 - } - - public static var javaType: JavaType { .boolean } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallBooleanMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetBooleanField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetBooleanField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticBooleanMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticBooleanField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticBooleanField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewBooleanArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetBooleanArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetBooleanArrayRegion - } - - public static var jniPlaceholderValue: jboolean { - 0 - } -} diff --git a/Sources/SwiftJava/BridgedValues/JavaValue+FloatingPoint.swift b/Sources/SwiftJava/BridgedValues/JavaValue+FloatingPoint.swift deleted file mode 100644 index 32f4bd0a7..000000000 --- a/Sources/SwiftJava/BridgedValues/JavaValue+FloatingPoint.swift +++ /dev/null @@ -1,119 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaTypes - -extension Float: JavaValue { - public typealias JNIType = jfloat - - public static var jvalueKeyPath: WritableKeyPath { \.f } - - public static var javaType: JavaType { .float } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallFloatMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetFloatField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetFloatField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticFloatMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticFloatField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticFloatField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewFloatArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetFloatArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetFloatArrayRegion - } - - public static var jniPlaceholderValue: jfloat { - 0 - } -} - -extension Double: JavaValue { - public typealias JNIType = jdouble - - public static var jvalueKeyPath: WritableKeyPath { \.d } - - public static var javaType: JavaType { .double } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallDoubleMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetDoubleField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetDoubleField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticDoubleMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticDoubleField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticDoubleField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewDoubleArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetDoubleArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetDoubleArrayRegion - } - - public static var jniPlaceholderValue: jdouble { - 0 - } -} diff --git a/Sources/SwiftJava/BridgedValues/JavaValue+Integers.swift b/Sources/SwiftJava/BridgedValues/JavaValue+Integers.swift deleted file mode 100644 index ed9bc6345..000000000 --- a/Sources/SwiftJava/BridgedValues/JavaValue+Integers.swift +++ /dev/null @@ -1,725 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaTypes - -extension UInt8: JavaValue { - public typealias JNIType = jbyte - - public static var jvalueKeyPath: WritableKeyPath { \.b } - - public static var javaType: JavaType { .byte } - - /// Retrieve the JNI value. - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(bitPattern: self) } - - /// Initialize from a JNI value. - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Self(bitPattern: value) - } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallByteMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetByteField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetByteField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticByteMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticByteField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticByteField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewByteArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetByteArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetByteArrayRegion - } - - public static var jniPlaceholderValue: jbyte { - 0 - } -} - -extension Int8: JavaValue { - public typealias JNIType = jbyte - - public static var jvalueKeyPath: WritableKeyPath { \.b } - - public static var javaType: JavaType { .byte } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallByteMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetByteField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetByteField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticByteMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticByteField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticByteField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewByteArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetByteArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetByteArrayRegion - } - - public static var jniPlaceholderValue: jbyte { - 0 - } -} - -extension UInt16: JavaValue { - public typealias JNIType = jchar - - public static var jvalueKeyPath: WritableKeyPath { \.c } - - public static var javaType: JavaType { .char } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallCharMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetCharField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetCharField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticCharMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticCharField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticCharField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewCharArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetCharArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetCharArrayRegion - } - - public static var jniPlaceholderValue: jchar { - 0 - } -} - -extension Int16: JavaValue { - public typealias JNIType = jshort - - public static var jvalueKeyPath: WritableKeyPath { \.s } - - public static var javaType: JavaType { .short } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallShortMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetShortField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetShortField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticShortMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticShortField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticShortField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewShortArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetShortArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetShortArrayRegion - } - - public static var jniPlaceholderValue: jshort { - 0 - } -} - -extension UInt32: JavaValue { - public typealias JNIType = jint - - public static var jvalueKeyPath: WritableKeyPath { \.i } - - public static var javaType: JavaType { .int } - - /// Retrieve the JNI value. - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(bitPattern: self) } - - /// Initialize from a JNI value. - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Self(bitPattern: value) - } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallIntMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetIntField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetIntField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticIntMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticIntField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticIntField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewIntArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetIntArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetIntArrayRegion - } - - public static var jniPlaceholderValue: jint { - 0 - } -} - -extension Int32: JavaValue { - public typealias JNIType = jint - - public static var jvalueKeyPath: WritableKeyPath { \.i } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Int32(value) - } - - public static var javaType: JavaType { .int } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallIntMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetIntField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetIntField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticIntMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticIntField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticIntField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewIntArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetIntArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetIntArrayRegion - } - - public static var jniPlaceholderValue: jint { - 0 - } -} - -extension UInt64: JavaValue { - public typealias JNIType = jlong - - public static var jvalueKeyPath: WritableKeyPath { \.j } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { - // `jlong` is always 64-bit, no matter the system pointer size. - // Due to differences in JNI headers between Android, JDK and how Swift sees these type imports - // we have to handle this a bit differently. - // - // On 32-bit, the standard JDK jlong is defined in C as `long long`, which yields Swift `Int64` - // On 64-bit, the standard JDK jlong is defined in C as `long`, which yields Swift `Int` - // On Android it's correctly marked as int64_t, always yielding `Int64` in Swift. - #if os(Android) || _pointerBitWidth(_32) - return Int64(bitPattern: self) - #else - return Int(bitPattern: UInt(self)) - #endif - } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - // `jlong` is always 64-bit, no matter the system pointer size. - // Due to differences in JNI headers between Android, JDK and how Swift sees these type imports - // we have to handle this a bit differently. - // - // On 32-bit, the standard JDK jlong is defined in C as `long long`, which yields Swift `Int64` - // On 64-bit, the standard JDK jlong is defined in C as `long`, which yields Swift `Int` - // On Android it's correctly marked as int64_t, always yielding `Int64` in Swift. - #if os(Android) || _pointerBitWidth(_32) - // In this case `jlong` is seen in Swift as `Int64`. - self = UInt64(bitPattern: value) - #else - // In this case `jlong` is since as just `Int`, which is always Int64 - self = UInt64(bitPattern: Int64(value)) - #endif - } - - public static var javaType: JavaType { .long } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallLongMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetLongField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetLongField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticLongMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticLongField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticLongField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewLongArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetLongArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetLongArrayRegion - } - - public static var jniPlaceholderValue: jlong { - 0 - } -} - -extension Int64: JavaValue { - public typealias JNIType = jlong - - public static var jvalueKeyPath: WritableKeyPath { \.j } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Int64(value) - } - - public static var javaType: JavaType { .long } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallLongMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetLongField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetLongField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticLongMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticLongField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticLongField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewLongArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetLongArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetLongArrayRegion - } - - public static var jniPlaceholderValue: jlong { - 0 - } -} - -#if _pointerBitWidth(_32) -extension Int: JavaValue { - - public typealias JNIType = jint - - public static var jvalueKeyPath: WritableKeyPath { \.i } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Int(value) - } - - public static var javaType: JavaType { .int } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallIntMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetIntField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetIntField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticIntMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticIntField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticIntField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewIntArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetIntArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetIntArrayRegion - } - - public static var jniPlaceholderValue: jint { - 0 - } -} -extension UInt: JavaValue { - - public typealias JNIType = jint - - public static var jvalueKeyPath: WritableKeyPath { \.i } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = UInt(value) - } - - public static var javaType: JavaType { .int } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallIntMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetIntField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetIntField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticIntMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticIntField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticIntField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewIntArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetIntArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetIntArrayRegion - } - - public static var jniPlaceholderValue: jint { - 0 - } -} -#elseif _pointerBitWidth(_64) -extension Int: JavaValue { - public typealias JNIType = jlong - - public static var jvalueKeyPath: WritableKeyPath { \.j } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = Int(value) - } - - public static var javaType: JavaType { .long } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallLongMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetLongField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetLongField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticLongMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticLongField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticLongField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewLongArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetLongArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetLongArrayRegion - } - - public static var jniPlaceholderValue: jlong { - 0 - } -} -extension UInt: JavaValue { - public typealias JNIType = jlong - - public static var jvalueKeyPath: WritableKeyPath { \.j } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { JNIType(self) } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = UInt(value) - } - - public static var javaType: JavaType { .long } - - public static func jniMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallLongMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetLongField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetLongField - } - - public static func jniStaticMethodCall( - in environment: JNIEnvironment - ) -> ((JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> JNIType) { - environment.interface.CallStaticLongMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticLongField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticLongField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - environment.interface.NewLongArray - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - environment.interface.GetLongArrayRegion - } - - public static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion { - environment.interface.SetLongArrayRegion - } - - public static var jniPlaceholderValue: jlong { - 0 - } -} -#endif diff --git a/Sources/SwiftJava/BridgedValues/JavaValue+String.swift b/Sources/SwiftJava/BridgedValues/JavaValue+String.swift deleted file mode 100644 index aa67c07fe..000000000 --- a/Sources/SwiftJava/BridgedValues/JavaValue+String.swift +++ /dev/null @@ -1,100 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaTypes - -extension String: JavaValue { - public typealias JNIType = jstring? - - public static var jvalueKeyPath: WritableKeyPath { \.l } - - public static var javaType: JavaType { - .class(package: "java.lang", name: "String") - } - - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - guard let value else { - self.init() - return - } - let cString = environment.interface.GetStringUTFChars(environment, value, nil)! - defer { environment.interface.ReleaseStringUTFChars(environment, value, cString) } - self = String(cString: cString) // copy - } - - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { - // FIXME: this works, but isn't great. Swift uses UTF8 and Java uses UTF8 with - // some encoding quirks for non-ascii. So round-tripping via UTF16 is unfortunate, - // but correct, so good enough for now. - var utfBuffer = Array(utf16) - return environment.interface.NewString(environment, &utfBuffer, Int32(utfBuffer.count)) - } - - public static func jniMethodCall(in environment: JNIEnvironment) -> JNIMethodCall { - environment.interface.CallObjectMethodA - } - - public static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet { - environment.interface.GetObjectField - } - - public static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet { - environment.interface.SetObjectField - } - - public static func jniStaticMethodCall(in environment: JNIEnvironment) -> JNIStaticMethodCall { - environment.interface.CallStaticObjectMethodA - } - - public static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet { - environment.interface.GetStaticObjectField - } - - public static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet { - environment.interface.SetStaticObjectField - } - - public static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray { - { environment, size in - // FIXME: Introduce a JavaString class that we can use for this. - let stringClass = environment.interface.FindClass(environment, "java/lang/String") - return environment.interface.NewObjectArray(environment, size, stringClass, nil) - } - } - - public static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion { - { environment, array, start, length, outPointer in - let buffer = UnsafeMutableBufferPointer(start: outPointer, count: Int(length)) - for i in 0.. JNISetArrayRegion { - { environment, array, start, length, outPointer in - let buffer = UnsafeBufferPointer(start: outPointer, count: Int(length)) - for i in start.. jbyteArray { - let count = self.count - var jniArray: jbyteArray = UInt8.jniNewArray(in: environment)(environment, Int32(count))! - getJNIValue(into: &jniArray, in: environment) - return jniArray - } - - public func getJNIValue(into jniArray: inout jbyteArray, in environment: JNIEnvironment) { - assert(Element.self == UInt8.self, "We're going to rebind memory with the assumption storage are bytes") - - // Fast path, Since the memory layout of `jbyte`` and those is the same, we rebind the memory - // rather than convert every element independently. This allows us to avoid another Swift array creation. - self.withUnsafeBytes { buffer in - guard let baseAddress = buffer.baseAddress else { - fatalError("Buffer had no base address?! \(self)") - } - - baseAddress.withMemoryRebound(to: jbyte.self, capacity: count) { ptr in - UInt8.jniSetArrayRegion(in: environment)( - environment, - jniArray, - 0, - jsize(count), - ptr - ) - } - } - } -} diff --git a/Sources/SwiftJava/CSwiftJavaJNI+Reexport.swift b/Sources/SwiftJava/CSwiftJavaJNI+Reexport.swift index 9b2c02a82..88d073d38 100644 --- a/Sources/SwiftJava/CSwiftJavaJNI+Reexport.swift +++ b/Sources/SwiftJava/CSwiftJavaJNI+Reexport.swift @@ -12,4 +12,4 @@ // //===----------------------------------------------------------------------===// -@_exported import CSwiftJavaJNI +@_exported import SwiftJavaJNICore diff --git a/Sources/SwiftJava/Exceptions/ExceptionHandling.swift b/Sources/SwiftJava/Exceptions/ExceptionHandling.swift index 759e47466..55d676b32 100644 --- a/Sources/SwiftJava/Exceptions/ExceptionHandling.swift +++ b/Sources/SwiftJava/Exceptions/ExceptionHandling.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import struct JavaTypes.JavaExceptionType +import struct SwiftJavaJNICore.JavaExceptionType extension JNIEnvironment { /// Execute a JNI call and check for an exception at the end. Translate diff --git a/Sources/SwiftJava/JNI.swift b/Sources/SwiftJava/JNI.swift index 9b50d2afd..4614906e4 100644 --- a/Sources/SwiftJava/JNI.swift +++ b/Sources/SwiftJava/JNI.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore /// A type that represents the shared JNI environment /// used to share any global JNI variables. @@ -32,9 +32,7 @@ package final class JNI { init(fromVM javaVM: JavaVirtualMachine) { // Update the global JavaVM - JavaVirtualMachine.sharedJVM.withLock { - $0 = javaVM - } + JavaVirtualMachine.setSharedJVM(javaVM) let environment = try! javaVM.environment() do { let clazz = try JavaClass(environment: environment) diff --git a/Sources/SwiftJava/JVM/JavaVirtualMachine.swift b/Sources/SwiftJava/JVM/JavaVirtualMachine.swift deleted file mode 100644 index 82dc137fb..000000000 --- a/Sources/SwiftJava/JVM/JavaVirtualMachine.swift +++ /dev/null @@ -1,358 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -#if canImport(FoundationEssentials) -import FoundationEssentials -#else -import Foundation -#endif - -public typealias JavaVMPointer = UnsafeMutablePointer -#if canImport(Android) -typealias JNIEnvPointer = UnsafeMutablePointer -#else -typealias JNIEnvPointer = UnsafeMutableRawPointer -#endif - -extension FileManager { - #if os(Windows) - static let pathSeparator = ";" - #else - static let pathSeparator = ":" - #endif -} - -public final class JavaVirtualMachine: @unchecked Sendable { - /// The JNI version that we depend on. - static let jniVersion = JNI_VERSION_1_6 - - /// Thread-local storage to detach from thread on exit - private static let destroyTLS = ThreadLocalStorage { _ in - try? JavaVirtualMachine.shared().detachCurrentThread() - } - - /// The Java virtual machine instance. - private let jvm: JavaVMPointer - - let classpath: [String] - - /// Whether to destroy the JVM on deinit. - private let destroyOnDeinit: LockedState // FIXME: we should require macOS 15 and then use Synchronization - - /// Adopt an existing JVM pointer. - public init(adoptingJVM jvm: JavaVMPointer) { - self.jvm = jvm - self.classpath = [] // FIXME: bad... - self.destroyOnDeinit = .init(initialState: false) - } - - /// Initialize a new Java virtual machine instance. - /// - /// - Parameters: - /// - classpath: The directories, JAR files, and ZIP files in which the JVM - /// should look to find classes. This maps to the VM option - /// `-Djava.class.path=`. - /// - vmOptions: Options that should be passed along to the JVM, which will - /// be prefixed by the class-path argument described above. - /// - ignoreUnrecognized: Whether the JVM should ignore any VM options it - /// does not recognize. - private init( - classpath: [String] = [], - vmOptions: [String] = [], - ignoreUnrecognized: Bool = false - ) throws { - self.classpath = classpath - var jvm: JavaVMPointer? = nil - var environment: JNIEnvPointer? = nil - var vmArgs = JavaVMInitArgs() - vmArgs.version = JavaVirtualMachine.jniVersion - vmArgs.ignoreUnrecognized = jboolean(ignoreUnrecognized ? JNI_TRUE : JNI_FALSE) - - // Construct the complete list of VM options. - var allVMOptions: [String] = [] - if !classpath.isEmpty { - let fileManager = FileManager.default - for path in classpath { - if !fileManager.fileExists(atPath: path) { - // FIXME: this should be configurable, a classpath missing a directory isn't reason to blow up - print( - "[warning][swift-java][JavaVirtualMachine] Missing classpath element: \(URL(fileURLWithPath: path).absoluteString)" - ) // TODO: stderr - } - } - let pathSeparatedClassPath = classpath.joined(separator: FileManager.pathSeparator) - allVMOptions.append("-Djava.class.path=\(pathSeparatedClassPath)") - } - allVMOptions.append(contentsOf: vmOptions) - - // Convert the options - let optionsBuffer = UnsafeMutableBufferPointer.allocate(capacity: allVMOptions.count) - defer { - optionsBuffer.deallocate() - } - for (index, vmOption) in allVMOptions.enumerated() { - let optionString = vmOption.utf8CString.withUnsafeBufferPointer { buffer in - let cString = UnsafeMutableBufferPointer.allocate(capacity: buffer.count + 1) - _ = cString.initialize(from: buffer) - cString[buffer.count] = 0 - return cString - } - optionsBuffer[index] = JavaVMOption(optionString: optionString.baseAddress, extraInfo: nil) - } - defer { - for option in optionsBuffer { - option.optionString.deallocate() - } - } - vmArgs.options = optionsBuffer.baseAddress - vmArgs.nOptions = jint(optionsBuffer.count) - - // Create the JVM instance. - if let createError = VMError(fromJNIError: JNI_CreateJavaVM(&jvm, &environment, &vmArgs)) { - throw createError - } - - self.jvm = jvm! - self.destroyOnDeinit = .init(initialState: true) - } - - public func destroyJVM() throws { - try self.detachCurrentThread() - if let error = VMError(fromJNIError: jvm.pointee!.pointee.DestroyJavaVM(jvm)) { - throw error - } - - destroyOnDeinit.withLock { $0 = false } // we destroyed explicitly, disable destroy in deinit - } - - deinit { - if destroyOnDeinit.withLock({ $0 }) { - do { - try destroyJVM() - } catch { - fatalError("Failed to destroy the JVM: \(error)") - } - } - } -} - -extension JavaVirtualMachine: CustomStringConvertible { - public var description: String { - "\(Self.self)(\(jvm))" - } -} - -// ==== ------------------------------------------------------------------------ -// MARK: Java thread management. - -extension JavaVirtualMachine { - /// Produce the JNI environment for the active thread, attaching this - /// thread to the JVM if it isn't already. - /// - /// - Parameter - /// - asDaemon: Whether this thread should be treated as a daemon - /// thread in the Java Virtual Machine. - public func environment(asDaemon: Bool = false) throws -> JNIEnvironment { - // Check whether this thread is already attached. If so, return the - // corresponding environment. - var environment: UnsafeMutableRawPointer? = nil - let getEnvResult = jvm.pointee!.pointee.GetEnv( - jvm, - &environment, - JavaVirtualMachine.jniVersion - ) - if getEnvResult == JNI_OK, let environment { - return environment.assumingMemoryBound(to: JNIEnv?.self) - } - - #if canImport(Android) - var jniEnv = environment?.assumingMemoryBound(to: JNIEnv?.self) - #else - var jniEnv = environment - #endif - - // Attach the current thread to the JVM. - let attachResult: jint - if asDaemon { - attachResult = jvm.pointee!.pointee.AttachCurrentThreadAsDaemon(jvm, &jniEnv, nil) - } else { - attachResult = jvm.pointee!.pointee.AttachCurrentThread(jvm, &jniEnv, nil) - } - - // If we failed to attach, report that. - if let attachError = VMError(fromJNIError: attachResult) { - // throw attachError - fatalError("JVM Error: \(attachError)") - } - - JavaVirtualMachine.destroyTLS.set(jniEnv!) - - #if canImport(Android) - return jniEnv! - #else - return jniEnv!.assumingMemoryBound(to: JNIEnv?.self) - #endif - } - - /// Detach the current thread from the Java Virtual Machine. All Java - /// threads waiting for this thread to die are notified. - func detachCurrentThread() throws { - if let resultError = VMError(fromJNIError: jvm.pointee!.pointee.DetachCurrentThread(jvm)) { - throw resultError - } - } -} -// ==== ------------------------------------------------------------------------ -// MARK: Shared Java Virtual Machine management. - -extension JavaVirtualMachine { - /// The globally shared JavaVirtualMachine instance, behind a lock. - /// - /// TODO: If the use of the lock itself ends up being slow, we could - /// use an atomic here instead because our access pattern is fairly - /// simple. - static let sharedJVM: LockedState = .init(initialState: nil) - - /// Access the shared Java Virtual Machine instance. - /// - /// If there is no shared Java Virtual Machine, create one with the given - /// arguments. Note that this function makes no attempt to try to augment - /// an existing virtual machine instance with the options given, so it is - /// up to clients to ensure that consistent arguments are provided to all - /// calls. - /// - /// - Parameters: - /// - classpath: The directories, JAR files, and ZIP files in which the JVM - /// should look to find classes. This maps to the VM option - /// `-Djava.class.path=`. - /// - vmOptions: Options that should be passed along to the JVM, which will - /// be prefixed by the class-path argument described above. - /// - ignoreUnrecognized: Whether the JVM should ignore any VM options it - /// does not recognize. - /// - replace: replace the existing shared JVM instance - public static func shared( - classpath: [String] = [], - vmOptions: [String] = [], - ignoreUnrecognized: Bool = false, - replace: Bool = false - ) throws -> JavaVirtualMachine { - precondition( - !classpath.contains(where: { $0.contains(FileManager.pathSeparator) }), - "Classpath element must not contain `\(FileManager.pathSeparator)`! Split the path into elements! Was: \(classpath)" - ) - - return try sharedJVM.withLock { (sharedJVMPointer: inout JavaVirtualMachine?) in - // If we already have a JavaVirtualMachine instance, return it. - if replace { - print("[swift-java] Replace JVM instance!") - try sharedJVMPointer?.destroyJVM() - sharedJVMPointer = nil - } else { - if let existingInstance = sharedJVMPointer { - // FIXME: this isn't ideal; we silently ignored that we may have requested a different classpath or options - return existingInstance - } - } - - while true { - var wasExistingVM: Bool = false - while true { - // Query the JVM itself to determine whether there is a JVM - // instance that we don't yet know about. - var jvm: UnsafeMutablePointer? = nil - var numJVMs: jsize = 0 - if JNI_GetCreatedJavaVMs(&jvm, 1, &numJVMs) == JNI_OK, numJVMs >= 1 { - // Adopt this JVM into a new instance of the JavaVirtualMachine - // wrapper. - let javaVirtualMachine = JavaVirtualMachine(adoptingJVM: jvm!) - sharedJVMPointer = javaVirtualMachine - return javaVirtualMachine - } - - precondition( - !wasExistingVM, - "JVM reports that an instance of the JVM was already created, but we didn't see it." - ) - - // Create a new instance of the JVM. - let javaVirtualMachine: JavaVirtualMachine - do { - javaVirtualMachine = try JavaVirtualMachine( - classpath: classpath, - vmOptions: vmOptions, - ignoreUnrecognized: ignoreUnrecognized - ) - } catch VMError.existingVM { - // We raced with code outside of this JavaVirtualMachine instance - // that created a VM while we were trying to do the same. Go - // through the loop again to pick up the underlying JVM pointer. - wasExistingVM = true - continue - } - - sharedJVMPointer = javaVirtualMachine - return javaVirtualMachine - } - } - } - } - - /// "Forget" the shared JavaVirtualMachine instance. - /// - /// This will allow the shared JavaVirtualMachine instance to be deallocated. - public static func forgetShared() { - sharedJVM.withLock { sharedJVMPointer in - sharedJVMPointer = nil - } - } -} - -extension JavaVirtualMachine { - /// Describes the kinds of errors that can occur when interacting with JNI. - enum VMError: Error { - /// There is already a Java Virtual Machine. - case existingVM - - /// JNI version mismatch error. - case jniVersion - - /// Thread is detached from the VM. - case threadDetached - - /// Out of memory. - case outOfMemory - - /// Invalid arguments. - case invalidArguments - - /// Unknown JNI error. - case unknown(jint, file: String, line: UInt) - - init?(fromJNIError error: jint, file: String = #fileID, line: UInt = #line) { - switch error { - case JNI_OK: return nil - case JNI_EDETACHED: self = .threadDetached - case JNI_EVERSION: self = .jniVersion - case JNI_ENOMEM: self = .outOfMemory - case JNI_EEXIST: self = .existingVM - case JNI_EINVAL: self = .invalidArguments - default: self = .unknown(error, file: file, line: line) - } - } - } - - enum JavaKitError: Error { - case classpathEntryNotFound(entry: String, classpath: [String]) - } -} diff --git a/Sources/SwiftJava/JVM/LockedState.swift b/Sources/SwiftJava/JVM/LockedState.swift deleted file mode 100644 index 745dfa51e..000000000 --- a/Sources/SwiftJava/JVM/LockedState.swift +++ /dev/null @@ -1,162 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -#if canImport(os) -import os -#if FOUNDATION_FRAMEWORK && canImport(C.os.lock) -import C.os.lock -#endif -#elseif canImport(Bionic) -import Bionic -#elseif canImport(Glibc) -import Glibc -#elseif canImport(Musl) -import Musl -#elseif canImport(WinSDK) -import WinSDK -#endif - -package struct LockedState { - - // Internal implementation for a cheap lock to aid sharing code across platforms - private struct _Lock { - #if canImport(os) - typealias Primitive = os_unfair_lock - #elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl) - typealias Primitive = pthread_mutex_t - #elseif canImport(WinSDK) - typealias Primitive = SRWLOCK - #elseif os(WASI) - // WASI is single-threaded, so we don't need a lock. - typealias Primitive = Void - #endif - - typealias PlatformLock = UnsafeMutablePointer - var _platformLock: PlatformLock - - fileprivate static func initialize(_ platformLock: PlatformLock) { - #if canImport(os) - platformLock.initialize(to: os_unfair_lock()) - #elseif canImport(Bionic) || canImport(Glibc) - pthread_mutex_init(platformLock, nil) - #elseif canImport(WinSDK) - InitializeSRWLock(platformLock) - #elseif os(WASI) - // no-op - #endif - } - - fileprivate static func deinitialize(_ platformLock: PlatformLock) { - #if canImport(Bionic) || canImport(Glibc) - pthread_mutex_destroy(platformLock) - #endif - platformLock.deinitialize(count: 1) - } - - static fileprivate func lock(_ platformLock: PlatformLock) { - #if canImport(os) - os_unfair_lock_lock(platformLock) - #elseif canImport(Bionic) || canImport(Glibc) - pthread_mutex_lock(platformLock) - #elseif canImport(WinSDK) - AcquireSRWLockExclusive(platformLock) - #elseif os(WASI) - // no-op - #endif - } - - static fileprivate func unlock(_ platformLock: PlatformLock) { - #if canImport(os) - os_unfair_lock_unlock(platformLock) - #elseif canImport(Bionic) || canImport(Glibc) - pthread_mutex_unlock(platformLock) - #elseif canImport(WinSDK) - ReleaseSRWLockExclusive(platformLock) - #elseif os(WASI) - // no-op - #endif - } - } - - private class _Buffer: ManagedBuffer { - deinit { - withUnsafeMutablePointerToElements { - _Lock.deinitialize($0) - } - } - } - - private let _buffer: ManagedBuffer - - package init(initialState: State) { - _buffer = _Buffer.create( - minimumCapacity: 1, - makingHeaderWith: { buf in - buf.withUnsafeMutablePointerToElements { - _Lock.initialize($0) - } - return initialState - } - ) - } - - package func withLock(_ body: @Sendable (inout State) throws -> T) rethrows -> T { - try withLockUnchecked(body) - } - - package func withLockUnchecked(_ body: (inout State) throws -> T) rethrows -> T { - try _buffer.withUnsafeMutablePointers { state, lock in - _Lock.lock(lock) - defer { _Lock.unlock(lock) } - return try body(&state.pointee) - } - } - - // Ensures the managed state outlives the locked scope. - package func withLockExtendingLifetimeOfState(_ body: @Sendable (inout State) throws -> T) rethrows -> T { - try _buffer.withUnsafeMutablePointers { state, lock in - _Lock.lock(lock) - return try withExtendedLifetime(state.pointee) { - defer { _Lock.unlock(lock) } - return try body(&state.pointee) - } - } - } -} - -extension LockedState where State == Void { - package init() { - self.init(initialState: ()) - } - - package func withLock(_ body: @Sendable () throws -> R) rethrows -> R { - try withLock { _ in - try body() - } - } - - package func lock() { - _buffer.withUnsafeMutablePointerToElements { lock in - _Lock.lock(lock) - } - } - - package func unlock() { - _buffer.withUnsafeMutablePointerToElements { lock in - _Lock.unlock(lock) - } - } -} - -extension LockedState: @unchecked Sendable where State: Sendable {} diff --git a/Sources/SwiftJava/JVM/ThreadLocalStorage.swift b/Sources/SwiftJava/JVM/ThreadLocalStorage.swift deleted file mode 100644 index 8a08d0353..000000000 --- a/Sources/SwiftJava/JVM/ThreadLocalStorage.swift +++ /dev/null @@ -1,90 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -#if canImport(Darwin) -import Darwin -#elseif canImport(Bionic) -import Bionic -#elseif canImport(Glibc) -import Glibc -#elseif canImport(Musl) -import Musl -#elseif canImport(WinSDK) -import WinSDK -#endif - -#if !(canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) || canImport(WinSDK)) -private var _globalTlsValue: UnsafeMutableRawPointer? -#endif - -package struct ThreadLocalStorage: ~Copyable { - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - private typealias PlatformKey = pthread_key_t - #elseif canImport(WinSDK) - private typealias PlatformKey = DWORD - #else - private typealias PlatformKey = Void - #endif - - #if canImport(Darwin) - package typealias Value = UnsafeMutableRawPointer - #else - package typealias Value = UnsafeMutableRawPointer? - #endif - - package typealias OnThreadExit = @convention(c) (_: Value) -> Void - - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - private var _key: PlatformKey - #elseif canImport(WinSDK) - private let _key: PlatformKey - #endif - - package init(onThreadExit: OnThreadExit) { - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - _key = 0 - pthread_key_create(&_key, onThreadExit) - #elseif canImport(WinSDK) - _key = FlsAlloc(onThreadExit) - #endif - } - - package func get() -> UnsafeMutableRawPointer? { - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - pthread_getspecific(_key) - #elseif canImport(WinSDK) - FlsGetValue(_key) - #else - _globalTlsValue - #endif - } - - package func set(_ value: Value) { - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - pthread_setspecific(_key, value) - #elseif canImport(WinSDK) - FlsSetValue(_key, value) - #else - _globalTlsValue = value - #endif - } - - deinit { - #if canImport(Darwin) || canImport(Bionic) || canImport(Glibc) || canImport(Musl) - pthread_key_delete(_key) - #elseif canImport(WinSDK) - FlsFree(_key) - #endif - } -} diff --git a/Sources/SwiftJava/JavaClass+CustomStringConvertible.swift b/Sources/SwiftJava/JavaClass+CustomStringConvertible.swift index 9f2669985..ec91a42f7 100644 --- a/Sources/SwiftJava/JavaClass+CustomStringConvertible.swift +++ b/Sources/SwiftJava/JavaClass+CustomStringConvertible.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore extension JavaClass: CustomStringConvertible { public var description: String { diff --git a/Sources/SwiftJava/JavaClass+Initialization.swift b/Sources/SwiftJava/JavaClass+Initialization.swift index 89bfa62b8..a380cc9fe 100644 --- a/Sources/SwiftJava/JavaClass+Initialization.swift +++ b/Sources/SwiftJava/JavaClass+Initialization.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore extension JavaClass { public typealias ObjectType = T diff --git a/Sources/SwiftJava/JavaEnvironment.swift b/Sources/SwiftJava/JavaEnvironment.swift deleted file mode 100644 index 9506dbead..000000000 --- a/Sources/SwiftJava/JavaEnvironment.swift +++ /dev/null @@ -1,23 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 CSwiftJavaJNI - -#if canImport(Android) -public typealias JNINativeInterface_ = JNINativeInterface -#endif - -extension UnsafeMutablePointer { - public var interface: JNINativeInterface_ { self.pointee!.pointee } -} diff --git a/Sources/SwiftJava/JavaObject+Inheritance.swift b/Sources/SwiftJava/JavaObject+Inheritance.swift index 0f2d3b1e4..c448cd58d 100644 --- a/Sources/SwiftJava/JavaObject+Inheritance.swift +++ b/Sources/SwiftJava/JavaObject+Inheritance.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore extension AnyJavaObject { /// Look up the other class type diff --git a/Sources/SwiftJava/JavaObject+MethodCalls.swift b/Sources/SwiftJava/JavaObject+MethodCalls.swift index 2a93a2905..1e86792b2 100644 --- a/Sources/SwiftJava/JavaObject+MethodCalls.swift +++ b/Sources/SwiftJava/JavaObject+MethodCalls.swift @@ -12,8 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI -import JavaTypes +import SwiftJavaJNICore /// Produce the mangling for a method with the given argument and result types. private func methodMangling( diff --git a/Sources/SwiftJava/JavaObjectHolder.swift b/Sources/SwiftJava/JavaObjectHolder.swift index b5e888351..65557e236 100644 --- a/Sources/SwiftJava/JavaObjectHolder.swift +++ b/Sources/SwiftJava/JavaObjectHolder.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore /// Stores a reference to a Java object, managing it as a global reference so /// that the Java virtual machine will not move or deallocate the object diff --git a/Sources/SwiftJava/JavaString+Extensions.swift b/Sources/SwiftJava/JavaString+Extensions.swift index 6c961d1bb..c9dee4849 100644 --- a/Sources/SwiftJava/JavaString+Extensions.swift +++ b/Sources/SwiftJava/JavaString+Extensions.swift @@ -12,8 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI -import JavaTypes +import SwiftJavaJNICore extension JavaString: CustomStringConvertible, CustomDebugStringConvertible { public var description: String { diff --git a/Sources/SwiftJava/JavaValue.swift b/Sources/SwiftJava/JavaValue.swift deleted file mode 100644 index 46efdb3fc..000000000 --- a/Sources/SwiftJava/JavaValue.swift +++ /dev/null @@ -1,166 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 CSwiftJavaJNI -import JavaTypes - -/// Describes a type that can be bridged with Java. -/// -/// `JavaValue` is the base protocol for bridging between Swift types and their -/// Java counterparts via the Java Native Interface (JNI). `JavaValue` is suitable -/// for describing both value types (such as `Int32` or `Bool`) and object types. -/// The Swift type conforms to `JavaValue`, and its `JNIType` associated type -/// provides the corresponding JNI type (e.g., `jint`, `jboolean`). Java classes -/// expressed in Swift also conform to the `JavaValue` protocol through the -/// `AnyJavaObject` protocol, as do Swift's `String` (bridged from -/// `java.lang.String`) and `Array` (bridged from `java.lang.Array`). -/// -/// Generally, clients will not explicitly make types conform to `JavaValue`, -/// nor use its operations directly. Instead, the `@JavaClass` macro should be -/// used to expose a Swift type for a Java class, and the macro will take care -/// of all of the details of conforming to `AnyJavaObject`. -/// -/// The protocol provides operations to bridge values in both directions: -/// - `getJNIValue(in:)`: produces the JNI value (of type `JNIType`) for the -/// `self` Swift value in the given JNI environment. -/// - `init(fromJNI:in:)`: initializes a Swift value from the JNI value (of -/// type `JNIType`) in the given JNI environment. -/// -/// The protocol also provides hooks to tie into JNI, including operations to -/// call Java methods that return an instance of this type (`jniMethodCall` and -/// `jniStaticMethodCall`), read/write Java fields of this type (`jniFieldGet`, -/// `jniFieldSet`, and the static versions thereof), and manage Java arrays -/// whose element type is the conforming Swift type (`jniNewArray`, -/// `jniGetArrayRegion`, `jniSetArrayRegion`). -public protocol JavaValue: ~Copyable { - /// The JNI type that underlies this Java value. - associatedtype JNIType - - /// Retrieve the JNI value. - func getJNIValue(in environment: JNIEnvironment) -> JNIType - - /// Initialize from a JNI value. - init(fromJNI value: JNIType, in environment: JNIEnvironment) - - /// The key path used to access the appropriate member of jvalue. - static var jvalueKeyPath: WritableKeyPath { get } - - /// The Java type this describes. - static var javaType: JavaType { get } - - /// The JNI function that performs a call to a method returning this type. - static func jniMethodCall(in environment: JNIEnvironment) -> JNIMethodCall - - /// The JNI function to get the value of a field of this type. - static func jniFieldGet(in environment: JNIEnvironment) -> JNIFieldGet - - /// The JNI function to set the value of a field of this type. - static func jniFieldSet(in environment: JNIEnvironment) -> JNIFieldSet - - /// The JNI function that performs a call to a static method returning this type. - static func jniStaticMethodCall(in environment: JNIEnvironment) -> JNIStaticMethodCall - - /// The JNI function to get the value of a static field of this type. - static func jniStaticFieldGet(in environment: JNIEnvironment) -> JNIStaticFieldGet - - /// The JNI function to set the value of a static field of this type. - static func jniStaticFieldSet(in environment: JNIEnvironment) -> JNIStaticFieldSet - - /// The JNI function to create a new array of this type. - static func jniNewArray(in environment: JNIEnvironment) -> JNINewArray - - /// The JNI function to get a region of an array. - static func jniGetArrayRegion(in environment: JNIEnvironment) -> JNIGetArrayRegion - - /// The JNI function to set a region of an array. - static func jniSetArrayRegion(in environment: JNIEnvironment) -> JNISetArrayRegion - - /// The placeholder value used when we need a JNI value that will not - /// actually be used. For example, this is used for a return back to JNI - /// after we have thrown a Java exception. - static var jniPlaceholderValue: JNIType { get } -} - -/// The JNI environment. -public typealias JNIEnvironment = UnsafeMutablePointer - -/// Type of an operation that performs a JNI method call. -public typealias JNIMethodCall = (JNIEnvironment, jobject, jmethodID, UnsafePointer?) -> Result - -/// Type of an operation that gets a field's value via JNI. -public typealias JNIFieldGet = (JNIEnvironment, jobject, jfieldID) -> FieldType - -/// Type of an operation that sets a field's value via JNI. -public typealias JNIFieldSet = (JNIEnvironment, jobject, jfieldID, FieldType) -> Void - -/// Type of an operation that performs a JNI static method call. -public typealias JNIStaticMethodCall = (JNIEnvironment, jclass, jmethodID, UnsafePointer?) -> Result - -/// Type of an operation that gets a static field's value via JNI. -public typealias JNIStaticFieldGet = (JNIEnvironment, jclass, jfieldID) -> FieldType - -/// Type of an operation that sets a static field's value via JNI. -public typealias JNIStaticFieldSet = (JNIEnvironment, jclass, jfieldID, FieldType) -> Void - -/// The type of an operation that produces a new Java array of type ArrayType -/// via JNI. -public typealias JNINewArray = (JNIEnvironment, jsize) -> jobject? - -/// The type of an operation that fills in a buffer with elements in an -/// array via JNI. -public typealias JNIGetArrayRegion = ( - JNIEnvironment, jobject, jsize, jsize, UnsafeMutablePointer? -) - -> Void - -/// The type of an operation that fills in a Java array with elements from -/// a buffer. -/// array via JNI. -public typealias JNISetArrayRegion = (JNIEnvironment, jobject, jsize, jsize, UnsafePointer?) - -> Void - -extension JavaValue where Self: ~Copyable { - /// Helper function to let us set a JNI type via keypath subscripting. - private static func assignJNIType(_ cell: inout JNIType, to newValue: JNIType) { - cell = newValue - } - - /// Convert to a jvalue within the given JNI environment. - public consuming func getJValue(in environment: JNIEnvironment) -> jvalue { - var result = jvalue() - Self.assignJNIType(&result[keyPath: Self.jvalueKeyPath], to: getJNIValue(in: environment)) - return result - } - - /// Initialize from a jvalue - init(fromJava value: jvalue, in environment: JNIEnvironment) { - self.init(fromJNI: value[keyPath: Self.jvalueKeyPath], in: environment) - } -} - -// Default implementations when the JNI type and the Swift type line up. -extension JavaValue where Self.JNIType == Self { - /// Retrieve the JNI value. - public func getJNIValue(in environment: JNIEnvironment) -> JNIType { self } - - /// Initialize from a JNI value. - public init(fromJNI value: JNIType, in environment: JNIEnvironment) { - self = value - } -} - -extension JavaValue where Self: ~Copyable { - /// The mangling string for this particular value. - public static var jniMangling: String { javaType.mangledName } -} diff --git a/Sources/SwiftJava/Optional+JavaObject.swift b/Sources/SwiftJava/Optional+JavaObject.swift index 83dc54c4e..93c41e0f0 100644 --- a/Sources/SwiftJava/Optional+JavaObject.swift +++ b/Sources/SwiftJava/Optional+JavaObject.swift @@ -12,8 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI -import JavaTypes +import SwiftJavaJNICore extension Optional: JavaValue where Wrapped: AnyJavaObject { public typealias JNIType = jobject? diff --git a/Sources/SwiftJava/SwiftPlatform.swift b/Sources/SwiftJava/SwiftPlatform.swift index 63a4d562e..7287091c8 100644 --- a/Sources/SwiftJava/SwiftPlatform.swift +++ b/Sources/SwiftJava/SwiftPlatform.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI +import SwiftJavaJNICore /// Helpers for forming platform specific directory names and paths. public struct SwiftPlatform { diff --git a/Sources/SwiftJava/generated/Appendable.swift b/Sources/SwiftJava/generated/Appendable.swift index b0c67ec50..498e79bad 100644 --- a/Sources/SwiftJava/generated/Appendable.swift +++ b/Sources/SwiftJava/generated/Appendable.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.lang.Appendable") public struct Appendable { diff --git a/Sources/SwiftJava/generated/ByteBuffer.swift b/Sources/SwiftJava/generated/ByteBuffer.swift index c2b2e8dde..4fddff59f 100644 --- a/Sources/SwiftJava/generated/ByteBuffer.swift +++ b/Sources/SwiftJava/generated/ByteBuffer.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.nio.ByteBuffer") open class ByteBuffer: JavaObject { diff --git a/Sources/SwiftJava/generated/CharSequence.swift b/Sources/SwiftJava/generated/CharSequence.swift index ee5dca369..c7792c497 100644 --- a/Sources/SwiftJava/generated/CharSequence.swift +++ b/Sources/SwiftJava/generated/CharSequence.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.lang.CharSequence") public struct CharSequence { diff --git a/Sources/SwiftJava/generated/Charset.swift b/Sources/SwiftJava/generated/Charset.swift index 09301e589..a9f0d8ebb 100644 --- a/Sources/SwiftJava/generated/Charset.swift +++ b/Sources/SwiftJava/generated/Charset.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.nio.charset.Charset") open class Charset: JavaObject { diff --git a/Sources/SwiftJava/generated/Closeable.swift b/Sources/SwiftJava/generated/Closeable.swift index a8a834c56..c267ff9ba 100644 --- a/Sources/SwiftJava/generated/Closeable.swift +++ b/Sources/SwiftJava/generated/Closeable.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.io.Closeable") public struct Closeable { diff --git a/Sources/SwiftJava/generated/Exception.swift b/Sources/SwiftJava/generated/Exception.swift index e87684cbd..6afccf5bd 100644 --- a/Sources/SwiftJava/generated/Exception.swift +++ b/Sources/SwiftJava/generated/Exception.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Exception") open class Exception: Throwable { diff --git a/Sources/SwiftJava/generated/File.swift b/Sources/SwiftJava/generated/File.swift index fdbb9e367..d5924f363 100644 --- a/Sources/SwiftJava/generated/File.swift +++ b/Sources/SwiftJava/generated/File.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.io.File") open class File: JavaObject { diff --git a/Sources/SwiftJava/generated/Flushable.swift b/Sources/SwiftJava/generated/Flushable.swift index b281ef609..283e2e286 100644 --- a/Sources/SwiftJava/generated/Flushable.swift +++ b/Sources/SwiftJava/generated/Flushable.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.io.Flushable") public struct Flushable { diff --git a/Sources/SwiftJava/generated/JavaArray.swift b/Sources/SwiftJava/generated/JavaArray.swift index ae1822088..a899fde7f 100644 --- a/Sources/SwiftJava/generated/JavaArray.swift +++ b/Sources/SwiftJava/generated/JavaArray.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Array") open class JavaArray: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaBoolean.swift b/Sources/SwiftJava/generated/JavaBoolean.swift index bdf21df90..f7a254415 100644 --- a/Sources/SwiftJava/generated/JavaBoolean.swift +++ b/Sources/SwiftJava/generated/JavaBoolean.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Boolean") open class JavaBoolean: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaByte.swift b/Sources/SwiftJava/generated/JavaByte.swift index e3f67c783..1102fdead 100644 --- a/Sources/SwiftJava/generated/JavaByte.swift +++ b/Sources/SwiftJava/generated/JavaByte.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Byte") open class JavaByte: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaCharacter.swift b/Sources/SwiftJava/generated/JavaCharacter.swift index bce0107ea..dc9afc71d 100644 --- a/Sources/SwiftJava/generated/JavaCharacter.swift +++ b/Sources/SwiftJava/generated/JavaCharacter.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Character") open class JavaCharacter: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaClass.swift b/Sources/SwiftJava/generated/JavaClass.swift index 2f5137481..7497e2a5d 100644 --- a/Sources/SwiftJava/generated/JavaClass.swift +++ b/Sources/SwiftJava/generated/JavaClass.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Class", implements: JavaReflectType.self) open class JavaClass: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaClassLoader.swift b/Sources/SwiftJava/generated/JavaClassLoader.swift index 0cd64aa15..827bb1271 100644 --- a/Sources/SwiftJava/generated/JavaClassLoader.swift +++ b/Sources/SwiftJava/generated/JavaClassLoader.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.ClassLoader") open class JavaClassLoader: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaCollection.swift b/Sources/SwiftJava/generated/JavaCollection.swift index 622f5708a..80a840a90 100644 --- a/Sources/SwiftJava/generated/JavaCollection.swift +++ b/Sources/SwiftJava/generated/JavaCollection.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.util.Collection") public struct JavaCollection { diff --git a/Sources/SwiftJava/generated/JavaDouble.swift b/Sources/SwiftJava/generated/JavaDouble.swift index 8d54f8de6..81baf88e4 100644 --- a/Sources/SwiftJava/generated/JavaDouble.swift +++ b/Sources/SwiftJava/generated/JavaDouble.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Double") open class JavaDouble: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaError.swift b/Sources/SwiftJava/generated/JavaError.swift index 4ba9d2ca1..0badf98dc 100644 --- a/Sources/SwiftJava/generated/JavaError.swift +++ b/Sources/SwiftJava/generated/JavaError.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Error") open class JavaError: Throwable { diff --git a/Sources/SwiftJava/generated/JavaFloat.swift b/Sources/SwiftJava/generated/JavaFloat.swift index ac989531d..55bc6a90b 100644 --- a/Sources/SwiftJava/generated/JavaFloat.swift +++ b/Sources/SwiftJava/generated/JavaFloat.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Float") open class JavaFloat: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaInteger.swift b/Sources/SwiftJava/generated/JavaInteger.swift index df57ba665..966c5b1b0 100644 --- a/Sources/SwiftJava/generated/JavaInteger.swift +++ b/Sources/SwiftJava/generated/JavaInteger.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Integer") open class JavaInteger: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaIterator.swift b/Sources/SwiftJava/generated/JavaIterator.swift index 50a9c1867..58f3ae579 100644 --- a/Sources/SwiftJava/generated/JavaIterator.swift +++ b/Sources/SwiftJava/generated/JavaIterator.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.util.Iterator") public struct JavaIterator { diff --git a/Sources/SwiftJava/generated/JavaLong.swift b/Sources/SwiftJava/generated/JavaLong.swift index 4e993d65e..a625b694d 100644 --- a/Sources/SwiftJava/generated/JavaLong.swift +++ b/Sources/SwiftJava/generated/JavaLong.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Long") open class JavaLong: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaNumber.swift b/Sources/SwiftJava/generated/JavaNumber.swift index 78f988f10..2ae59b73b 100644 --- a/Sources/SwiftJava/generated/JavaNumber.swift +++ b/Sources/SwiftJava/generated/JavaNumber.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Number") open class JavaNumber: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaObject.swift b/Sources/SwiftJava/generated/JavaObject.swift index 7db8a965c..35c71ce3c 100644 --- a/Sources/SwiftJava/generated/JavaObject.swift +++ b/Sources/SwiftJava/generated/JavaObject.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Object") open class JavaObject { diff --git a/Sources/SwiftJava/generated/JavaOptional.swift b/Sources/SwiftJava/generated/JavaOptional.swift index 1a165f07b..6ec584af6 100644 --- a/Sources/SwiftJava/generated/JavaOptional.swift +++ b/Sources/SwiftJava/generated/JavaOptional.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.util.Optional") open class JavaOptional: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaOptionalDouble.swift b/Sources/SwiftJava/generated/JavaOptionalDouble.swift index 58aa94419..4adb33b53 100644 --- a/Sources/SwiftJava/generated/JavaOptionalDouble.swift +++ b/Sources/SwiftJava/generated/JavaOptionalDouble.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.util.OptionalDouble") open class JavaOptionalDouble: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaOptionalInt.swift b/Sources/SwiftJava/generated/JavaOptionalInt.swift index 2270e66e4..549bed731 100644 --- a/Sources/SwiftJava/generated/JavaOptionalInt.swift +++ b/Sources/SwiftJava/generated/JavaOptionalInt.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.util.OptionalInt") open class JavaOptionalInt: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaOptionalLong.swift b/Sources/SwiftJava/generated/JavaOptionalLong.swift index 10c3fbd0f..c3dded607 100644 --- a/Sources/SwiftJava/generated/JavaOptionalLong.swift +++ b/Sources/SwiftJava/generated/JavaOptionalLong.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.util.OptionalLong") open class JavaOptionalLong: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaReflectArray.swift b/Sources/SwiftJava/generated/JavaReflectArray.swift index 4cae1202d..851005a70 100644 --- a/Sources/SwiftJava/generated/JavaReflectArray.swift +++ b/Sources/SwiftJava/generated/JavaReflectArray.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.reflect.Array") open class JavaReflectArray: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaReflectParameterizedType.swift b/Sources/SwiftJava/generated/JavaReflectParameterizedType.swift index a08016445..b9a18ddbe 100644 --- a/Sources/SwiftJava/generated/JavaReflectParameterizedType.swift +++ b/Sources/SwiftJava/generated/JavaReflectParameterizedType.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.ParameterizedType", extends: JavaReflectType.self) public struct JavaReflectParameterizedType { diff --git a/Sources/SwiftJava/generated/JavaReflectType.swift b/Sources/SwiftJava/generated/JavaReflectType.swift index fdf3b5726..bc5d5d539 100644 --- a/Sources/SwiftJava/generated/JavaReflectType.swift +++ b/Sources/SwiftJava/generated/JavaReflectType.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.lang.reflect.Type") public struct JavaReflectType { diff --git a/Sources/SwiftJava/generated/JavaSet.swift b/Sources/SwiftJava/generated/JavaSet.swift index 195831cea..0e5b72a86 100644 --- a/Sources/SwiftJava/generated/JavaSet.swift +++ b/Sources/SwiftJava/generated/JavaSet.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.util.Set", extends: JavaCollection.self) public struct JavaSet { diff --git a/Sources/SwiftJava/generated/JavaShort.swift b/Sources/SwiftJava/generated/JavaShort.swift index 4f387b36c..e9c4bb27a 100644 --- a/Sources/SwiftJava/generated/JavaShort.swift +++ b/Sources/SwiftJava/generated/JavaShort.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Short") open class JavaShort: JavaNumber { diff --git a/Sources/SwiftJava/generated/JavaString.swift b/Sources/SwiftJava/generated/JavaString.swift index 3ef699780..db8df502a 100644 --- a/Sources/SwiftJava/generated/JavaString.swift +++ b/Sources/SwiftJava/generated/JavaString.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.String", implements: CharSequence.self) open class JavaString: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaThread.swift b/Sources/SwiftJava/generated/JavaThread.swift index f153b1e51..9fb0748d9 100644 --- a/Sources/SwiftJava/generated/JavaThread.swift +++ b/Sources/SwiftJava/generated/JavaThread.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Thread") open class JavaThread: JavaObject { diff --git a/Sources/SwiftJava/generated/JavaVoid.swift b/Sources/SwiftJava/generated/JavaVoid.swift index 54decbbc6..d1d1b5460 100644 --- a/Sources/SwiftJava/generated/JavaVoid.swift +++ b/Sources/SwiftJava/generated/JavaVoid.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Void") open class JavaVoid: JavaObject { diff --git a/Sources/SwiftJava/generated/List.swift b/Sources/SwiftJava/generated/List.swift index 1fb41d5f3..9fa12e82e 100644 --- a/Sources/SwiftJava/generated/List.swift +++ b/Sources/SwiftJava/generated/List.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.util.List") public struct List { diff --git a/Sources/SwiftJava/generated/ListIterator.swift b/Sources/SwiftJava/generated/ListIterator.swift index be1068446..aff1bc7b0 100644 --- a/Sources/SwiftJava/generated/ListIterator.swift +++ b/Sources/SwiftJava/generated/ListIterator.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.util.ListIterator", extends: JavaIterator.self) public struct ListIterator { diff --git a/Sources/SwiftJava/generated/OutputStream.swift b/Sources/SwiftJava/generated/OutputStream.swift index 5659b40ac..20661e451 100644 --- a/Sources/SwiftJava/generated/OutputStream.swift +++ b/Sources/SwiftJava/generated/OutputStream.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.io.OutputStream", implements: Closeable.self, Flushable.self) open class OutputStream: JavaObject { diff --git a/Sources/SwiftJava/generated/Path.swift b/Sources/SwiftJava/generated/Path.swift index a98777f54..1495bf896 100644 --- a/Sources/SwiftJava/generated/Path.swift +++ b/Sources/SwiftJava/generated/Path.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.nio.file.Path") public struct Path { diff --git a/Sources/SwiftJava/generated/PrintWriter.swift b/Sources/SwiftJava/generated/PrintWriter.swift index 207f4e81d..d36428a13 100644 --- a/Sources/SwiftJava/generated/PrintWriter.swift +++ b/Sources/SwiftJava/generated/PrintWriter.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.io.PrintWriter") open class PrintWriter: Writer { diff --git a/Sources/SwiftJava/generated/Readable.swift b/Sources/SwiftJava/generated/Readable.swift index 65fc1bb22..8ca6ff533 100644 --- a/Sources/SwiftJava/generated/Readable.swift +++ b/Sources/SwiftJava/generated/Readable.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaInterface("java.lang.Readable") public struct Readable { diff --git a/Sources/SwiftJava/generated/RuntimeException.swift b/Sources/SwiftJava/generated/RuntimeException.swift index 14516ed11..d27b10ea5 100644 --- a/Sources/SwiftJava/generated/RuntimeException.swift +++ b/Sources/SwiftJava/generated/RuntimeException.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.RuntimeException") open class RuntimeException: Exception { diff --git a/Sources/SwiftJava/generated/StringWriter.swift b/Sources/SwiftJava/generated/StringWriter.swift index 06ebe082f..dbed40be9 100644 --- a/Sources/SwiftJava/generated/StringWriter.swift +++ b/Sources/SwiftJava/generated/StringWriter.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.io.StringWriter") open class StringWriter: Writer { diff --git a/Sources/SwiftJava/generated/Throwable.swift b/Sources/SwiftJava/generated/Throwable.swift index 27351254d..91b45daa4 100644 --- a/Sources/SwiftJava/generated/Throwable.swift +++ b/Sources/SwiftJava/generated/Throwable.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.lang.Throwable") open class Throwable: JavaObject { diff --git a/Sources/SwiftJava/generated/Writer.swift b/Sources/SwiftJava/generated/Writer.swift index 7fbce6203..7a49a9a18 100644 --- a/Sources/SwiftJava/generated/Writer.swift +++ b/Sources/SwiftJava/generated/Writer.swift @@ -1,5 +1,5 @@ // Auto-generated by Java-to-Swift wrapper generator. -import CSwiftJavaJNI +import SwiftJavaJNICore @JavaClass("java.io.Writer", implements: Appendable.self, Closeable.self, Flushable.self) open class Writer: JavaObject { diff --git a/Sources/SwiftJavaRuntimeSupport/_JNIBoxedConversions.swift b/Sources/SwiftJavaRuntimeSupport/_JNIBoxedConversions.swift index 8ffac3468..9fd372f8f 100644 --- a/Sources/SwiftJavaRuntimeSupport/_JNIBoxedConversions.swift +++ b/Sources/SwiftJavaRuntimeSupport/_JNIBoxedConversions.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore public enum _JNIBoxedConversions { private static let booleanMethod = _JNIMethodIDCache.Method( diff --git a/Sources/SwiftJavaRuntimeSupport/_JNIMethodIDCache.swift b/Sources/SwiftJavaRuntimeSupport/_JNIMethodIDCache.swift index fcb1e3c59..3b9cecc8c 100644 --- a/Sources/SwiftJavaRuntimeSupport/_JNIMethodIDCache.swift +++ b/Sources/SwiftJavaRuntimeSupport/_JNIMethodIDCache.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore /// A cache used to hold references for JNI method and classes. /// diff --git a/Sources/SwiftJavaTool/Java/JavaClassLoader.swift b/Sources/SwiftJavaTool/Java/JavaClassLoader.swift index 35d11f5ab..932ee146e 100644 --- a/Sources/SwiftJavaTool/Java/JavaClassLoader.swift +++ b/Sources/SwiftJavaTool/Java/JavaClassLoader.swift @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -import CSwiftJavaJNI import SwiftJava +import SwiftJavaJNICore import SwiftJavaShared import SwiftJavaToolLib diff --git a/Sources/SwiftJavaToolLib/JavaGenericsSupport.swift b/Sources/SwiftJavaToolLib/JavaGenericsSupport.swift index 087d6969c..44a6064f9 100644 --- a/Sources/SwiftJavaToolLib/JavaGenericsSupport.swift +++ b/Sources/SwiftJavaToolLib/JavaGenericsSupport.swift @@ -13,10 +13,10 @@ //===----------------------------------------------------------------------===// import JavaLangReflect -import JavaTypes import SwiftBasicFormat import SwiftJava import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftSyntax import SwiftSyntaxBuilder diff --git a/Sources/SwiftJavaToolLib/JavaTranslator.swift b/Sources/SwiftJavaToolLib/JavaTranslator.swift index 02200f45c..200f5b71e 100644 --- a/Sources/SwiftJavaToolLib/JavaTranslator.swift +++ b/Sources/SwiftJavaToolLib/JavaTranslator.swift @@ -14,11 +14,11 @@ import Foundation import JavaLangReflect -import JavaTypes import Logging import SwiftBasicFormat import SwiftJava import SwiftJavaConfigurationShared +import SwiftJavaJNICore import SwiftSyntax import SwiftSyntaxBuilder @@ -109,7 +109,7 @@ extension JavaTranslator { /// Default set of modules that will always be imported. private static let defaultImportedSwiftModules: Set = [ "SwiftJava", - "CSwiftJavaJNI", + "SwiftJavaJNICore", ] } diff --git a/Tests/JavaTypesTests/ManglingTests.swift b/Tests/JavaTypesTests/ManglingTests.swift deleted file mode 100644 index 778360cd2..000000000 --- a/Tests/JavaTypesTests/ManglingTests.swift +++ /dev/null @@ -1,37 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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 JavaTypes -import Testing - -@Suite -struct ManglingTests { - - @Test - func methodMangling() throws { - let demangledSignature = try MethodSignature( - mangledName: "(ILjava/lang/String;[I)J" - ) - let expectedSignature = MethodSignature( - resultType: .long, - parameterTypes: [ - .int, - .class(package: "java.lang", name: "String"), - .array(.int), - ] - ) - #expect(demangledSignature == expectedSignature) - #expect(expectedSignature.mangledName == "(ILjava/lang/String;[I)J") - } -} diff --git a/Tests/SwiftJavaToolLibTests/WrapJavaTests/BasicWrapJavaTests.swift b/Tests/SwiftJavaToolLibTests/WrapJavaTests/BasicWrapJavaTests.swift index daf8c8348..d54b7d8a7 100644 --- a/Tests/SwiftJavaToolLibTests/WrapJavaTests/BasicWrapJavaTests.swift +++ b/Tests/SwiftJavaToolLibTests/WrapJavaTests/BasicWrapJavaTests.swift @@ -39,8 +39,8 @@ final class BasicWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ @JavaClass("com.example.ExampleSimpleClass") @@ -68,8 +68,8 @@ final class BasicWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ /// Java method `example`. diff --git a/Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsWrapJavaTests.swift b/Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsWrapJavaTests.swift index 39abff48e..009783512 100644 --- a/Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsWrapJavaTests.swift +++ b/Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsWrapJavaTests.swift @@ -51,8 +51,8 @@ final class GenericsWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ @JavaClass("com.example.Pair") @@ -137,8 +137,8 @@ final class GenericsWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ @JavaClass("com.example.Item") @@ -255,8 +255,8 @@ final class GenericsWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ @JavaClass("com.example.ByteArray") @@ -288,8 +288,8 @@ final class GenericsWrapJavaTests: XCTestCase { classpath: [classpathURL], expectedChunks: [ """ - import CSwiftJavaJNI import SwiftJava + import SwiftJavaJNICore """, """ @JavaClass("com.example.Kappa")