diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index bd2c3b58..002f2bc2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,7 +9,7 @@ repositories { dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21") - implementation("org.jetbrains.kotlin:kotlin-serialization:2.0.21") - implementation("com.diffplug.spotless:spotless-plugin-gradle:6.25.0") + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10") + implementation("org.jetbrains.kotlin:kotlin-serialization:2.2.10") + implementation("com.diffplug.spotless:spotless-plugin-gradle:7.2.1") } \ No newline at end of file diff --git a/client/src/main/java/dev/restate/client/base/BaseClient.java b/client/src/main/java/dev/restate/client/base/BaseClient.java index 773e7a08..d9742a45 100644 --- a/client/src/main/java/dev/restate/client/base/BaseClient.java +++ b/client/src/main/java/dev/restate/client/base/BaseClient.java @@ -30,7 +30,6 @@ import java.util.stream.Stream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.jetbrains.annotations.NotNull; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; @@ -358,7 +357,7 @@ protected abstract CompletableFuture doPostRequest( protected abstract CompletableFuture doGetRequest( URI target, Stream> headers, ResponseMapper responseMapper); - private @NotNull ResponseMapper> callResponseMapper( + private @NonNull ResponseMapper> callResponseMapper( String requestMethod, URI requestUri, Serde resSerde) { return (statusCode, responseHeaders, responseBody) -> { if (statusCode >= 300) { @@ -389,7 +388,7 @@ protected abstract CompletableFuture doGetRequest( }; } - private @NotNull ResponseMapper>> getOutputResponseMapper( + private @NonNull ResponseMapper>> getOutputResponseMapper( String requestMethod, URI requestUri, Serde resSerde) { return (statusCode, responseHeaders, responseBody) -> { if (statusCode == 470) { diff --git a/common/src/main/java/dev/restate/serde/Serde.java b/common/src/main/java/dev/restate/serde/Serde.java index 5da8d401..7f4e6af9 100644 --- a/common/src/main/java/dev/restate/serde/Serde.java +++ b/common/src/main/java/dev/restate/serde/Serde.java @@ -24,12 +24,11 @@ * * @see SerdeFactory */ -@NullMarked public interface Serde extends TypeTag { Slice serialize(T value); - T deserialize(Slice value); + T deserialize(@NonNull Slice value); // --- Metadata about the serialized/deserialized content @@ -72,7 +71,7 @@ public Slice serialize(T value) { } @Override - public T deserialize(Slice value) { + public T deserialize(@NonNull Slice value) { return deserializer.asFunction().apply(value.toByteArray()); } }; @@ -93,7 +92,7 @@ public Slice serialize(T value) { } @Override - public T deserialize(Slice value) { + public T deserialize(@NonNull Slice value) { return deserializer.asFunction().apply(value.toByteArray()); } @@ -112,7 +111,7 @@ public Slice serialize(T value) { } @Override - public T deserialize(Slice value) { + public T deserialize(@NonNull Slice value) { return inner.deserialize(value); } @@ -132,7 +131,7 @@ public Slice serialize(Void value) { } @Override - public Void deserialize(Slice value) { + public Void deserialize(@NonNull Slice value) { return null; } @@ -151,7 +150,7 @@ public Slice serialize(byte[] value) { } @Override - public byte[] deserialize(Slice value) { + public byte[] deserialize(@NonNull Slice value) { return value.toByteArray(); } }; @@ -165,7 +164,7 @@ public Slice serialize(Slice value) { } @Override - public Slice deserialize(Slice value) { + public Slice deserialize(@NonNull Slice value) { return value; } }; diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1574199d..e9c928ce 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -200,8 +200,8 @@ ref = 'victools-json-schema' [plugins] - aggregate-javadoc = 'io.freefair.aggregate-javadoc:8.6' - dependency-license-report = 'com.github.jk1.dependency-license-report:2.0' + aggregate-javadoc = 'io.freefair.aggregate-javadoc:8.14' + dependency-license-report = 'com.github.jk1.dependency-license-report:2.9' dokka = 'org.jetbrains.dokka:1.9.20' jib = 'com.google.cloud.tools.jib:3.4.4' jsonschema2pojo = 'org.jsonschema2pojo:1.2.1' @@ -209,7 +209,7 @@ openapi-generator = 'org.openapi.generator:7.5.0' protobuf = 'com.google.protobuf:0.9.4' shadow = 'com.gradleup.shadow:9.0.0-beta8' - spotless = 'com.diffplug.spotless:6.25.0' + spotless = 'com.diffplug.spotless:7.2.1' spring-dependency-management = 'io.spring.dependency-management:1.1.6' [plugins.ksp] @@ -221,14 +221,14 @@ [versions] jackson = '2.18.1' junit = '5.10.2' - kotlinx-coroutines = '1.9.0' - kotlinx-serialization = '1.7.3' - ksp = '2.0.21-1.0.28' + kotlinx-coroutines = '1.10.2' + kotlinx-serialization = '1.9.0' + ksp = '2.2.10-2.0.2' log4j = '2.24.2' opentelemetry = '1.47.0' protobuf = '4.29.3' restate = '2.3.0-SNAPSHOT' schema-kenerator = '2.1.2' spring-boot = '3.4.5' - vertx = '4.5.16' + vertx = '4.5.18' victools-json-schema = '4.38.0' diff --git a/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/futures.kt b/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/futures.kt index 827f754a..12b9fbb5 100644 --- a/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/futures.kt +++ b/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/futures.kt @@ -51,7 +51,8 @@ internal abstract class BaseDurableFutureImpl : DurableFuture { } try { - @Suppress("UNCHECKED_CAST") return@simpleMap this.asyncResult().poll().getNow(null) as T + @Suppress("UNCHECKED_CAST") + return@simpleMap this.asyncResult().poll().getNow(null) as T } catch (e: ExecutionException) { throw e.cause ?: e // unwrap original cause from ExecutionException } diff --git a/sdk-api/src/main/java/dev/restate/sdk/JsonSerdes.java b/sdk-api/src/main/java/dev/restate/sdk/JsonSerdes.java index 165445e3..0d948646 100644 --- a/sdk-api/src/main/java/dev/restate/sdk/JsonSerdes.java +++ b/sdk-api/src/main/java/dev/restate/sdk/JsonSerdes.java @@ -191,7 +191,7 @@ public Slice serialize(T value) { } @Override - public T deserialize(Slice value) { + public T deserialize(@NonNull Slice value) { ByteArrayInputStream inputStream = new ByteArrayInputStream(value.toByteArray()); try (JsonParser parser = JSON_FACTORY.createParser(inputStream)) { return deserializer.asFunction().apply(parser); diff --git a/sdk-core/src/test/java/dev/restate/sdk/core/TestSerdes.java b/sdk-core/src/test/java/dev/restate/sdk/core/TestSerdes.java index 55e187fb..a6011a98 100644 --- a/sdk-core/src/test/java/dev/restate/sdk/core/TestSerdes.java +++ b/sdk-core/src/test/java/dev/restate/sdk/core/TestSerdes.java @@ -19,6 +19,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; /** @@ -124,7 +125,7 @@ public Slice serialize(@Nullable T value) { } @Override - public T deserialize(Slice value) { + public T deserialize(@NonNull Slice value) { ByteArrayInputStream inputStream = new ByteArrayInputStream(value.toByteArray()); try (JsonParser parser = JSON_FACTORY.createParser(inputStream)) { return deserializer.asFunction().apply(parser); diff --git a/sdk-core/src/test/kotlin/dev/restate/sdk/core/vertx/ThreadTrampoliningTestSuite.kt b/sdk-core/src/test/kotlin/dev/restate/sdk/core/vertx/ThreadTrampoliningTestSuite.kt index d50788c5..46a2a4bf 100644 --- a/sdk-core/src/test/kotlin/dev/restate/sdk/core/vertx/ThreadTrampoliningTestSuite.kt +++ b/sdk-core/src/test/kotlin/dev/restate/sdk/core/vertx/ThreadTrampoliningTestSuite.kt @@ -51,7 +51,7 @@ class ThreadTrampoliningTestSuite : TestDefinitions.TestSuite { private fun checkBlockingComponentTrampolineExecutor( ctx: dev.restate.sdk.Context, - _unused: Any + _unused: Any? ): Void? { val id = Thread.currentThread().id check(Vertx.currentContext() == null) diff --git a/sdk-serde-kotlinx/src/main/kotlin/dev/restate/serde/kotlinx/KotlinSerializationSerdeFactory.kt b/sdk-serde-kotlinx/src/main/kotlin/dev/restate/serde/kotlinx/KotlinSerializationSerdeFactory.kt index db1ce7ec..59b59900 100644 --- a/sdk-serde-kotlinx/src/main/kotlin/dev/restate/serde/kotlinx/KotlinSerializationSerdeFactory.kt +++ b/sdk-serde-kotlinx/src/main/kotlin/dev/restate/serde/kotlinx/KotlinSerializationSerdeFactory.kt @@ -96,7 +96,6 @@ constructor( val UNIT: Serde = object : Serde { // This is fine, it's less strict - @Suppress("WRONG_NULLABILITY_FOR_JAVA_OVERRIDE") override fun serialize(value: Unit?): Slice { return Slice.EMPTY } @@ -119,7 +118,6 @@ constructor( val schema = jsonSchemaFactory.generateSchema(json, serializer) return object : Serde { - @Suppress("WRONG_NULLABILITY_FOR_JAVA_OVERRIDE") override fun serialize(value: T?): Slice { if (value == null) { return Slice.wrap(json.encodeToString(JsonNull.serializer(), JsonNull)) diff --git a/sdk-spring-boot-kotlin-starter/src/test/kotlin/dev/restate/sdk/springboot/kotlin/RestateHttpEndpointBeanTest.kt b/sdk-spring-boot-kotlin-starter/src/test/kotlin/dev/restate/sdk/springboot/kotlin/RestateHttpEndpointBeanTest.kt index 5bb7c638..e1fc078c 100644 --- a/sdk-spring-boot-kotlin-starter/src/test/kotlin/dev/restate/sdk/springboot/kotlin/RestateHttpEndpointBeanTest.kt +++ b/sdk-spring-boot-kotlin-starter/src/test/kotlin/dev/restate/sdk/springboot/kotlin/RestateHttpEndpointBeanTest.kt @@ -55,7 +55,7 @@ class RestateHttpEndpointBeanTest { .readValue(response.body(), EndpointManifestSchema::class.java) Assertions.assertThat(endpointManifest.services) - .map({ it.name }) + .map { it?.name } .containsOnly("greeter") } } diff --git a/test-services/src/main/kotlin/dev/restate/sdk/testservices/TestUtilsServiceImpl.kt b/test-services/src/main/kotlin/dev/restate/sdk/testservices/TestUtilsServiceImpl.kt index 07dbd9f2..d040e1de 100644 --- a/test-services/src/main/kotlin/dev/restate/sdk/testservices/TestUtilsServiceImpl.kt +++ b/test-services/src/main/kotlin/dev/restate/sdk/testservices/TestUtilsServiceImpl.kt @@ -41,7 +41,7 @@ class TestUtilsServiceImpl : TestUtilsService { override suspend fun countExecutedSideEffects(context: Context, increments: Int): Int { val invokedSideEffects = AtomicInteger(0) - for (i in 0 ..< increments) { + for (i in 0..