Skip to content

Commit

Permalink
Fix #15 to work with register class id (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhfeng authored Nov 5, 2024
1 parent 7c07dba commit 4bcb233
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@

import io.quarkiverse.fury.FurySerialization;

@FurySerialization
@FurySerialization(classId = 300)
public record Foo(int f1, String f2, List<String> f3, Map<String, Long> f4) {
}
13 changes: 7 additions & 6 deletions runtime/src/main/java/io/quarkiverse/fury/FuryRecorder.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ public RuntimeValue<BaseFury> createFury(
}

public void registerClass(
final RuntimeValue<BaseFury> fury, final Class<?> clazz,
final RuntimeValue<BaseFury> furyValue, final Class<?> clazz,
final int classId, Class<? extends Serializer> serializer) {
BaseFury furyValue = fury.getValue();
BaseFury fury = furyValue.getValue();
if (classId > 0) {
Preconditions.checkArgument(
classId >= 256 && classId <= Short.MAX_VALUE,
Expand All @@ -38,12 +38,12 @@ public void registerClass(
Short.MAX_VALUE);
Class<?> registeredClass;
if (fury instanceof ThreadSafeFury) {
ThreadSafeFury threadSafeFury = (ThreadSafeFury) furyValue;
ThreadSafeFury threadSafeFury = (ThreadSafeFury) fury;
registeredClass = (threadSafeFury).execute(f -> f.getClassResolver().getRegisteredClass((short) classId));
// Generate serializer bytecode.
threadSafeFury.execute(f -> f.getClassResolver().getSerializerClass(clazz));
} else {
ClassResolver classResolver = ((Fury) furyValue).getClassResolver();
ClassResolver classResolver = ((Fury) fury).getClassResolver();
registeredClass = classResolver.getRegisteredClass((short) classId);
// Generate serializer bytecode.
classResolver.getSerializerClass(clazz);
Expand All @@ -53,12 +53,13 @@ public void registerClass(
"ClassId %s has been registered for class %s",
classId,
registeredClass);
fury.register(clazz, (short) classId);
} else {
// Generate serializer bytecode.
furyValue.register(clazz, true);
fury.register(clazz, true);
}
if (serializer != null) {
furyValue.registerSerializer(clazz, serializer);
fury.registerSerializer(clazz, serializer);
}
}
}

0 comments on commit 4bcb233

Please sign in to comment.