Skip to content

Commit 6cf6636

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 6cf6636

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

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

Lines changed: 8 additions & 3 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,8 +16,8 @@
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

19-
import org.eclipse.yasson.JsonBindingProvider;
2021
import org.eclipse.yasson.spi.JsonbComponentInstanceCreator;
2122
import org.jboss.jandex.AnnotationInstance;
2223
import 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

Comments
 (0)