Skip to content

Commit 90e4369

Browse files
committed
Generate Moshi adapters
This is supposed to be faster than using reflection.
1 parent 41455d0 commit 90e4369

File tree

13 files changed

+50
-18
lines changed

13 files changed

+50
-18
lines changed

build.gradle.kts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,25 @@ plugins {
1616
id("org.jetbrains.changelog") version "2.2.0"
1717
// Gradle Qodana Plugin
1818
id("org.jetbrains.qodana") version "0.1.13"
19+
// Generate Moshi adapters.
20+
id("com.google.devtools.ksp") version "1.9.23-1.0.19"
1921
}
2022

2123
group = properties("pluginGroup")
2224
version = properties("pluginVersion")
2325

2426
dependencies {
25-
implementation("com.squareup.retrofit2:retrofit:2.9.0")
26-
// define a BOM and its version
2727
implementation(platform("com.squareup.okhttp3:okhttp-bom:4.12.0"))
28-
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
2928
implementation("com.squareup.okhttp3:okhttp")
3029
implementation("com.squareup.okhttp3:logging-interceptor")
3130

32-
implementation("org.zeroturnaround:zt-exec:1.12") {
33-
exclude("org.slf4j")
34-
}
31+
implementation("com.squareup.moshi:moshi:1.15.1")
32+
ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.1")
33+
34+
implementation("com.squareup.retrofit2:retrofit:2.9.0")
35+
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
36+
37+
implementation("org.zeroturnaround:zt-exec:1.12")
3538

3639
testImplementation(kotlin("test"))
3740
}

src/main/kotlin/com/coder/gateway/cli/CoderCLIManager.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import com.coder.gateway.util.sha1
1919
import com.intellij.openapi.diagnostic.Logger
2020
import com.intellij.openapi.progress.ProgressIndicator
2121
import com.squareup.moshi.Json
22+
import com.squareup.moshi.JsonClass
23+
import com.squareup.moshi.JsonDataException
2224
import com.squareup.moshi.Moshi
2325
import org.zeroturnaround.exec.ProcessExecutor
2426
import java.io.EOFException
@@ -33,6 +35,14 @@ import java.nio.file.StandardCopyOption
3335
import java.util.zip.GZIPInputStream
3436
import javax.net.ssl.HttpsURLConnection
3537

38+
/**
39+
* Version output from the CLI's version command.
40+
*/
41+
@JsonClass(generateAdapter = true)
42+
internal data class Version(
43+
@Json(name = "version") val version: String,
44+
)
45+
3646
/**
3747
* Do as much as possible to get a valid, up-to-date CLI.
3848
*
@@ -325,13 +335,6 @@ class CoderCLIManager(
325335
}
326336
}
327337

328-
/**
329-
* Version output from the CLI's version command.
330-
*/
331-
private data class Version(
332-
@Json(name = "version") val version: String,
333-
)
334-
335338
/**
336339
* Return the binary version.
337340
*
@@ -341,10 +344,12 @@ class CoderCLIManager(
341344
val raw = exec("version", "--output", "json")
342345
try {
343346
val json = Moshi.Builder().build().adapter(Version::class.java).fromJson(raw)
344-
if (json?.version == null) {
347+
if (json?.version == null || json.version.isBlank()) {
345348
throw MissingVersionException("No version found in output")
346349
}
347350
return SemVer.parse(json.version)
351+
} catch (exception: JsonDataException) {
352+
throw MissingVersionException("No version found in output")
348353
} catch (exception: EOFException) {
349354
throw MissingVersionException("No version found in output")
350355
}

src/main/kotlin/com/coder/gateway/sdk/v2/models/BuildInfo.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

56
/**
67
* Contains build information for a Coder instance.
@@ -11,6 +12,7 @@ import com.squareup.moshi.Json
1112
*
1213
* @param version the semantic version of the build.
1314
*/
15+
@JsonClass(generateAdapter = true)
1416
data class BuildInfo(
1517
@Json(name = "external_url") val externalUrl: String,
1618
@Json(name = "version") val version: String

src/main/kotlin/com/coder/gateway/sdk/v2/models/CreateWorkspaceBuildRequest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45
import java.util.UUID
56

7+
@JsonClass(generateAdapter = true)
68
data class CreateWorkspaceBuildRequest(
79
// Use to update the workspace to a new template version.
810
@Json(name = "template_version_id") val templateVersionID: UUID?,

src/main/kotlin/com/coder/gateway/sdk/v2/models/Response.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

6+
@JsonClass(generateAdapter = true)
57
data class Validation (
68
@Json(name = "field") val field: String,
79
@Json(name = "detail") val detail: String,
810
)
911

12+
@JsonClass(generateAdapter = true)
1013
data class Response (
1114
@Json(name = "message") val message: String,
1215
@Json(name = "detail") val detail: String,

src/main/kotlin/com/coder/gateway/sdk/v2/models/Template.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45
import java.util.UUID
56

7+
@JsonClass(generateAdapter = true)
68
data class Template(
79
@Json(name = "id") val id: UUID,
810
@Json(name = "active_version_id") val activeVersionID: UUID,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

6+
@JsonClass(generateAdapter = true)
57
data class User(
68
@Json(name = "username") val username: String,
79
)

src/main/kotlin/com/coder/gateway/sdk/v2/models/Workspace.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ package com.coder.gateway.sdk.v2.models
22

33
import com.coder.gateway.models.WorkspaceAgentListModel
44
import com.squareup.moshi.Json
5-
import java.util.*
5+
import com.squareup.moshi.JsonClass
6+
import java.util.UUID
67

78
/**
8-
* Represents a deployment of a template. It references a specific version and can be updated.
9+
* Represents a deployment of a template. It references a specific version and
10+
* can be updated.
911
*/
12+
@JsonClass(generateAdapter = true)
1013
data class Workspace(
1114
@Json(name = "id") val id: UUID,
1215
@Json(name = "template_id") val templateID: UUID,

src/main/kotlin/com/coder/gateway/sdk/v2/models/WorkspaceAgent.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package com.coder.gateway.sdk.v2.models
33
import com.coder.gateway.util.Arch
44
import com.coder.gateway.util.OS
55
import com.squareup.moshi.Json
6-
import java.util.*
6+
import com.squareup.moshi.JsonClass
7+
import java.util.UUID
78

9+
@JsonClass(generateAdapter = true)
810
data class WorkspaceAgent(
911
@Json(name = "id") val id: UUID,
1012
@Json(name = "status") val status: WorkspaceAgentStatus,

src/main/kotlin/com/coder/gateway/sdk/v2/models/WorkspaceBuild.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.coder.gateway.sdk.v2.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45
import java.util.UUID
56

67
/**
78
* WorkspaceBuild is an at-point representation of a workspace state.
89
* BuildNumbers start at 1 and increase by 1 for each subsequent build.
910
*/
11+
@JsonClass(generateAdapter = true)
1012
data class WorkspaceBuild(
1113
@Json(name = "template_version_id") val templateVersionID: UUID,
1214
@Json(name = "resources") val resources: List<WorkspaceResource>,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy