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
19- import org .eclipse .yasson .JsonBindingProvider ;
2021import org .eclipse .yasson .spi .JsonbComponentInstanceCreator ;
2122import org .jboss .jandex .AnnotationInstance ;
2223import org .jboss .jandex .AnnotationTarget ;
@@ -63,14 +64,15 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
6364 BuildProducer <ServiceProviderBuildItem > serviceProvider ,
6465 BuildProducer <AdditionalBeanBuildItem > additionalBeans ,
6566 CombinedIndexBuildItem combinedIndexBuildItem ) {
66- reflectiveClass .produce (
67- ReflectiveClassBuildItem .builder (JsonBindingProvider .class .getName ()).build ());
6867
6968 resourceBundle .produce (new NativeImageResourceBundleBuildItem ("yasson-messages" ));
7069
7170 serviceProvider .produce (new ServiceProviderBuildItem (JsonbComponentInstanceCreator .class .getName (),
7271 QuarkusJsonbComponentInstanceCreator .class .getName ()));
7372
73+ // Accessed in jakarta.json.bind.spi.JsonbProvider.provider()
74+ serviceProvider .produce (ServiceProviderBuildItem .allProvidersFromClassPath (JsonbProvider .class .getName ()));
75+
7476 // this needs to be registered manually since the runtime module is not indexed by Jandex
7577 additionalBeans .produce (new AdditionalBeanBuildItem (JsonbProducer .class ));
7678
@@ -91,6 +93,9 @@ void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
9193 reflectiveClass .produce (
9294 ReflectiveClassBuildItem .builder ("java.lang.String" ).build ());
9395
96+ // register `java.beans.ConstructorProperties` as it's accessed through `io.quarkus.jsonb.JsonbProducer.jsonb`
97+ reflectiveClass .produce (ReflectiveClassBuildItem .builder (ConstructorProperties .class ).build ());
98+
9499 // Necessary for Yasson versions using MethodHandles (2.0+)
95100 reflectiveMethod .produce (new ReflectiveMethodBuildItem (
96101 getClass ().getName (),
0 commit comments