Skip to content

Commit 1c2726b

Browse files
authored
Merge pull request #20 from readdle/swift5
Dev: migrate to new swift plugin
2 parents b8a51a7 + 940fe7b commit 1c2726b

File tree

9 files changed

+57
-55
lines changed

9 files changed

+57
-55
lines changed

build.gradle

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
buildscript {
2+
ext.kotlin_version = '1.3.50'
3+
24
repositories {
35
google()
46
jcenter()
7+
mavenLocal()
58
maven { url "https://dl.bintray.com/readdle/maven" }
69
}
710

811
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.3.0'
10-
classpath 'com.readdle.android.swift:gradle:1.1.10'
11-
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
12+
classpath "com.android.tools.build:gradle:3.5.0"
13+
classpath "com.readdle.android.swift:gradle:1.3.0"
14+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
15+
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
16+
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4"
1217
}
1318
}
1419

compiler/src/main/java/com/readdle/codegen/SwiftFuncDescriptor.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import java.io.IOException;
66
import java.util.ArrayList;
77
import java.util.Collections;
8-
import java.util.HashMap;
98
import java.util.List;
109

1110
import javax.lang.model.element.ExecutableElement;
@@ -129,9 +128,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
129128
if (shouldCatchPreamble) {
130129
swiftWriter.emitStatement("}");
131130
swiftWriter.emitStatement("catch {");
132-
swiftWriter.emitStatement("let errorString: String");
133-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
134-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
131+
swiftWriter.emitStatement("let nsError = error as NSError");
132+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
135133
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
136134
swiftWriter.emitStatement(String.format("return%s", returnSwiftType != null ? " nil" : ""));
137135
swiftWriter.emitStatement("}");
@@ -177,9 +175,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
177175
}
178176
swiftWriter.emitStatement("}");
179177
swiftWriter.emitStatement("catch {");
180-
swiftWriter.emitStatement("let errorString: String");
181-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
182-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
178+
swiftWriter.emitStatement("let nsError = error as NSError");
179+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
183180
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
184181
swiftWriter.emitStatement("return nil");
185182
swiftWriter.emitStatement("}");
@@ -188,9 +185,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
188185
if (isThrown) {
189186
swiftWriter.emitStatement("}");
190187
swiftWriter.emitStatement("catch {");
191-
swiftWriter.emitStatement("let errorString: String");
192-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
193-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
188+
swiftWriter.emitStatement("let nsError = error as NSError");
189+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
194190
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftErrorClass, errorString)");
195191
swiftWriter.emitStatement(String.format("return%s", returnSwiftType != null ? " nil" : ""));
196192
swiftWriter.emitStatement("}");

compiler/src/main/java/com/readdle/codegen/SwiftGetterDescriptor.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
6161
swiftWriter.emitStatement(String.format("swiftSelf = try %s.from(javaObject: this)", swiftType));
6262
swiftWriter.emitStatement("}");
6363
swiftWriter.emitStatement("catch {");
64-
swiftWriter.emitStatement("let errorString: String");
65-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
66-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
64+
swiftWriter.emitStatement("let nsError = error as NSError");
65+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
6766
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
6867
swiftWriter.emitStatement(String.format("return%s", returnSwiftType != null ? " nil" : ""));
6968
swiftWriter.emitStatement("}");
@@ -81,9 +80,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
8180
}
8281
swiftWriter.emitStatement("}");
8382
swiftWriter.emitStatement("catch {");
84-
swiftWriter.emitStatement("let errorString: String");
85-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
86-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
83+
swiftWriter.emitStatement("let nsError = error as NSError");
84+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
8785
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
8886
swiftWriter.emitStatement("return nil");
8987
swiftWriter.emitStatement("}");

compiler/src/main/java/com/readdle/codegen/SwiftReferenceDescriptor.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@
44
import com.readdle.codegen.anotation.SwiftReference;
55
import com.readdle.codegen.anotation.SwiftSetter;
66

7-
import javax.annotation.processing.Filer;
8-
import javax.lang.model.element.*;
9-
import javax.lang.model.type.DeclaredType;
10-
import javax.lang.model.type.MirroredTypeException;
11-
import javax.tools.StandardLocation;
127
import java.io.File;
138
import java.io.IOException;
149
import java.util.LinkedList;
1510
import java.util.List;
1611

12+
import javax.annotation.processing.Filer;
13+
import javax.lang.model.element.Element;
14+
import javax.lang.model.element.ElementKind;
15+
import javax.lang.model.element.ExecutableElement;
16+
import javax.lang.model.element.Modifier;
17+
import javax.lang.model.element.TypeElement;
18+
import javax.lang.model.element.VariableElement;
19+
import javax.lang.model.type.DeclaredType;
20+
import javax.lang.model.type.MirroredTypeException;
21+
import javax.tools.StandardLocation;
22+
1723
import static com.readdle.codegen.JavaSwiftProcessor.FOLDER;
1824

