Skip to content

Commit 6d89738

Browse files
Bumps and Serde interface change (#523)
* Dependency bumps * Kotlin 2.2 * Gradle plugins * Vert.x * Relaxed Serde interface nullability constraints. These should not affect bytecode compatibility, but only linters using the jspecify annotations. * Removed all jetbrains @NotNull usage
1 parent 2aba3f9 commit 6d89738

File tree

11 files changed

+27
-29
lines changed

11 files changed

+27
-29
lines changed

buildSrc/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repositories {
99

1010

1111
dependencies {
12-
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21")
13-
implementation("org.jetbrains.kotlin:kotlin-serialization:2.0.21")
14-
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.25.0")
12+
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10")
13+
implementation("org.jetbrains.kotlin:kotlin-serialization:2.2.10")
14+
implementation("com.diffplug.spotless:spotless-plugin-gradle:7.2.1")
1515
}

client/src/main/java/dev/restate/client/base/BaseClient.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.util.stream.Stream;
3131
import org.apache.logging.log4j.LogManager;
3232
import org.apache.logging.log4j.Logger;
33-
import org.jetbrains.annotations.NotNull;
3433
import org.jspecify.annotations.NonNull;
3534
import org.jspecify.annotations.Nullable;
3635

@@ -358,7 +357,7 @@ protected abstract <Res> CompletableFuture<Res> doPostRequest(
358357
protected abstract <Res> CompletableFuture<Res> doGetRequest(
359358
URI target, Stream<Map.Entry<String, String>> headers, ResponseMapper<Res> responseMapper);
360359

361-
private <Res> @NotNull ResponseMapper<Response<Res>> callResponseMapper(
360+
private <Res> @NonNull ResponseMapper<Response<Res>> callResponseMapper(
362361
String requestMethod, URI requestUri, Serde<Res> resSerde) {
363362
return (statusCode, responseHeaders, responseBody) -> {
364363
if (statusCode >= 300) {
@@ -389,7 +388,7 @@ protected abstract <Res> CompletableFuture<Res> doGetRequest(
389388
};
390389
}
391390

392-
private <Res> @NotNull ResponseMapper<Response<Output<Res>>> getOutputResponseMapper(
391+
private <Res> @NonNull ResponseMapper<Response<Output<Res>>> getOutputResponseMapper(
393392
String requestMethod, URI requestUri, Serde<Res> resSerde) {
394393
return (statusCode, responseHeaders, responseBody) -> {
395394
if (statusCode == 470) {

common/src/main/java/dev/restate/serde/Serde.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,11 @@
2424
*
2525
* @see SerdeFactory
2626
*/
27-
@NullMarked
2827
public interface Serde<T extends @Nullable Object> extends TypeTag<T> {
2928

3029
Slice serialize(T value);
3130

32-
T deserialize(Slice value);
31+
T deserialize(@NonNull Slice value);
3332

3433
// --- Metadata about the serialized/deserialized content
3534

@@ -72,7 +71,7 @@ public Slice serialize(T value) {
7271
}
7372

7473
@Override
75-
public T deserialize(Slice value) {
74+
public T deserialize(@NonNull Slice value) {
7675
return deserializer.asFunction().apply(value.toByteArray());
7776
}
7877
};
@@ -93,7 +92,7 @@ public Slice serialize(T value) {
9392
}
9493

9594
@Override
96-
public T deserialize(Slice value) {
95+
public T deserialize(@NonNull Slice value) {
9796
return deserializer.asFunction().apply(value.toByteArray());
9897
}
9998

@@ -112,7 +111,7 @@ public Slice serialize(T value) {
112111
}
113112

114113
@Override
115-
public T deserialize(Slice value) {
114+
public T deserialize(@NonNull Slice value) {
116115
return inner.deserialize(value);
117116
}
118117

@@ -132,7 +131,7 @@ public Slice serialize(Void value) {
132131
}
133132

134133
@Override
135-
public Void deserialize(Slice value) {
134+
public Void deserialize(@NonNull Slice value) {
136135
return null;
137136
}
138137

@@ -151,7 +150,7 @@ public Slice serialize(byte[] value) {
151150
}
152151

153152
@Override
154-
public byte[] deserialize(Slice value) {
153+
public byte[] deserialize(@NonNull Slice value) {
155154
return value.toByteArray();
156155
}
157156
};
@@ -165,7 +164,7 @@ public Slice serialize(Slice value) {
165164
}
166165

167166
@Override
168-
public Slice deserialize(Slice value) {
167+
public Slice deserialize(@NonNull Slice value) {
169168
return value;
170169
}
171170
};

gradle/libs.versions.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,16 @@
200200
ref = 'victools-json-schema'
201201

202202
[plugins]
203-
aggregate-javadoc = 'io.freefair.aggregate-javadoc:8.6'
204-
dependency-license-report = 'com.github.jk1.dependency-license-report:2.0'
203+
aggregate-javadoc = 'io.freefair.aggregate-javadoc:8.14'
204+
dependency-license-report = 'com.github.jk1.dependency-license-report:2.9'
205205
dokka = 'org.jetbrains.dokka:1.9.20'
206206
jib = 'com.google.cloud.tools.jib:3.4.4'
207207
jsonschema2pojo = 'org.jsonschema2pojo:1.2.1'
208208
nexus-publish = 'io.github.gradle-nexus.publish-plugin:1.3.0'
209209
openapi-generator = 'org.openapi.generator:7.5.0'
210210
protobuf = 'com.google.protobuf:0.9.4'
211211
shadow = 'com.gradleup.shadow:9.0.0-beta8'
212-
spotless = 'com.diffplug.spotless:6.25.0'
212+
spotless = 'com.diffplug.spotless:7.2.1'
213213
spring-dependency-management = 'io.spring.dependency-management:1.1.6'
214214

215215
[plugins.ksp]
@@ -221,14 +221,14 @@
221221
[versions]
222222
jackson = '2.18.1'
223223
junit = '5.10.2'
224-
kotlinx-coroutines = '1.9.0'
225-
kotlinx-serialization = '1.7.3'
226-
ksp = '2.0.21-1.0.28'
224+
kotlinx-coroutines = '1.10.2'
225+
kotlinx-serialization = '1.9.0'
226+
ksp = '2.2.10-2.0.2'
227227
log4j = '2.24.2'
228228
opentelemetry = '1.47.0'
229229
protobuf = '4.29.3'
230230
restate = '2.3.0-SNAPSHOT'
231231
schema-kenerator = '2.1.2'
232232
spring-boot = '3.4.5'
233-
vertx = '4.5.16'
233+
vertx = '4.5.18'
234234
victools-json-schema = '4.38.0'

sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/futures.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ internal abstract class BaseDurableFutureImpl<T : Any?> : DurableFuture<T> {
5151
}
5252

5353
try {
54-
@Suppress("UNCHECKED_CAST") return@simpleMap this.asyncResult().poll().getNow(null) as T
54+
@Suppress("UNCHECKED_CAST")
55+
return@simpleMap this.asyncResult().poll().getNow(null) as T
5556
} catch (e: ExecutionException) {
5657
throw e.cause ?: e // unwrap original cause from ExecutionException
5758
}

sdk-api/src/main/java/dev/restate/sdk/JsonSerdes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public Slice serialize(T value) {
191191
}
192192

193193
@Override
194-
public T deserialize(Slice value) {
194+
public T deserialize(@NonNull Slice value) {
195195
ByteArrayInputStream inputStream = new ByteArrayInputStream(value.toByteArray());
196196
try (JsonParser parser = JSON_FACTORY.createParser(inputStream)) {
197197
return deserializer.asFunction().apply(parser);

sdk-core/src/test/java/dev/restate/sdk/core/TestSerdes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.ByteArrayInputStream;
2020
import java.io.ByteArrayOutputStream;
2121
import java.io.IOException;
22+
import org.jspecify.annotations.NonNull;
2223
import org.jspecify.annotations.Nullable;
2324

2425
/**
@@ -124,7 +125,7 @@ public Slice serialize(@Nullable T value) {
124125
}
125126

126127
@Override
127-
public T deserialize(Slice value) {
128+
public T deserialize(@NonNull Slice value) {
128129
ByteArrayInputStream inputStream = new ByteArrayInputStream(value.toByteArray());
129130
try (JsonParser parser = JSON_FACTORY.createParser(inputStream)) {
130131
return deserializer.asFunction().apply(parser);

sdk-core/src/test/kotlin/dev/restate/sdk/core/vertx/ThreadTrampoliningTestSuite.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class ThreadTrampoliningTestSuite : TestDefinitions.TestSuite {
5151

5252
private fun checkBlockingComponentTrampolineExecutor(
5353
ctx: dev.restate.sdk.Context,
54-
_unused: Any
54+
_unused: Any?
5555
): Void? {
5656
val id = Thread.currentThread().id
5757
check(Vertx.currentContext() == null)

sdk-serde-kotlinx/src/main/kotlin/dev/restate/serde/kotlinx/KotlinSerializationSerdeFactory.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ constructor(
9696
val UNIT: Serde<Unit> =
9797
object : Serde<Unit> {
9898
// This is fine, it's less strict
99-
@Suppress("WRONG_NULLABILITY_FOR_JAVA_OVERRIDE")
10099
override fun serialize(value: Unit?): Slice {
101100
return Slice.EMPTY
102101
}
@@ -119,7 +118,6 @@ constructor(
119118
val schema = jsonSchemaFactory.generateSchema(json, serializer)
120119

121120
return object : Serde<T> {
122-
@Suppress("WRONG_NULLABILITY_FOR_JAVA_OVERRIDE")
123121
override fun serialize(value: T?): Slice {
124122
if (value == null) {
125123
return Slice.wrap(json.encodeToString(JsonNull.serializer(), JsonNull))

sdk-spring-boot-kotlin-starter/src/test/kotlin/dev/restate/sdk/springboot/kotlin/RestateHttpEndpointBeanTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class RestateHttpEndpointBeanTest {
5555
.readValue<EndpointManifestSchema>(response.body(), EndpointManifestSchema::class.java)
5656

5757
Assertions.assertThat<Service?>(endpointManifest.services)
58-
.map<String>({ it.name })
58+
.map<String> { it?.name }
5959
.containsOnly("greeter")
6060
}
6161
}

0 commit comments

Comments
 (0)