99import java .util .List ;
1010import java .util .Map ;
1111
12- import jakarta .enterprise .context .ApplicationScoped ;
1312import jakarta .inject .Singleton ;
1413
1514import org .eclipse .microprofile .graphql .Input ;
2625import io .quarkus .arc .deployment .BeanArchiveIndexBuildItem ;
2726import io .quarkus .arc .deployment .BeanContainerBuildItem ;
2827import io .quarkus .arc .deployment .SyntheticBeanBuildItem ;
28+ import io .quarkus .arc .deployment .SyntheticBeansRuntimeInitBuildItem ;
29+ import io .quarkus .arc .processor .BuiltinScope ;
2930import io .quarkus .deployment .Feature ;
3031import io .quarkus .deployment .annotations .BuildProducer ;
3132import io .quarkus .deployment .annotations .BuildStep ;
33+ import io .quarkus .deployment .annotations .Consume ;
3234import io .quarkus .deployment .annotations .Record ;
3335import io .quarkus .deployment .builditem .AdditionalIndexedClassesBuildItem ;
3436import io .quarkus .deployment .builditem .CombinedIndexBuildItem ;
4042import io .quarkus .deployment .builditem .nativeimage .ServiceProviderBuildItem ;
4143import io .quarkus .runtime .RuntimeValue ;
4244import io .quarkus .smallrye .graphql .client .runtime .GraphQLClientBuildConfig ;
45+ import io .quarkus .smallrye .graphql .client .runtime .GraphQLClientCertificateUpdateEventListener ;
4346import io .quarkus .smallrye .graphql .client .runtime .GraphQLClientSupport ;
4447import io .quarkus .smallrye .graphql .client .runtime .GraphQLClientsConfig ;
4548import io .quarkus .smallrye .graphql .client .runtime .SmallRyeGraphQLClientRecorder ;
@@ -52,6 +55,7 @@ public class SmallRyeGraphQLClientProcessor {
5255 private static final DotName GRAPHQL_CLIENT_API = DotName
5356 .createSimple ("io.smallrye.graphql.client.typesafe.api.GraphQLClientApi" );
5457 private static final DotName GRAPHQL_CLIENT = DotName .createSimple ("io.smallrye.graphql.client.GraphQLClient" );
58+ private static final String CERTIFICATE_UPDATE_EVENT_LISTENER = GraphQLClientCertificateUpdateEventListener .class .getName ();
5559 private static final String NAMED_DYNAMIC_CLIENTS = "io.smallrye.graphql.client.impl.dynamic.cdi.NamedDynamicClients" ;
5660
5761 @ BuildStep
@@ -70,23 +74,37 @@ void setupServiceProviders(BuildProducer<ServiceProviderBuildItem> services) {
7074 .allProvidersFromClassPath ("io.smallrye.graphql.client.typesafe.api.TypesafeGraphQLClientBuilder" ));
7175 services .produce (ServiceProviderBuildItem
7276 .allProvidersFromClassPath ("io.smallrye.graphql.client.dynamic.api.DynamicGraphQLClientBuilder" ));
73- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Argument" ));
74- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Directive" ));
7577 services .produce (
76- ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.DirectiveArgument" ));
77- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Document" ));
78- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Enum" ));
79- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Field" ));
80- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Fragment" ));
78+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.ArgumentFactory" ));
8179 services .produce (
82- ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.FragmentReference" ));
83- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.InlineFragment" ));
84- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.InputObject" ));
80+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.DirectiveFactory" ));
8581 services .produce (
86- ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.InputObjectField" ));
87- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Operation" ));
88- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.Variable" ));
89- services .produce (ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.VariableType" ));
82+ ServiceProviderBuildItem
83+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.DirectiveArgumentFactory" ));
84+ services .produce (
85+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.DocumentFactory" ));
86+ services .produce (
87+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.EnumFactory" ));
88+ services .produce (
89+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.FieldFactory" ));
90+ services .produce (
91+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.FragmentFactory" ));
92+ services .produce (
93+ ServiceProviderBuildItem
94+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.FragmentReferenceFactory" ));
95+ services .produce (ServiceProviderBuildItem
96+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.InlineFragmentFactory" ));
97+ services .produce (ServiceProviderBuildItem
98+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.InputObjectFactory" ));
99+ services .produce (
100+ ServiceProviderBuildItem
101+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.InputObjectFieldFactory" ));
102+ services .produce (
103+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.OperationFactory" ));
104+ services .produce (
105+ ServiceProviderBuildItem .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.VariableFactory" ));
106+ services .produce (ServiceProviderBuildItem
107+ .allProvidersFromClassPath ("io.smallrye.graphql.client.core.factory.VariableTypeFactory" ));
90108 }
91109
92110 @ BuildStep
@@ -124,10 +142,11 @@ void initializeTypesafeClient(BeanArchiveIndexBuildItem index,
124142 }
125143 }
126144
145+ BuiltinScope scope = BuiltinScope .from (index .getIndex ().getClassByName (apiClass ));
127146 // an equivalent of io.smallrye.graphql.client.typesafe.impl.cdi.GraphQlClientBean that produces typesafe client instances
128147 SyntheticBeanBuildItem bean = SyntheticBeanBuildItem .configure (apiClassInfo .name ())
129148 .addType (apiClassInfo .name ())
130- .scope (ApplicationScoped . class )
149+ .scope (scope == null ? BuiltinScope . APPLICATION . getInfo () : scope . getInfo () )
131150 .addInjectionPoint (ClassType .create (DotName .createSimple (ClientModels .class )))
132151 .createWith (recorder .typesafeClientSupplier (apiClass ))
133152 .unremovable ()
@@ -165,13 +184,12 @@ void setTypesafeApiClasses(BeanArchiveIndexBuildItem index,
165184 */
166185 @ BuildStep
167186 @ Record (RUNTIME_INIT )
168- GraphQLClientConfigInitializedBuildItem mergeClientConfigurations ( BuildProducer < SyntheticBeanBuildItem > syntheticBeans ,
169- SmallRyeGraphQLClientRecorder recorder ,
187+ @ Consume ( SyntheticBeansRuntimeInitBuildItem . class )
188+ GraphQLClientConfigInitializedBuildItem mergeClientConfigurations ( SmallRyeGraphQLClientRecorder recorder ,
170189 GraphQLClientsConfig quarkusConfig ,
171190 BeanArchiveIndexBuildItem index ) {
172191 // to store config keys of all clients found in the application code
173192 List <String > knownConfigKeys = new ArrayList <>();
174-
175193 Map <String , String > shortNamesToQualifiedNames = new HashMap <>();
176194 for (AnnotationInstance annotation : index .getIndex ().getAnnotations (GRAPHQL_CLIENT_API )) {
177195 ClassInfo clazz = annotation .target ().asClass ();
@@ -241,4 +259,9 @@ void setAdditionalClassesToIndex(BuildProducer<AdditionalIndexedClassesBuildItem
241259 }
242260 }
243261
262+ @ BuildStep
263+ void registerCertificateUpdateEventListener (BuildProducer <AdditionalBeanBuildItem > additionalBeans ) {
264+ additionalBeans .produce (new AdditionalBeanBuildItem (CERTIFICATE_UPDATE_EVENT_LISTENER ));
265+ }
266+
244267}
0 commit comments