1925
class SwiftReferenceDescriptor {
@@ -143,15 +149,15 @@ File generateCode() throws IOException {
143149

144150
swiftWriter.emitEmptyLine();
145151
swiftWriter.emitStatement("// Get swift object from pointer");
146-
swiftWriter.emitStatement(String.format("public static func from(javaObject: jobject) throws -> %s {", simpleTypeName));
152+
swiftWriter.emitStatement(String.format("static func from(javaObject: jobject) throws -> %s {", simpleTypeName));
147153
swiftWriter.emitStatement("let longPointer = JNI.api.GetLongField(JNI.env, javaObject, javaSwiftPointerFiled)");
148154
swiftWriter.emitStatement("guard longPointer != 0, let pointer = UnsafeRawPointer(bitPattern: Int(longPointer)) else {\nthrow NSError(domain: \"java.lang.NullPointerException\", code: 1)\n}");
149155
swiftWriter.emitStatement(String.format("return Unmanaged<%s>.fromOpaque(pointer).takeUnretainedValue()", simpleTypeName));
150156
swiftWriter.emitStatement("}");
151157

152158
swiftWriter.emitEmptyLine();
153159
swiftWriter.emitStatement("// Create java object with native pointer");
154-
swiftWriter.emitStatement("public func javaObject() throws -> jobject {");
160+
swiftWriter.emitStatement("func javaObject() throws -> jobject {");
155161
swiftWriter.emitStatement("let nativePointer = jlong(Int(bitPattern: Unmanaged.passRetained(self).toOpaque()))");
156162
swiftWriter.emitStatement("guard let result = JNI.NewObject(javaClass, methodID: javaConstructor) else {\nthrow NSError(domain: \"CantCreateObject\", code: 1)\n}");
157163
swiftWriter.emitStatement("JNI.api.SetLongField(JNI.env, result, javaSwiftPointerFiled, nativePointer)");
@@ -160,13 +166,13 @@ File generateCode() throws IOException {
160166

161167
swiftWriter.emitEmptyLine();
162168
swiftWriter.emitStatement("// Unbalance release");
163-
swiftWriter.emitStatement("public func release() {");
169+
swiftWriter.emitStatement("func release() {");
164170
swiftWriter.emitStatement("Unmanaged.passUnretained(self).release()");
165171
swiftWriter.emitStatement("}");
166172

167173
swiftWriter.emitEmptyLine();
168174
swiftWriter.emitStatement("// Unbalanced retain");
169-
swiftWriter.emitStatement("public func retain() {");
175+
swiftWriter.emitStatement("func retain() {");
170176
swiftWriter.emitStatement("_ = Unmanaged.passUnretained(self).retain()");
171177
swiftWriter.emitStatement("}");
172178

compiler/src/main/java/com/readdle/codegen/SwiftSetterDescriptor.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import java.io.IOException;
66
import java.util.Collections;
7-
import java.util.HashMap;
87

98
import javax.lang.model.element.ExecutableElement;
109
import javax.lang.model.element.Modifier;
@@ -81,9 +80,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
8180

8281
swiftWriter.emitStatement("}");
8382
swiftWriter.emitStatement("catch {");
84-
swiftWriter.emitStatement("let errorString: String");
85-
swiftWriter.emitStatement("if let nsError = error as? NSError { errorString = \"\\(nsError.domain): \\(nsError.code)\" }");
86-
swiftWriter.emitStatement("else { errorString = String(reflecting: type(of: error)) + \": \" + String(describing: error) }");
83+
swiftWriter.emitStatement("let nsError = error as NSError");
84+
swiftWriter.emitStatement("let errorString = \"\\(nsError.domain): \\(nsError.code)\"");
8785
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
8886
swiftWriter.emitStatement("return");
8987
swiftWriter.emitStatement("}");

compiler/src/main/java/com/readdle/codegen/SwiftValueDescriptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,22 @@ File generateCode() throws IOException {
127127
if (hasSubclasses) {
128128
swiftWriter.emitEmptyLine();
129129
swiftWriter.emitStatement("// Decoding SwiftValue type with JavaCoder");
130-
swiftWriter.emitStatement(String.format("public static func from<T: %s>(javaObject: jobject) throws -> T {", simpleTypeName));
130+
swiftWriter.emitStatement(String.format("static func from<T: %s>(javaObject: jobject) throws -> T {", simpleTypeName));
131131
swiftWriter.emitStatement(String.format("let any = try JavaDecoder(forPackage: \"%s\", missingFieldsStrategy: .ignore).decode(AnyCodable.self, from: javaObject)", javaPackage.replace(".", "/")));
132132
swiftWriter.emitStatement("return any.value as! T");
133133
swiftWriter.emitStatement("}");
134134
}
135135
else {
136136
swiftWriter.emitEmptyLine();
137137
swiftWriter.emitStatement("// Decoding SwiftValue type with JavaCoder");
138-
swiftWriter.emitStatement(String.format("public static func from(javaObject: jobject) throws -> %s {", simpleTypeName));
138+
swiftWriter.emitStatement(String.format("static func from(javaObject: jobject) throws -> %s {", simpleTypeName));
139139
swiftWriter.emitStatement(String.format("return try JavaDecoder(forPackage: \"%s\", missingFieldsStrategy: .ignore).decode(%s.self, from: javaObject)", javaPackage.replace(".", "/"), simpleTypeName));
140140
swiftWriter.emitStatement("}");
141141
}
142142

143143
swiftWriter.emitEmptyLine();
144144
swiftWriter.emitStatement("// Encoding SwiftValue type with JavaCoder");
145-
swiftWriter.emitStatement("public func javaObject() throws -> jobject {");
145+
swiftWriter.emitStatement("func javaObject() throws -> jobject {");
146146
swiftWriter.emitStatement(String.format("return try JavaEncoder(forPackage: \"%s\", missingFieldsStrategy: .ignore).encode(self)", javaPackage.replace(".", "/")));
147147
swiftWriter.emitStatement("}");
148148

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Sun Apr 29 18:40:15 EEST 2018
1+
#Thu Aug 29 12:50:13 EEST 2019
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

sample/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'com.readdle.android.swift'
33

4+
apply plugin: 'kotlin-android'
5+
apply plugin: 'kotlin-android-extensions'
6+
47
swift {
58
cleanEnabled true
69
debug {
10+
abiFilters("arm64-v8a", "x86_64")
711
extraBuildFlags("-Xswiftc", "-DDEBUG")
812
}
913
}
@@ -30,10 +34,10 @@ dependencies {
3034
annotationProcessor project(':compiler')
3135
implementation project(':library')
3236

33-
implementation 'com.android.support:appcompat-v7:27.1.1'
34-
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
37+
implementation 'com.android.support:appcompat-v7:28.0.0'
38+
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
3539
testImplementation 'junit:junit:4.12'
36-
androidTestImplementation 'com.android.support:support-annotations:27.1.1'
40+
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
3741
androidTestImplementation 'com.android.support.test:runner:1.0.2'
3842
androidTestImplementation 'com.android.support.test:rules:1.0.2'
3943
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

sample/src/main/swift/Package.swift

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:4.0
1+
// swift-tools-version:5.0
22
import Foundation
33
import PackageDescription
44

@@ -9,15 +9,11 @@ let generatedName = "Generated"
99
let generatedPath = ".build/\(generatedName.lowercased())"
1010

1111
let isSourcesGenerated: Bool = {
12-
let basePath = URL(fileURLWithPath: #file)
13-
.deletingLastPathComponent()
14-
.path
15-
16-
let fileManager = FileManager()
17-
fileManager.changeCurrentDirectoryPath(basePath)
12+
let baseURL = URL(fileURLWithPath: #file).deletingLastPathComponent()
13+
let generatedURL = baseURL.appendingPathComponent(generatedPath)
1814

1915
var isDirectory: ObjCBool = false
20-
let exists = fileManager.fileExists(atPath: generatedPath, isDirectory: &isDirectory)
16+
let exists = FileManager.default.fileExists(atPath: generatedURL.path, isDirectory: &isDirectory)
2117

2218
return exists && isDirectory.boolValue
2319
}()
@@ -41,7 +37,7 @@ func addGenerated(_ targets: [Target]) -> [Target] {
4137
.target(
4238
name: generatedName,
4339
dependencies: [
44-
.byNameItem(name: packageName),
40+
.byName(name: packageName),
4541
"java_swift",
4642
"Java",
4743
"JavaCoder",
@@ -57,13 +53,12 @@ let package = Package(
5753
products: addGenerated([
5854
]),
5955
dependencies: [
60-
.package(url: "https://github.com/readdle/java_swift.git", .exact("2.1.3")),
61-
.package(url: "https://github.com/readdle/swift-java.git", .exact("0.1.5")),
62-
.package(url: "https://github.com/readdle/swift-java-coder.git", .exact("1.0.5")),
63-
.package(url: "https://github.com/readdle/swift-anycodable.git", .exact("1.0.0")),
56+
.package(url: "https://github.com/readdle/java_swift.git", .exact("2.1.7")),
57+
.package(url: "https://github.com/readdle/swift-java.git", .exact("0.2.0")),
58+
.package(url: "https://github.com/readdle/swift-java-coder.git", .exact("1.0.13")),
59+
.package(url: "https://github.com/readdle/swift-anycodable.git", .exact("1.0.2")),
6460
],
6561
targets: addGenerated([
6662
.target(name: packageName, dependencies: ["AnyCodable"])
67-
]),
68-
swiftLanguageVersions: [4]
63+
])
6964
)

0 commit comments

Comments
 (0)