33import static org .jboss .jandex .AnnotationTarget .Kind .FIELD ;
44import static org .jboss .jandex .AnnotationTarget .Kind .METHOD ;
55
6+ import java .beans .ConstructorProperties ;
67import java .util .HashSet ;
78import java .util .List ;
89import java .util .Set ;
1516import jakarta .json .bind .annotation .JsonbTypeSerializer ;
1617import jakarta .json .bind .serializer .JsonbDeserializer ;
1718import jakarta .json .bind .serializer .JsonbSerializer ;
19+ import jakarta .json .bind .spi .JsonbProvider ;
1820
1921import org .eclipse .yasson .JsonBindingProvider ;
2022import org .eclipse .yasson .spi .JsonbComponentInstanceCreator ;
@@ -71,6 +73,9 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
7173 serviceProvider .produce (new ServiceProviderBuildItem (JsonbComponentInstanceCreator .class .getName (),
7274 QuarkusJsonbComponentInstanceCreator .class .getName ()));
7375
76+ // Accessed in jakarta.json.bind.spi.JsonbProvider.provider()
77+ serviceProvider .produce (new ServiceProviderBuildItem (JsonbProvider .class .getName ()));
78+
7479 // this needs to be registered manually since the runtime module is not indexed by Jandex
7580 additionalBeans .produce (new AdditionalBeanBuildItem (JsonbProducer .class ));
7681
@@ -91,6 +96,9 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
9196 reflectiveClass .produce (
9297 ReflectiveClassBuildItem .builder ("java.lang.String" ).build ());
9398
99+ // register `java.beans.ConstructorProperties` as it's accessed through `io.quarkus.jsonb.JsonbProducer.jsonb`
100+ reflectiveClass .produce (ReflectiveClassBuildItem .builder (ConstructorProperties .class ).build ());
101+
94102 // Necessary for Yasson versions using MethodHandles (2.0+)
95103 reflectiveMethod .produce (new ReflectiveMethodBuildItem (
96104 getClass ().getName (),
0 commit comments