Skip to content

Commit c3d2fbb

Browse files
committed
Register elements accessed by jsonb for native access
* `jakarta.json.bind.spi.JsonbProvider` service * `java.beans.ConstructorProperties` class Relates to quarkusio#41995
1 parent 54619a8 commit c3d2fbb

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

extensions/jsonb/deployment/src/main/java/io/quarkus/jsonb/deployment/JsonbProcessor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.jboss.jandex.AnnotationTarget.Kind.FIELD;
44
import static org.jboss.jandex.AnnotationTarget.Kind.METHOD;
55

6+
import java.beans.ConstructorProperties;
67
import java.util.HashSet;
78
import java.util.List;
89
import java.util.Set;
@@ -15,6 +16,7 @@
1516
import jakarta.json.bind.annotation.JsonbTypeSerializer;
1617
import jakarta.json.bind.serializer.JsonbDeserializer;
1718
import jakarta.json.bind.serializer.JsonbSerializer;
19+
import jakarta.json.bind.spi.JsonbProvider;
1820

1921
import org.eclipse.yasson.JsonBindingProvider;
2022
import 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

Comments
 (0)