diff --git a/core/deployment/src/main/java/io/quarkus/deployment/steps/NativeImageAutoFeatureStep.java b/core/deployment/src/main/java/io/quarkus/deployment/steps/NativeImageAutoFeatureStep.java index 4709fdaac3ad3..5b136cd68bf8d 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/steps/NativeImageAutoFeatureStep.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/steps/NativeImageAutoFeatureStep.java @@ -567,8 +567,6 @@ private MethodDescriptor createRegisterSerializationForClassMethod(ClassCreator greaterThan21_3.loadNull(), registerArgs); greaterThan21_3.returnValue(null); - ResultHandle objectClass = tc.invokeStaticMethod(forNameMethodDescriptor, tc.load("java.lang.Object"), - tc.load(false), tccl); ResultHandle serializationRegistryClass = tc.invokeStaticMethod(forNameMethodDescriptor, tc.load("com.oracle.svm.core.jdk.serialize.SerializationRegistry"), tc.load(false), tccl); @@ -670,7 +668,7 @@ private MethodDescriptor createRegisterSerializationForClassMethod(ClassCreator serializationSupport, clazz, newSerializationConstructorClass, accessor); ResultHandle addReflectionsArgs2 = tc.newArray(Class.class, tc.load(2)); tc.writeArrayValue(addReflectionsArgs2, 0, clazz); - tc.writeArrayValue(addReflectionsArgs2, 1, objectClass); + tc.writeArrayValue(addReflectionsArgs2, 1, newSerializationConstructorClass); tc.invokeVirtualMethod(invokeMethodDescriptor, addReflectionsLookupMethod, tc.loadNull(), addReflectionsArgs2); addSerializationForClass.returnValue(null); diff --git a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/SerializationTestEndpoint.java b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/SerializationTestEndpoint.java index 9e4b53846f3f0..033485cfee637 100644 --- a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/SerializationTestEndpoint.java +++ b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/SerializationTestEndpoint.java @@ -6,6 +6,8 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -42,6 +44,7 @@ private void reflectiveSetterInvoke(HttpServletResponse resp) throws IOException ExternalizablePerson ep = new ExternalizablePerson(); ep.setName("Sheldon 2.0"); instance.setExternalizablePerson(ep); + instance.setList(new ArrayList<>(List.of("Hello World!"))); ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream os = new ObjectOutputStream(out); os.writeObject(instance); @@ -49,7 +52,8 @@ private void reflectiveSetterInvoke(HttpServletResponse resp) throws IOException ObjectInputStream is = new ObjectInputStream(bais); SomeSerializationObject result = (SomeSerializationObject) is.readObject(); if (result.getPerson().getName().equals("Sheldon") - && result.getExternalizablePerson().getName().equals("Sheldon 2.0")) { + && result.getExternalizablePerson().getName().equals("Sheldon 2.0") + && result.getList().toString().equals("[Hello World!]")) { resp.getWriter().write("OK"); } else { reportException("Serialized output differs from input", null, resp); diff --git a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SerializationConfig.java b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SerializationConfig.java index 4b95b0b8597ef..f2124ea4135ef 100644 --- a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SerializationConfig.java +++ b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SerializationConfig.java @@ -1,8 +1,11 @@ package io.quarkus.it.corestuff.serialization; +import java.util.ArrayList; +import java.util.List; + import io.quarkus.runtime.annotations.RegisterForReflection; -@RegisterForReflection(targets = String.class, serialization = true) +@RegisterForReflection(targets = { List.class, ArrayList.class, String.class }, serialization = true) public class SerializationConfig { } diff --git a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SomeSerializationObject.java b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SomeSerializationObject.java index a5d8b3f32c412..43ab1896f8787 100644 --- a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SomeSerializationObject.java +++ b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/serialization/SomeSerializationObject.java @@ -1,6 +1,7 @@ package io.quarkus.it.corestuff.serialization; import java.io.Serializable; +import java.util.List; import io.quarkus.runtime.annotations.RegisterForReflection; @@ -9,6 +10,7 @@ public class SomeSerializationObject implements Serializable { private Person person; private ExternalizablePerson externalizablePerson; + private List list; public Person getPerson() { return person; @@ -25,4 +27,12 @@ public ExternalizablePerson getExternalizablePerson() { public void setExternalizablePerson(ExternalizablePerson externalizablePerson) { this.externalizablePerson = externalizablePerson; } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } }