Skip to content

Commit 2f3331f

Browse files
Change to the Serde interface nullability constraints. These should not affect bytecode compatibility, but only linters using the jspecify annotations.
1 parent c9ef43d commit 2f3331f

File tree

7 files changed

+18
-17
lines changed

7 files changed

+18
-17
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import dev.restate.common.Slice;
1212
import dev.restate.common.function.ThrowingFunction;
1313
import java.util.Objects;
14+
import org.jetbrains.annotations.NotNull;
1415
import org.jspecify.annotations.*;
1516

1617
/**
@@ -24,12 +25,11 @@
2425
*
2526
* @see SerdeFactory
2627
*/
27-
@NullMarked
28-
public interface Serde<T extends @Nullable Object> extends TypeTag<T> {
28+
public interface Serde<T> extends TypeTag<T> {
2929

30-
Slice serialize(T value);
30+
Slice serialize(@Nullable T value);
3131

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

3434
// --- Metadata about the serialized/deserialized content
3535

@@ -72,7 +72,7 @@ public Slice serialize(T value) {
7272
}
7373

7474
@Override
75-
public T deserialize(Slice value) {
75+
public T deserialize(@NotNull Slice value) {
7676
return deserializer.asFunction().apply(value.toByteArray());
7777
}
7878
};
@@ -93,7 +93,7 @@ public Slice serialize(T value) {
9393
}
9494

9595
@Override
96-
public T deserialize(Slice value) {
96+
public T deserialize(@NotNull Slice value) {
9797
return deserializer.asFunction().apply(value.toByteArray());
9898
}
9999

@@ -112,7 +112,7 @@ public Slice serialize(T value) {
112112
}
113113

114114
@Override
115-
public T deserialize(Slice value) {
115+
public T deserialize(@NotNull Slice value) {
116116
return inner.deserialize(value);
117117
}
118118

@@ -132,7 +132,7 @@ public Slice serialize(Void value) {
132132
}
133133

134134
@Override
135-
public Void deserialize(Slice value) {
135+
public Void deserialize(@NotNull Slice value) {
136136
return null;
137137
}
138138

@@ -151,7 +151,7 @@ public Slice serialize(byte[] value) {
151151
}
152152

153153
@Override
154-
public byte[] deserialize(Slice value) {
154+
public byte[] deserialize(@NotNull Slice value) {
155155
return value.toByteArray();
156156
}
157157
};
@@ -165,7 +165,7 @@ public Slice serialize(Slice value) {
165165
}
166166

167167
@Override
168-
public Slice deserialize(Slice value) {
168+
public Slice deserialize(@NotNull Slice value) {
169169
return value;
170170
}
171171
};

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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.ByteArrayOutputStream;
2121
import java.io.IOException;
2222
import java.util.Map;
23+
import org.jetbrains.annotations.NotNull;
2324
import org.jspecify.annotations.NonNull;
2425

2526
/**
@@ -191,7 +192,7 @@ public Slice serialize(T value) {
191192
}
192193

193194
@Override
194-
public T deserialize(Slice value) {
195+
public T deserialize(@NotNull Slice value) {
195196
ByteArrayInputStream inputStream = new ByteArrayInputStream(value.toByteArray());
196197
try (JsonParser parser = JSON_FACTORY.createParser(inputStream)) {
197198
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.jetbrains.annotations.NotNull;
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(@NotNull 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))

test-services/src/main/kotlin/dev/restate/sdk/testservices/TestUtilsServiceImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class TestUtilsServiceImpl : TestUtilsService {
4141
override suspend fun countExecutedSideEffects(context: Context, increments: Int): Int {
4242
val invokedSideEffects = AtomicInteger(0)
4343

44-
for (i in 0 ..< increments) {
44+
for (i in 0..<increments) {
4545
context.runBlock { invokedSideEffects.incrementAndGet() }
4646
}
4747

0 commit comments

Comments
 (0)