diff --git a/cloudwatch/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchProcessor.java b/cloudwatch/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchProcessor.java index d25cdb630..617d8fb90 100644 --- a/cloudwatch/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchProcessor.java +++ b/cloudwatch/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchProcessor.java @@ -65,11 +65,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -80,7 +87,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -88,7 +95,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, CloudWatchRecorder recorder, + void setupApacheSyncTransport(List amazonClients, CloudWatchRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -101,7 +108,7 @@ void setupApacheSyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, CloudWatchRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, CloudWatchRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -114,7 +121,8 @@ void setupAwsCrtSyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, CloudWatchRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + CloudWatchRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -127,7 +135,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, CloudWatchRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, CloudWatchRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -141,7 +149,8 @@ void setupNettyAsyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, CloudWatchRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + CloudWatchRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/cloudwatchlogs/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchLogsProcessor.java b/cloudwatchlogs/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchLogsProcessor.java index e9c6626e4..908db8189 100644 --- a/cloudwatchlogs/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchLogsProcessor.java +++ b/cloudwatchlogs/deployment/src/main/java/io/quarkus/amazon/cloudwatch/deployment/CloudWatchLogsProcessor.java @@ -65,11 +65,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -80,7 +87,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -88,7 +95,8 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, CloudWatchLogsRecorder recorder, + void setupApacheSyncTransport(List amazonClients, + CloudWatchLogsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -101,7 +109,8 @@ void setupApacheSyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, CloudWatchLogsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, + CloudWatchLogsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -114,7 +123,8 @@ void setupAwsCrtSyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, CloudWatchLogsRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + CloudWatchLogsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -127,7 +137,8 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, CloudWatchLogsRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, + CloudWatchLogsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -141,7 +152,8 @@ void setupNettyAsyncTransport(List amazonClients, CloudWa @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, CloudWatchLogsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + CloudWatchLogsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/cognito-user-pools/deployment/src/main/java/io/quarkus/amazon/cognitouserpools/deployment/CognitoUserPoolsProcessor.java b/cognito-user-pools/deployment/src/main/java/io/quarkus/amazon/cognitouserpools/deployment/CognitoUserPoolsProcessor.java index 960e46f76..d8c2c205b 100644 --- a/cognito-user-pools/deployment/src/main/java/io/quarkus/amazon/cognitouserpools/deployment/CognitoUserPoolsProcessor.java +++ b/cognito-user-pools/deployment/src/main/java/io/quarkus/amazon/cognitouserpools/deployment/CognitoUserPoolsProcessor.java @@ -9,13 +9,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, + void setupApacheSyncTransport(List amazonClients, CognitoUserPoolsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -117,7 +124,8 @@ void setupApacheSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, CognitoUserPoolsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, + CognitoUserPoolsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -130,7 +138,7 @@ void setupAwsCrtSyncTransport(List amazonClients, Cognito @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, + void setupUrlConnectionSyncTransport(List amazonClients, CognitoUserPoolsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -144,7 +152,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, + void setupNettyAsyncTransport(List amazonClients, CognitoUserPoolsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, @@ -159,7 +167,8 @@ void setupNettyAsyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, CognitoUserPoolsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + CognitoUserPoolsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AbstractAmazonServiceProcessor.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AbstractAmazonServiceProcessor.java index 8a6ba1d86..830e90076 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AbstractAmazonServiceProcessor.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AbstractAmazonServiceProcessor.java @@ -1,7 +1,6 @@ package io.quarkus.amazon.common.deployment; import java.util.Collection; -import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.concurrent.ScheduledExecutorService; @@ -11,7 +10,6 @@ import jakarta.enterprise.context.ApplicationScoped; -import org.jboss.jandex.AnnotationInstance; import org.jboss.jandex.ClassType; import org.jboss.jandex.DotName; import org.jboss.jandex.ParameterizedType; @@ -19,7 +17,6 @@ import io.netty.channel.EventLoopGroup; import io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkTelemetry; -import io.quarkus.amazon.common.AmazonClient; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; import io.quarkus.amazon.common.runtime.AmazonClientAwsCrtTransportRecorder; import io.quarkus.amazon.common.runtime.AmazonClientCommonRecorder; @@ -29,7 +26,6 @@ import io.quarkus.amazon.common.runtime.AmazonClientUrlConnectionTransportRecorder; import io.quarkus.amazon.common.runtime.AsyncHttpClientBuildTimeConfig; import io.quarkus.amazon.common.runtime.AsyncHttpClientConfig; -import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.amazon.common.runtime.HasAmazonClientRuntimeConfig; import io.quarkus.amazon.common.runtime.HasSdkBuildTimeConfig; import io.quarkus.amazon.common.runtime.SdkAutoCloseableDestroyer; @@ -38,10 +34,10 @@ import io.quarkus.amazon.common.runtime.SyncHttpClientConfig; import io.quarkus.arc.deployment.BeanRegistrationPhaseBuildItem; import io.quarkus.arc.deployment.SyntheticBeanBuildItem; -import io.quarkus.arc.deployment.SyntheticBeanBuildItem.ExtendedBeanConfigurator; import io.quarkus.arc.processor.DotNames; import io.quarkus.arc.processor.InjectionPointInfo; import io.quarkus.deployment.annotations.BuildProducer; +import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.ExecutorBuildItem; import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; @@ -54,10 +50,6 @@ abstract public class AbstractAmazonServiceProcessor { - private static final DotName AWS_CLIENT_NAME = DotName.createSimple(io.quarkus.amazon.common.AmazonClient.class.getName()); - private static final DotName AWS_CLIENT_BUILDER_NAME = DotName - .createSimple(io.quarkus.amazon.common.AmazonClientBuilder.class.getName()); - abstract protected String amazonServiceClientName(); abstract protected String configName(); @@ -72,57 +64,50 @@ protected DotName presignerClientName() { abstract protected String builtinInterceptorsPath(); - private void registerNamedClientInjection(HashSet set, InjectionPointInfo injectionPoint) { - var named = injectionPoint.getRequiredQualifier(AWS_CLIENT_NAME); - if (named != null) { - set.add(named.value("value").asString()); - } else { - set.add(ClientUtil.DEFAULT_CLIENT_NAME); - } - } - - protected void discoverClient(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + protected void discoverClientInjectionPointsInternal(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - Optional syncClassName = Optional.empty(); - Optional asyncClassName = Optional.empty(); - HashSet syncNamedSet = new HashSet<>(); - HashSet asyncNamedSet = new HashSet<>(); - HashSet presignerNamedSet = new HashSet<>(); - // Discover all clients injections in order to determine if async or sync client - // is required + // Discover all clients injections for (InjectionPointInfo injectionPoint : beanRegistrationPhase.getInjectionPoints()) { Type injectedType = getInjectedType(injectionPoint); if (syncClientName().equals(injectedType.name())) { - syncClassName = Optional.of(syncClientName()); - registerNamedClientInjection(syncNamedSet, injectionPoint); + requireClientInjectionProducer + .produce(new RequireAmazonClientInjectionBuildItem(syncClientName(), + ClientDeploymentUtil.getNamedClientInjection(injectionPoint))); } if (asyncClientName().equals(injectedType.name())) { - asyncClassName = Optional.of(asyncClientName()); - registerNamedClientInjection(asyncNamedSet, injectionPoint); + requireClientInjectionProducer + .produce(new RequireAmazonClientInjectionBuildItem(asyncClientName(), + ClientDeploymentUtil.getNamedClientInjection(injectionPoint))); } if (presignerClientName() != null && presignerClientName().equals(injectedType.name())) { - registerNamedClientInjection(presignerNamedSet, injectionPoint); + requireClientInjectionProducer + .produce(new RequireAmazonClientInjectionBuildItem(presignerClientName(), + ClientDeploymentUtil.getNamedClientInjection(injectionPoint))); } } - if (syncClassName.isPresent() || asyncClassName.isPresent()) { - requireClientProducer.produce(new RequireAmazonClientBuildItem(syncClassName, asyncClassName)); - } + } - if (!syncNamedSet.isEmpty()) { - requireClientInjectionProducer - .produce(new RequireAmazonClientInjectionBuildItem(syncClientName(), syncNamedSet)); - } - if (!asyncNamedSet.isEmpty()) { - requireClientInjectionProducer - .produce(new RequireAmazonClientInjectionBuildItem(asyncClientName(), asyncNamedSet)); + @BuildStep + protected void discoverClient( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + Optional syncClassName = Optional.empty(); + Optional asyncClassName = Optional.empty(); + + for (RequireAmazonClientInjectionBuildItem requireInjectionPoint : amazonClientInjectionPoints) { + if (syncClientName().equals(requireInjectionPoint.getClassName())) { + syncClassName = Optional.of(syncClientName()); + } + if (asyncClientName().equals(requireInjectionPoint.getClassName())) { + asyncClassName = Optional.of(asyncClientName()); + } } - if (!presignerNamedSet.isEmpty()) { - requireClientInjectionProducer - .produce(new RequireAmazonClientInjectionBuildItem(presignerClientName(), presignerNamedSet)); + + if (syncClassName.isPresent() || asyncClassName.isPresent()) { + requireClientProducer.produce(new RequireAmazonClientBuildItem(syncClassName, asyncClassName)); } } @@ -134,7 +119,7 @@ protected void discoverTelemetry(BuildProducer } protected void setupClient(List clientRequirements, - BuildProducer clientProducer, + BuildProducer clientProducer, SdkBuildTimeConfig buildTimeSdkConfig, SyncHttpClientBuildTimeConfig buildTimeSyncConfig, AsyncHttpClientBuildTimeConfig buildTimeAsyncConfig) { @@ -152,7 +137,7 @@ protected void setupClient(List clientRequirements } } if (syncClassName.isPresent() || asyncClassName.isPresent()) { - clientProducer.produce(new AmazonClientBuildItem(syncClassName, asyncClassName, configName(), + clientProducer.produce(new RequireAmazonClientTransportBuilderBuildItem(syncClassName, asyncClassName, configName(), buildTimeSdkConfig, buildTimeSyncConfig, buildTimeAsyncConfig)); } } @@ -167,13 +152,13 @@ protected void setupExtension( interceptors.produce(new AmazonClientInterceptorsPathBuildItem(builtinInterceptorsPath())); } - protected void createApacheSyncTransportBuilder(List amazonClients, + protected void createApacheSyncTransportBuilder(List amazonClients, AmazonClientApacheTransportRecorder recorder, SyncHttpClientBuildTimeConfig buildSyncConfig, RuntimeValue syncConfig, BuildProducer clientSyncTransports) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); @@ -193,13 +178,13 @@ protected void createApacheSyncTransportBuilder(List amaz }); } - protected void createAwsCrtSyncTransportBuilder(List amazonClients, + protected void createAwsCrtSyncTransportBuilder(List amazonClients, AmazonClientAwsCrtTransportRecorder recorder, SyncHttpClientBuildTimeConfig buildSyncConfig, RuntimeValue syncConfig, BuildProducer clientSyncTransports) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); @@ -219,13 +204,13 @@ protected void createAwsCrtSyncTransportBuilder(List amaz }); } - protected void createUrlConnectionSyncTransportBuilder(List amazonClients, + protected void createUrlConnectionSyncTransportBuilder(List amazonClients, AmazonClientUrlConnectionTransportRecorder recorder, SyncHttpClientBuildTimeConfig buildSyncConfig, RuntimeValue syncConfig, BuildProducer clientSyncTransports) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); @@ -245,14 +230,14 @@ protected void createUrlConnectionSyncTransportBuilder(List amazonClients, + protected void createNettyAsyncTransportBuilder(List amazonClients, AmazonClientNettyTransportRecorder recorder, AsyncHttpClientBuildTimeConfig buildAsyncConfig, RuntimeValue asyncConfig, BuildProducer clientAsyncTransports, Supplier eventLoopSupplier) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); @@ -273,13 +258,13 @@ protected void createNettyAsyncTransportBuilder(List amaz }); } - protected void createAwsCrtAsyncTransportBuilder(List amazonClients, + protected void createAwsCrtAsyncTransportBuilder(List amazonClients, AmazonClientAwsCrtTransportRecorder recorder, AsyncHttpClientBuildTimeConfig buildAsyncConfig, RuntimeValue asyncConfig, BuildProducer clientAsyncTransports) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); @@ -396,22 +381,19 @@ private void createClientBuilders( // requiring named clients can originate from multiple sources and we may have duplicates Collection syncClientNames = amazonClientInjections.stream() .filter(c -> syncClientName().equals(c.getClassName())) - .map(c -> c.getNames()) - .flatMap(Collection::stream) + .map(c -> c.getName()) .distinct() .collect(Collectors.toSet()); Collection asyncClientNames = amazonClientInjections.stream() .filter(c -> asyncClientName().equals(c.getClassName())) - .map(c -> c.getNames()) - .flatMap(Collection::stream) + .map(c -> c.getName()) .distinct() .collect(Collectors.toSet()); Collection presignerClientNames = amazonClientInjections.stream() .filter(c -> presignerClientName() != null && presignerClientName().equals(c.getClassName())) - .map(c -> c.getNames()) - .flatMap(Collection::stream) + .map(c -> c.getName()) .distinct() .collect(Collectors.toSet()); @@ -422,8 +404,8 @@ private void createClientBuilders( syncClientBuilder = recorder.configure(syncClientBuilder, amazonClientConfigRuntime, sdkBuildConfig, sharedExecutorService, configName(), clientName); if (addOpenTelemetry) { - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(syncClientBuilderClass), - AWS_CLIENT_BUILDER_NAME, clientName) + syntheticBeans.produce(ClientDeploymentUtil + .namedBuilder(SyntheticBeanBuildItem.configure(syncClientBuilderClass), clientName) .unremovable() .defaultBean() .setRuntimeInit() @@ -431,8 +413,8 @@ private void createClientBuilders( .createWith(otelRecorder.configureSync(syncClientBuilder)) .addInjectionPoint(ClassType.create(AwsSdkTelemetry.class)).done()); } else { - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(syncClientBuilderClass), - AWS_CLIENT_BUILDER_NAME, clientName) + syntheticBeans.produce(ClientDeploymentUtil + .namedBuilder(SyntheticBeanBuildItem.configure(syncClientBuilderClass), clientName) .unremovable() .defaultBean() .setRuntimeInit() @@ -441,27 +423,28 @@ private void createClientBuilders( .done()); } syntheticBeans - .produce(named(SyntheticBeanBuildItem.configure(syncClientName()), AWS_CLIENT_NAME, clientName) - .unremovable() - .defaultBean() - .setRuntimeInit() - .scope(ApplicationScoped.class) - .createWith(recorder.build(syncClientBuilderClass, clientName)) - .addInjectionPoint(ClassType.create(syncClientBuilderClass), - injectionPointAnnotations(AWS_CLIENT_BUILDER_NAME, clientName)) - .destroyer(SdkAutoCloseableDestroyer.class) - .done()); + .produce( + ClientDeploymentUtil.namedClient(SyntheticBeanBuildItem.configure(syncClientName()), clientName) + .unremovable() + .defaultBean() + .setRuntimeInit() + .scope(ApplicationScoped.class) + .createWith(recorder.build(syncClientBuilderClass, clientName)) + .addInjectionPoint(ClassType.create(syncClientBuilderClass), + ClientDeploymentUtil.injectionPointAnnotationsBuilder(clientName)) + .destroyer(SdkAutoCloseableDestroyer.class) + .done()); + + clientSync.produce(new AmazonClientSyncResultBuildItem(configName, clientName)); } - clientSync.produce(new AmazonClientSyncResultBuildItem(configName)); } if (asyncClientBuilder != null && !asyncClientNames.isEmpty()) { for (String clientName : asyncClientNames) { asyncClientBuilder = recorder.configure(asyncClientBuilder, amazonClientConfigRuntime, sdkBuildConfig, sharedExecutorService, configName(), clientName); if (addOpenTelemetry) { - syntheticBeans.produce(named(SyntheticBeanBuildItem - .configure(asyncClientBuilderClass), - AWS_CLIENT_BUILDER_NAME, clientName) + syntheticBeans.produce(ClientDeploymentUtil + .namedBuilder(SyntheticBeanBuildItem.configure(asyncClientBuilderClass), clientName) .unremovable() .defaultBean() .setRuntimeInit() @@ -469,8 +452,8 @@ private void createClientBuilders( .createWith(otelRecorder.configureAsync(asyncClientBuilder)) .addInjectionPoint(ClassType.create(AwsSdkTelemetry.class)).done()); } else { - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(asyncClientBuilderClass), - AWS_CLIENT_BUILDER_NAME, clientName) + syntheticBeans.produce(ClientDeploymentUtil + .namedBuilder(SyntheticBeanBuildItem.configure(asyncClientBuilderClass), clientName) .unremovable() .defaultBean() .setRuntimeInit() @@ -478,70 +461,48 @@ private void createClientBuilders( .runtimeValue(asyncClientBuilder) .done()); } - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(asyncClientName()), - AWS_CLIENT_NAME, clientName) - .unremovable() - .defaultBean() - .setRuntimeInit() - .scope(ApplicationScoped.class) - .createWith(recorder.build(asyncClientBuilderClass, clientName)) - .addInjectionPoint(ClassType.create(asyncClientBuilderClass), - injectionPointAnnotations(AWS_CLIENT_BUILDER_NAME, clientName)) - .destroyer(SdkAutoCloseableDestroyer.class) - .done()); - clientAsync.produce(new AmazonClientAsyncResultBuildItem(configName)); + syntheticBeans.produce( + ClientDeploymentUtil.namedClient(SyntheticBeanBuildItem.configure(asyncClientName()), clientName) + .unremovable() + .defaultBean() + .setRuntimeInit() + .scope(ApplicationScoped.class) + .createWith(recorder.build(asyncClientBuilderClass, clientName)) + .addInjectionPoint(ClassType.create(asyncClientBuilderClass), + ClientDeploymentUtil.injectionPointAnnotationsBuilder(clientName)) + .destroyer(SdkAutoCloseableDestroyer.class) + .done()); + + clientAsync.produce(new AmazonClientAsyncResultBuildItem(configName, clientName)); } } if (presignerBuilder != null && !presignerClientNames.isEmpty()) { for (String clientName : presignerClientNames) { presignerBuilder = recorder.configurePresigner(presignerBuilder, amazonClientConfigRuntime, configName(), clientName); - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(presignerBuilderClass), - AWS_CLIENT_BUILDER_NAME, clientName) - .unremovable() - .defaultBean() - .setRuntimeInit() - .scope(ApplicationScoped.class) - .runtimeValue(presignerBuilder) - .done()); - syntheticBeans.produce(named(SyntheticBeanBuildItem.configure(presignerClientName()), - AWS_CLIENT_NAME, clientName) - .unremovable() - .defaultBean() - .setRuntimeInit() - .scope(ApplicationScoped.class) - .createWith(recorder.buildPresigner(presignerBuilderClass, clientName)) - .addInjectionPoint(ClassType.create(presignerBuilderClass), - injectionPointAnnotations(AWS_CLIENT_BUILDER_NAME, clientName)) - .destroyer(SdkAutoCloseableDestroyer.class) - .done()); + syntheticBeans.produce( + ClientDeploymentUtil.namedBuilder(SyntheticBeanBuildItem.configure(presignerBuilderClass), clientName) + .unremovable() + .defaultBean() + .setRuntimeInit() + .scope(ApplicationScoped.class) + .runtimeValue(presignerBuilder) + .done()); + syntheticBeans.produce( + ClientDeploymentUtil.namedClient(SyntheticBeanBuildItem.configure(presignerClientName()), clientName) + .unremovable() + .defaultBean() + .setRuntimeInit() + .scope(ApplicationScoped.class) + .createWith(recorder.buildPresigner(presignerBuilderClass, clientName)) + .addInjectionPoint(ClassType.create(presignerBuilderClass), + ClientDeploymentUtil.injectionPointAnnotationsBuilder(clientName)) + .destroyer(SdkAutoCloseableDestroyer.class) + .done()); } } } - private static final AnnotationInstance[] EMPTY_ANNOTATIONS = new AnnotationInstance[0]; - - private AnnotationInstance[] injectionPointAnnotations(DotName awsClientBuilderName, String clientName) { - if (ClientUtil.isDefaultClient(clientName)) { - return EMPTY_ANNOTATIONS; - } else { - return new AnnotationInstance[] { - AnnotationInstance.builder(awsClientBuilderName).add("value", clientName).build() - }; - } - } - - private ExtendedBeanConfigurator named(ExtendedBeanConfigurator beanConfigurator, DotName annotationName, - String clientName) { - if (ClientUtil.isDefaultClient(clientName)) { - beanConfigurator.addQualifier(DotNames.DEFAULT); - } else { - beanConfigurator.addQualifier().annotation(annotationName).addValue("value", clientName).done(); - } - - return beanConfigurator; - } - private Type getInjectedType(InjectionPointInfo injectionPoint) { Type requiredType = injectionPoint.getRequiredType(); Type injectedType = requiredType; diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientAsyncResultBuildItem.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientAsyncResultBuildItem.java index 1ebbdb8c8..95397c50b 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientAsyncResultBuildItem.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientAsyncResultBuildItem.java @@ -8,12 +8,18 @@ public final class AmazonClientAsyncResultBuildItem extends MultiBuildItem { private final String awsClientName; + private String clientName; - public AmazonClientAsyncResultBuildItem(String awsClientName) { + public AmazonClientAsyncResultBuildItem(String awsClientName, String clientName) { this.awsClientName = awsClientName; + this.clientName = clientName; } public String getAwsClientName() { return awsClientName; } + + public String getClientName() { + return clientName; + } } diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientSyncResultBuildItem.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientSyncResultBuildItem.java index 2f2305f70..5b53d677e 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientSyncResultBuildItem.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientSyncResultBuildItem.java @@ -8,12 +8,18 @@ public final class AmazonClientSyncResultBuildItem extends MultiBuildItem { private final String awsClientName; + private String clientName; - public AmazonClientSyncResultBuildItem(String awsClientName) { + public AmazonClientSyncResultBuildItem(String awsClientName, String clientName) { this.awsClientName = awsClientName; + this.clientName = clientName; } public String getAwsClientName() { return awsClientName; } + + public String getClientName() { + return clientName; + } } diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonServicesClientsProcessor.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonServicesClientsProcessor.java index 0358ac691..09fcf9ac7 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonServicesClientsProcessor.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonServicesClientsProcessor.java @@ -62,7 +62,7 @@ void awsAppArchiveMarkers(BuildProducer interceptors, BuildProducer resource, CombinedIndexBuildItem combinedIndexBuildItem, - List amazonClients, + List amazonClients, BuildProducer reflectiveClasses, BuildProducer unremovables) { @@ -76,7 +76,7 @@ void setupInterceptors(List interceptors, .map(c -> c.name().toString()).collect(Collectors.toList()); //Validate configurations - for (AmazonClientBuildItem client : amazonClients) { + for (RequireAmazonClientTransportBuilderBuildItem client : amazonClients) { SdkBuildTimeConfig clientSdkConfig = client.getBuildTimeSdkConfig(); if (clientSdkConfig != null) { clientSdkConfig.interceptors().orElse(Collections.emptyList()).forEach(interceptorClassName -> { @@ -132,7 +132,7 @@ void setupTelemetry(List items, @BuildStep void setup( - List amazonClients, + List amazonClients, BuildProducer reflectiveClasses, BuildProducer proxyDefinition, BuildProducer serviceProvider) { @@ -143,11 +143,11 @@ void setup( boolean syncTransportNeeded = amazonClients.stream().anyMatch(item -> item.getSyncClassName().isPresent()); boolean asyncTransportNeeded = amazonClients.stream().anyMatch(item -> item.getAsyncClassName().isPresent()); - final Predicate isSyncApache = client -> client + final Predicate isSyncApache = client -> client .getBuildTimeSyncConfig().type() == SyncClientType.APACHE; - final Predicate isSyncCrt = client -> client + final Predicate isSyncCrt = client -> client .getBuildTimeSyncConfig().type() == SyncClientType.AWS_CRT; - final Predicate isAsyncNetty = client -> client + final Predicate isAsyncNetty = client -> client .getBuildTimeAsyncConfig().type() == AsyncClientType.NETTY; // Register what's needed depending on the clients in the classpath and the configuration. diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/ClientDeploymentUtil.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/ClientDeploymentUtil.java new file mode 100644 index 000000000..c9132ba52 --- /dev/null +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/ClientDeploymentUtil.java @@ -0,0 +1,67 @@ +package io.quarkus.amazon.common.deployment; + +import org.jboss.jandex.AnnotationInstance; +import org.jboss.jandex.DotName; + +import io.quarkus.amazon.common.runtime.ClientUtil; +import io.quarkus.arc.deployment.SyntheticBeanBuildItem.ExtendedBeanConfigurator; +import io.quarkus.arc.processor.DotNames; +import io.quarkus.arc.processor.InjectionPointInfo; + +public final class ClientDeploymentUtil { + + private static final DotName AWS_CLIENT_NAME = DotName.createSimple(io.quarkus.amazon.common.AmazonClient.class.getName()); + private static final DotName AWS_CLIENT_BUILDER_NAME = DotName + .createSimple(io.quarkus.amazon.common.AmazonClientBuilder.class.getName()); + private static final AnnotationInstance[] EMPTY_ANNOTATIONS = new AnnotationInstance[0]; + + private ClientDeploymentUtil() { + } + + public static String getNamedClientInjection(InjectionPointInfo injectionPoint) { + var named = injectionPoint.getRequiredQualifier(AWS_CLIENT_NAME); + if (named != null) { + return named.value("value").asString(); + } else { + return ClientUtil.DEFAULT_CLIENT_NAME; + } + } + + public static ExtendedBeanConfigurator namedClient(ExtendedBeanConfigurator beanConfigurator, String clientName) { + return named(beanConfigurator, AWS_CLIENT_NAME, clientName); + } + + public static ExtendedBeanConfigurator namedBuilder(ExtendedBeanConfigurator beanConfigurator, String clientName) { + return named(beanConfigurator, AWS_CLIENT_BUILDER_NAME, clientName); + } + + public static AnnotationInstance[] injectionPointAnnotationsClient(String clientName) { + return injectionPointAnnotations(AWS_CLIENT_NAME, clientName); + } + + public static AnnotationInstance[] injectionPointAnnotationsBuilder(String clientName) { + return injectionPointAnnotations(AWS_CLIENT_BUILDER_NAME, clientName); + } + + private static ExtendedBeanConfigurator named(ExtendedBeanConfigurator beanConfigurator, DotName annotationName, + String clientName) { + if (ClientUtil.isDefaultClient(clientName)) { + beanConfigurator.addQualifier(DotNames.DEFAULT); + } else { + beanConfigurator.addQualifier().annotation(annotationName).addValue("value", clientName).done(); + } + + return beanConfigurator; + } + + public static AnnotationInstance[] injectionPointAnnotations(DotName annotationName, String clientName) { + if (ClientUtil.isDefaultClient(clientName)) { + return EMPTY_ANNOTATIONS; + } else { + return new AnnotationInstance[] { + AnnotationInstance.builder(annotationName).add("value", clientName).build() + }; + } + } + +} diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientInjectionBuildItem.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientInjectionBuildItem.java index 2b878aac3..2d73b9f0e 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientInjectionBuildItem.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientInjectionBuildItem.java @@ -1,7 +1,5 @@ package io.quarkus.amazon.common.deployment; -import java.util.Collection; - import org.jboss.jandex.DotName; import io.quarkus.builder.item.MultiBuildItem; @@ -12,18 +10,18 @@ */ public final class RequireAmazonClientInjectionBuildItem extends MultiBuildItem { private final DotName className; - private final Collection names; + private final String name; - public RequireAmazonClientInjectionBuildItem(DotName className, Collection names) { + public RequireAmazonClientInjectionBuildItem(DotName className, String name) { this.className = className; - this.names = names; + this.name = name; } public DotName getClassName() { return className; } - public Collection getNames() { - return names; + public String getName() { + return name; } } diff --git a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientBuildItem.java b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientTransportBuilderBuildItem.java similarity index 86% rename from common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientBuildItem.java rename to common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientTransportBuilderBuildItem.java index d2f2189ea..dcaee88ac 100644 --- a/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/AmazonClientBuildItem.java +++ b/common/deployment/src/main/java/io/quarkus/amazon/common/deployment/RequireAmazonClientTransportBuilderBuildItem.java @@ -10,9 +10,9 @@ import io.quarkus.builder.item.MultiBuildItem; /** - * Describes what clients are required for a given extension + * Describes what client transport builders are required for a given extension */ -public final class AmazonClientBuildItem extends MultiBuildItem { +public final class RequireAmazonClientTransportBuilderBuildItem extends MultiBuildItem { private final Optional syncClassName; private final Optional asyncClassName; private final String awsClientName; @@ -20,7 +20,7 @@ public final class AmazonClientBuildItem extends MultiBuildItem { private final SyncHttpClientBuildTimeConfig buildTimeSyncConfig; private final AsyncHttpClientBuildTimeConfig buildTimeAsyncConfig; - public AmazonClientBuildItem(Optional syncClassName, Optional asyncClassName, + public RequireAmazonClientTransportBuilderBuildItem(Optional syncClassName, Optional asyncClassName, String awsClientName, SdkBuildTimeConfig buildTimeSdkConfig, SyncHttpClientBuildTimeConfig buildTimeSyncConfig, AsyncHttpClientBuildTimeConfig buildTimeAsyncConfig) { diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 2477723a2..9cfa304a1 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -21,3 +21,5 @@ * xref:amazon-sts.adoc[STS] * xref:dev-services.adoc[Dev Services for Amazon Services] * xref:opentelemetry.adoc[OpenTelemetry for Amazon Services] +* xref:common-features.adoc[Common features] + diff --git a/docs/modules/ROOT/pages/common-features.adoc b/docs/modules/ROOT/pages/common-features.adoc new file mode 100644 index 000000000..abb9040f7 --- /dev/null +++ b/docs/modules/ROOT/pages/common-features.adoc @@ -0,0 +1,26 @@ += Common features + +== Named clients + +You can inject named clients with dfferent configurations. To do this, annotate your injection point with `@AmazonClient`. + + +[source,java] +---- +import io.quarkus.amazon.common.AmazonClient; + +public class DynamoDbEnhancedClientTest { + + @Inject + @AmazonClient(value = "custom") + DynamoDbClient clientNamedCustom; + +---- + +Named clients inherit the configuration of the unamed client but you can override it. + +[source,properties] +---- +quarkus.dynamodb.endpoint-override=http://localhost:8000 +quarkus.dynamodb.custom.endpoint-override=http://localhost:9000 +---- diff --git a/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedDbTableProcessor.java b/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedDbTableProcessor.java index 78d8790df..d23f83eea 100644 --- a/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedDbTableProcessor.java +++ b/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedDbTableProcessor.java @@ -5,7 +5,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import jakarta.enterprise.inject.spi.DeploymentException; @@ -20,7 +19,6 @@ import org.jboss.jandex.IndexView; import org.jboss.jandex.ParameterizedType; -import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.amazon.dynamodb.enhanced.runtime.NamedDynamoDbTable; @@ -66,12 +64,7 @@ AdditionalBeanBuildItem additionalBeans() { @BuildStep void discoverDynamoDbTable(CombinedIndexBuildItem combinedIndexBuildItem, - BuildProducer tables, - BuildProducer requireClientProducer, - BuildProducer requireClientInjectionProducer) { - - Optional syncClassName = Optional.empty(); - Optional asyncClassName = Optional.empty(); + BuildProducer tables) { Set> asyncSeen = new HashSet<>(); Set> syncSeen = new HashSet<>(); @@ -96,7 +89,6 @@ void discoverDynamoDbTable(CombinedIndexBuildItem combinedIndexBuildItem, tables.produce(new DynamodbEnhancedTableBuildItem(tableName, beanClassName, DotNames.DYNAMODB_ENHANCED_CLIENT, DYNAMODB_ENHANCED_CLIENT_TABLE_METHOD, DotNames.DYNAMODB_TABLE)); - syncClassName = Optional.of(DotNames.DYNAMODB_CLIENT); } } if (DotNames.DYNAMODB_ASYNC_TABLE.equals(field.type().name())) { @@ -104,32 +96,38 @@ void discoverDynamoDbTable(CombinedIndexBuildItem combinedIndexBuildItem, tables.produce(new DynamodbEnhancedTableBuildItem(tableName, beanClassName, DotNames.DYNAMODB_ENHANCED_ASYNC_CLIENT, DYNAMODB_ENHANCED_ASYNC_CLIENT_TABLE_METHOD, DotNames.DYNAMODB_ASYNC_TABLE)); - asyncClassName = Optional.of(DotNames.DYNAMODB_ASYNC_CLIENT); } } } } - - if (syncClassName.isPresent() || asyncClassName.isPresent()) { - requireClientProducer.produce(new RequireAmazonClientBuildItem(syncClassName, asyncClassName)); - } - - if (syncClassName.isPresent()) { - requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem(DotNames.DYNAMODB_CLIENT, - List.of(ClientUtil.DEFAULT_CLIENT_NAME))); - } - if (asyncClassName.isPresent()) { - requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem(DotNames.DYNAMODB_ASYNC_CLIENT, - List.of(ClientUtil.DEFAULT_CLIENT_NAME))); - } } @BuildStep public void produceNamedDbTableBean(List tables, + BuildProducer requireClientInjectionProducer, BuildProducer syntheticBean) { + // produce a synthetic bean for each DynamoDb table bean tables.stream().map(DynamodbEnhancedDbTableProcessor::generateDynamoDbTableSyntheticBean) .forEach(syntheticBean::produce); + // each table bean requires a DynamoDb Enhanced client + tables.stream() + .map(table -> new RequireAmazonClientInjectionBuildItem(table.getClientClassName(), + ClientUtil.DEFAULT_CLIENT_NAME)) + .forEach(requireClientInjectionProducer::produce); + // which in turn require a regular low-level DynamoDb client + tables.stream() + .map(table -> new RequireAmazonClientInjectionBuildItem(getLowLevelClientClassName(table.getClientClassName()), + ClientUtil.DEFAULT_CLIENT_NAME)) + .forEach(requireClientInjectionProducer::produce); + } + + public DotName getLowLevelClientClassName(DotName enhancedClientClassName) { + if (DotNames.DYNAMODB_ENHANCED_CLIENT.equals(enhancedClientClassName)) { + return DotNames.DYNAMODB_CLIENT; + } else { + return DotNames.DYNAMODB_ASYNC_CLIENT; + } } static private SyntheticBeanBuildItem generateDynamoDbTableSyntheticBean(DynamodbEnhancedTableBuildItem table) { diff --git a/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedProcessor.java b/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedProcessor.java index bf80406d8..6907eaf04 100644 --- a/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedProcessor.java +++ b/dynamodb-enhanced/deployment/src/main/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamodbEnhancedProcessor.java @@ -22,9 +22,8 @@ import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; -import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; +import io.quarkus.amazon.common.deployment.ClientDeploymentUtil; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; -import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.amazon.dynamodb.enhanced.runtime.BeanTableSchemaSubstitutionImplementation; import io.quarkus.amazon.dynamodb.enhanced.runtime.DynamoDbEnhancedBuildTimeConfig; import io.quarkus.amazon.dynamodb.enhanced.runtime.DynamodbEnhancedClientRecorder; @@ -70,12 +69,8 @@ FeatureBuildItem feature() { void setup(CombinedIndexBuildItem combinedIndexBuildItem, DynamoDbEnhancedBuildTimeConfig buildTimeConfig, BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, BuildProducer requireClientInjectionProducer) { - Optional syncClassName = Optional.empty(); - Optional asyncClassName = Optional.empty(); - // Discover all known dynamodb-enhanced-client-extension implementors List knownDynamodbEnhancedClientExtensionImpls = combinedIndexBuildItem.getIndex() .getAllKnownImplementors(DotNames.DYNAMODB_ENHANCED_CLIENT_EXTENSION_NAME) @@ -100,25 +95,14 @@ void setup(CombinedIndexBuildItem combinedIndexBuildItem, org.jboss.jandex.Type injectedType = injectionPoint.getRequiredType(); if (DotNames.DYNAMODB_ENHANCED_CLIENT.equals(injectedType.name())) { - syncClassName = Optional.of(DotNames.DYNAMODB_CLIENT); + requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem( + DotNames.DYNAMODB_CLIENT, ClientDeploymentUtil.getNamedClientInjection(injectionPoint))); } if (DotNames.DYNAMODB_ENHANCED_ASYNC_CLIENT.equals(injectedType.name())) { - asyncClassName = Optional.of(DotNames.DYNAMODB_ASYNC_CLIENT); + requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem( + DotNames.DYNAMODB_ASYNC_CLIENT, ClientDeploymentUtil.getNamedClientInjection(injectionPoint))); } } - - if (syncClassName.isPresent() || asyncClassName.isPresent()) { - requireClientProducer.produce(new RequireAmazonClientBuildItem(syncClassName, asyncClassName)); - } - - if (syncClassName.isPresent()) { - requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem(DotNames.DYNAMODB_CLIENT, - List.of(ClientUtil.DEFAULT_CLIENT_NAME))); - } - if (asyncClassName.isPresent()) { - requireClientInjectionProducer.produce(new RequireAmazonClientInjectionBuildItem(DotNames.DYNAMODB_ASYNC_CLIENT, - List.of(ClientUtil.DEFAULT_CLIENT_NAME))); - } } @BuildStep @@ -131,36 +115,46 @@ void createClientBuilders( String configName = "dynamodb"; - Optional syncClientRuntime = syncBuilder.stream() + // we cannot filter by requirement origin, so we may create enhanced builder for standard client requirements + List syncClientRuntime = syncBuilder.stream() .filter(c -> configName.equals(c.getAwsClientName())) - .findFirst(); - Optional asyncClientRuntime = asyncBuilder.stream() + .collect(Collectors.toList()); + List asyncClientRuntime = asyncBuilder.stream() .filter(c -> configName.equals(c.getAwsClientName())) - .findFirst(); + .collect(Collectors.toList()); - if (syncClientRuntime.isPresent() || asyncClientRuntime.isPresent()) { + if (!syncClientRuntime.isEmpty() || !asyncClientRuntime.isEmpty()) { RuntimeValue extensions = recorder.createExtensionList(); - if (syncClientRuntime.isPresent()) { - syntheticBean.produce(SyntheticBeanBuildItem - .configure(DynamoDbEnhancedClient.class) + for (AmazonClientSyncResultBuildItem amazonClientSyncResultBuildItem : syncClientRuntime) { + + syntheticBean.produce(ClientDeploymentUtil.namedClient(SyntheticBeanBuildItem + .configure(DynamoDbEnhancedClient.class), amazonClientSyncResultBuildItem.getClientName()) .unremovable() .defaultBean() .scope(ApplicationScoped.class) .setRuntimeInit() - .createWith(recorder.createDynamoDbEnhancedClient(extensions)) - .addInjectionPoint(ClassType.create(DynamoDbClient.class)).done()); + .createWith(recorder.createDynamoDbEnhancedClient(extensions, + amazonClientSyncResultBuildItem.getClientName())) + .addInjectionPoint(ClassType.create(DynamoDbClient.class), + ClientDeploymentUtil + .injectionPointAnnotationsClient(amazonClientSyncResultBuildItem.getClientName())) + .done()); } - if (asyncClientRuntime.isPresent()) { - syntheticBean.produce(SyntheticBeanBuildItem - .configure(DynamoDbEnhancedAsyncClient.class) + for (AmazonClientAsyncResultBuildItem amazonClientAsyncResultBuildItem : asyncClientRuntime) { + syntheticBean.produce(ClientDeploymentUtil.namedClient(SyntheticBeanBuildItem + .configure(DynamoDbEnhancedAsyncClient.class), amazonClientAsyncResultBuildItem.getClientName()) .unremovable() .defaultBean() .scope(ApplicationScoped.class) .setRuntimeInit() - .createWith(recorder.createDynamoDbEnhancedAsyncClient(extensions)) - .addInjectionPoint(ClassType.create(DynamoDbAsyncClient.class)).done()); + .createWith(recorder.createDynamoDbEnhancedAsyncClient(extensions, + amazonClientAsyncResultBuildItem.getClientName())) + .addInjectionPoint(ClassType.create(DynamoDbAsyncClient.class), + ClientDeploymentUtil + .injectionPointAnnotationsClient(amazonClientAsyncResultBuildItem.getClientName())) + .done()); } } } diff --git a/dynamodb-enhanced/deployment/src/test/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamoDbEnhancedClientTest.java b/dynamodb-enhanced/deployment/src/test/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamoDbEnhancedClientTest.java new file mode 100644 index 000000000..2c46b4fe5 --- /dev/null +++ b/dynamodb-enhanced/deployment/src/test/java/io/quarkus/amazon/dynamodb/enhanced/deployment/DynamoDbEnhancedClientTest.java @@ -0,0 +1,42 @@ +package io.quarkus.amazon.dynamodb.enhanced.deployment; + +import jakarta.inject.Inject; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.amazon.common.AmazonClient; +import io.quarkus.arc.ClientProxy; +import io.quarkus.test.QuarkusUnitTest; +import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; + +public class DynamoDbEnhancedClientTest { + + @Inject + DynamoDbEnhancedClient client; + + @Inject + DynamoDbEnhancedClient clientSame; + + @Inject + @AmazonClient(value = "test") + DynamoDbEnhancedClient clientNamedTest; + + @Inject + @AmazonClient(value = "test") + DynamoDbEnhancedClient clientNamedTestSame; + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withApplicationRoot((jar) -> jar + .addClass(DynamoDbEnhancedClientProducer.class) + .addAsResource("full-config.properties", "application.properties")); + + @Test + public void test() { + Assert.assertNotEquals(ClientProxy.unwrap(clientNamedTest), ClientProxy.unwrap(client)); + Assert.assertEquals(ClientProxy.unwrap(clientSame), ClientProxy.unwrap(client)); + Assert.assertEquals(ClientProxy.unwrap(clientNamedTestSame), ClientProxy.unwrap(clientNamedTest)); + } +} diff --git a/dynamodb-enhanced/runtime/src/main/java/io/quarkus/amazon/dynamodb/enhanced/runtime/DynamodbEnhancedClientRecorder.java b/dynamodb-enhanced/runtime/src/main/java/io/quarkus/amazon/dynamodb/enhanced/runtime/DynamodbEnhancedClientRecorder.java index fccc98f87..0b52d839b 100644 --- a/dynamodb-enhanced/runtime/src/main/java/io/quarkus/amazon/dynamodb/enhanced/runtime/DynamodbEnhancedClientRecorder.java +++ b/dynamodb-enhanced/runtime/src/main/java/io/quarkus/amazon/dynamodb/enhanced/runtime/DynamodbEnhancedClientRecorder.java @@ -11,6 +11,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.arc.SyntheticCreationalContext; import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.Recorder; @@ -78,23 +79,37 @@ private DynamoDbEnhancedClientExtension createExtension(String extensionClassNam } public Function, DynamoDbEnhancedClient> createDynamoDbEnhancedClient( - RuntimeValue extensions) { + RuntimeValue extensions, String clientName) { return new Function, DynamoDbEnhancedClient>() { @Override public DynamoDbEnhancedClient apply(SyntheticCreationalContext context) { - return DynamoDbEnhancedClient.builder().dynamoDbClient(context.getInjectedReference(DynamoDbClient.class)) + DynamoDbClient client; + if (ClientUtil.isDefaultClient(clientName)) + client = context.getInjectedReference(DynamoDbClient.class); + else + client = context.getInjectedReference(DynamoDbClient.class, + new io.quarkus.amazon.common.AmazonClient.AwsClientLiteral(clientName)); + + return DynamoDbEnhancedClient.builder().dynamoDbClient(client) .extensions(extensions.getValue()).build(); } }; } public Function, DynamoDbEnhancedAsyncClient> createDynamoDbEnhancedAsyncClient( - RuntimeValue extensions) { + RuntimeValue extensions, String clientName) { return new Function, DynamoDbEnhancedAsyncClient>() { @Override public DynamoDbEnhancedAsyncClient apply(SyntheticCreationalContext context) { + DynamoDbAsyncClient client; + if (ClientUtil.isDefaultClient(clientName)) + client = context.getInjectedReference(DynamoDbAsyncClient.class); + else + client = context.getInjectedReference(DynamoDbAsyncClient.class, + new io.quarkus.amazon.common.AmazonClient.AwsClientLiteral(clientName)); + return DynamoDbEnhancedAsyncClient.builder() - .dynamoDbClient(context.getInjectedReference(DynamoDbAsyncClient.class)) + .dynamoDbClient(client) .extensions(extensions.getValue()).build(); } }; diff --git a/dynamodb/deployment/src/main/java/io/quarkus/amazon/dynamodb/deployment/DynamodbProcessor.java b/dynamodb/deployment/src/main/java/io/quarkus/amazon/dynamodb/deployment/DynamodbProcessor.java index 6e4f5ff07..33b3a55eb 100644 --- a/dynamodb/deployment/src/main/java/io/quarkus/amazon/dynamodb/deployment/DynamodbProcessor.java +++ b/dynamodb/deployment/src/main/java/io/quarkus/amazon/dynamodb/deployment/DynamodbProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -89,11 +89,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -104,7 +111,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -112,7 +119,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, DynamodbRecorder recorder, + void setupApacheSyncTransport(List amazonClients, DynamodbRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -125,7 +132,7 @@ void setupApacheSyncTransport(List amazonClients, Dynamod @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, DynamodbRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, DynamodbRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -138,7 +145,8 @@ void setupAwsCrtSyncTransport(List amazonClients, Dynamod @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, DynamodbRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + DynamodbRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -151,7 +159,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, DynamodbRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, DynamodbRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -165,7 +173,7 @@ void setupNettyAsyncTransport(List amazonClients, Dynamod @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, DynamodbRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, DynamodbRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/ecr/deployment/src/main/java/io/quarkus/amazon/ecr/deployment/EcrProcessor.java b/ecr/deployment/src/main/java/io/quarkus/amazon/ecr/deployment/EcrProcessor.java index b4f7eaaa0..fe4f2ef58 100644 --- a/ecr/deployment/src/main/java/io/quarkus/amazon/ecr/deployment/EcrProcessor.java +++ b/ecr/deployment/src/main/java/io/quarkus/amazon/ecr/deployment/EcrProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, EcrRecorder recorder, + void setupApacheSyncTransport(List amazonClients, EcrRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, EcrReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, EcrRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, EcrRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, EcrReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, EcrRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, EcrRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, EcrRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, EcrRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, EcrReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, EcrRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, EcrRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/eventbridge/deployment/src/main/java/io/quarkus/amazon/eventbridge/deployment/EventBridgeProcessor.java b/eventbridge/deployment/src/main/java/io/quarkus/amazon/eventbridge/deployment/EventBridgeProcessor.java index 1591d01ed..29a4411bc 100644 --- a/eventbridge/deployment/src/main/java/io/quarkus/amazon/eventbridge/deployment/EventBridgeProcessor.java +++ b/eventbridge/deployment/src/main/java/io/quarkus/amazon/eventbridge/deployment/EventBridgeProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,8 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, EventBridgeRecorder recorder, + void setupApacheSyncTransport(List amazonClients, + EventBridgeRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +124,8 @@ void setupApacheSyncTransport(List amazonClients, EventBr @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, EventBridgeRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, + EventBridgeRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +138,8 @@ void setupAwsCrtSyncTransport(List amazonClients, EventBr @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, EventBridgeRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + EventBridgeRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +152,8 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, EventBridgeRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, + EventBridgeRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +167,8 @@ void setupNettyAsyncTransport(List amazonClients, EventBr @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, EventBridgeRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + EventBridgeRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/iam/deployment/src/main/java/io/quarkus/amazon/iam/deployment/IamProcessor.java b/iam/deployment/src/main/java/io/quarkus/amazon/iam/deployment/IamProcessor.java index dfe47dd32..9d5dba566 100644 --- a/iam/deployment/src/main/java/io/quarkus/amazon/iam/deployment/IamProcessor.java +++ b/iam/deployment/src/main/java/io/quarkus/amazon/iam/deployment/IamProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, IamRecorder recorder, + void setupApacheSyncTransport(List amazonClients, IamRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, IamReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, IamRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, IamRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, IamReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, IamRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, IamRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, IamRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, IamRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, IamReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, IamRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, IamRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/inspector/deployment/src/main/java/io/quarkus/amazon/inspector/deployment/InspectorProcessor.java b/inspector/deployment/src/main/java/io/quarkus/amazon/inspector/deployment/InspectorProcessor.java index 9947dc645..2bfc1ee4b 100644 --- a/inspector/deployment/src/main/java/io/quarkus/amazon/inspector/deployment/InspectorProcessor.java +++ b/inspector/deployment/src/main/java/io/quarkus/amazon/inspector/deployment/InspectorProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, InspectorRecorder recorder, + void setupApacheSyncTransport(List amazonClients, InspectorRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, InspectorRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, InspectorRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,8 @@ void setupAwsCrtSyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, InspectorRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + InspectorRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +150,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, InspectorRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, InspectorRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +164,7 @@ void setupNettyAsyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, InspectorRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, InspectorRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/inspector2/deployment/src/main/java/io/quarkus/amazon/inspector2/deployment/Inspector2Processor.java b/inspector2/deployment/src/main/java/io/quarkus/amazon/inspector2/deployment/Inspector2Processor.java index e7b1d15c6..391aea689 100644 --- a/inspector2/deployment/src/main/java/io/quarkus/amazon/inspector2/deployment/Inspector2Processor.java +++ b/inspector2/deployment/src/main/java/io/quarkus/amazon/inspector2/deployment/Inspector2Processor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, Inspector2Recorder recorder, + void setupApacheSyncTransport(List amazonClients, Inspector2Recorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, Inspector2Recorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, Inspector2Recorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,8 @@ void setupAwsCrtSyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, Inspector2Recorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + Inspector2Recorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +150,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, Inspector2Recorder recorder, + void setupNettyAsyncTransport(List amazonClients, Inspector2Recorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +164,8 @@ void setupNettyAsyncTransport(List amazonClients, Inspect @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, Inspector2Recorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + Inspector2Recorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/integration-tests/src/main/java/io/quarkus/it/amazon/s3/S3Resource.java b/integration-tests/src/main/java/io/quarkus/it/amazon/s3/S3Resource.java index f63272869..1845923c7 100644 --- a/integration-tests/src/main/java/io/quarkus/it/amazon/s3/S3Resource.java +++ b/integration-tests/src/main/java/io/quarkus/it/amazon/s3/S3Resource.java @@ -17,6 +17,7 @@ import org.jboss.logging.Logger; +import io.quarkus.amazon.common.AmazonClient; import io.quarkus.amazon.common.runtime.AsyncHttpClientBuildTimeConfig.AsyncClientType; import io.quarkus.amazon.s3.runtime.S3BuildTimeConfig; import io.quarkus.amazon.s3.runtime.S3Crt; @@ -46,6 +47,7 @@ public class S3Resource { S3Client s3Client; @Inject + @AmazonClient("custom") S3AsyncClient s3AsyncClient; @Inject diff --git a/kinesis/deployment/src/main/java/io/quarkus/amazon/kinesis/deployment/KinesisProcessor.java b/kinesis/deployment/src/main/java/io/quarkus/amazon/kinesis/deployment/KinesisProcessor.java index 154867048..2e898ca1c 100644 --- a/kinesis/deployment/src/main/java/io/quarkus/amazon/kinesis/deployment/KinesisProcessor.java +++ b/kinesis/deployment/src/main/java/io/quarkus/amazon/kinesis/deployment/KinesisProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, KinesisRecorder recorder, + void setupApacheSyncTransport(List amazonClients, KinesisRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, Kinesis @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, KinesisRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, KinesisRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,8 @@ void setupAwsCrtSyncTransport(List amazonClients, Kinesis @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, KinesisRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + KinesisRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +150,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, KinesisRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, KinesisRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +164,7 @@ void setupNettyAsyncTransport(List amazonClients, Kinesis @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, KinesisRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, KinesisRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/kms/deployment/src/main/java/io/quarkus/amazon/kms/deployment/KmsProcessor.java b/kms/deployment/src/main/java/io/quarkus/amazon/kms/deployment/KmsProcessor.java index 036a1c551..43da9f084 100644 --- a/kms/deployment/src/main/java/io/quarkus/amazon/kms/deployment/KmsProcessor.java +++ b/kms/deployment/src/main/java/io/quarkus/amazon/kms/deployment/KmsProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, KmsRecorder recorder, + void setupApacheSyncTransport(List amazonClients, KmsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, KmsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, KmsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, KmsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, KmsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, KmsRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, KmsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, KmsRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, KmsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, KmsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, KmsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, KmsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/lambda/deployment/src/main/java/io/quarkus/amazon/lambda/deployment/LambdaProcessor.java b/lambda/deployment/src/main/java/io/quarkus/amazon/lambda/deployment/LambdaProcessor.java index 022b5d253..c1484da61 100644 --- a/lambda/deployment/src/main/java/io/quarkus/amazon/lambda/deployment/LambdaProcessor.java +++ b/lambda/deployment/src/main/java/io/quarkus/amazon/lambda/deployment/LambdaProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -96,7 +103,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient( final List clientRequirements, - final BuildProducer clientProducer) { + final BuildProducer clientProducer) { setupClient( clientRequirements, @@ -109,7 +116,7 @@ void setupClient( @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) void setupApacheSyncTransport( - final List amazonClients, + final List amazonClients, final LambdaRecorder recorder, final AmazonClientApacheTransportRecorder transportRecorder, final BuildProducer syncTransports) { @@ -124,7 +131,7 @@ void setupApacheSyncTransport( @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, LambdaRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, LambdaRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -138,7 +145,7 @@ void setupAwsCrtSyncTransport(List amazonClients, LambdaR @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) void setupUrlConnectionSyncTransport( - final List amazonClients, + final List amazonClients, final LambdaRecorder recorder, final AmazonClientUrlConnectionTransportRecorder transportRecorder, final BuildProducer syncTransports) { @@ -154,7 +161,7 @@ void setupUrlConnectionSyncTransport( @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) void setupNettyAsyncTransport( - final List amazonClients, + final List amazonClients, final LambdaRecorder recorder, final AmazonClientNettyTransportRecorder transportRecorder, final LambdaConfig runtimeConfig, @@ -172,7 +179,8 @@ void setupNettyAsyncTransport( @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(final List amazonClients, final LambdaRecorder recorder, + void setupAwsCrtAsyncTransport(final List amazonClients, + final LambdaRecorder recorder, final AmazonClientAwsCrtTransportRecorder transportRecorder, final BuildProducer asyncTransports) { diff --git a/s3-transfer-manager/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3TransferManagerProcessor.java b/s3-transfer-manager/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3TransferManagerProcessor.java index d29c76a09..962973630 100644 --- a/s3-transfer-manager/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3TransferManagerProcessor.java +++ b/s3-transfer-manager/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3TransferManagerProcessor.java @@ -1,8 +1,5 @@ package io.quarkus.amazon.s3.deployment; -import java.util.List; -import java.util.Optional; - import jakarta.enterprise.context.ApplicationScoped; import org.jboss.jandex.AnnotationInstance; @@ -10,7 +7,6 @@ import org.jboss.jandex.DotName; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; -import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.amazon.common.runtime.SdkAutoCloseableDestroyer; @@ -50,11 +46,9 @@ AdditionalBeanBuildItem producer() { } @BuildStep(onlyIf = IsAmazonCrtS3ClientPresent.class) - void requireS3CrtClient(BuildProducer requireClientProducer, - BuildProducer requireClientInjectionProducer) { - requireClientProducer.produce(new RequireAmazonClientBuildItem(Optional.empty(), Optional.of(S3CRT_CLIENT))); + void requireS3CrtClient(BuildProducer requireClientInjectionProducer) { requireClientInjectionProducer - .produce(new RequireAmazonClientInjectionBuildItem(S3CRT_CLIENT, List.of(ClientUtil.DEFAULT_CLIENT_NAME))); + .produce(new RequireAmazonClientInjectionBuildItem(S3CRT_CLIENT, ClientUtil.DEFAULT_CLIENT_NAME)); } @BuildStep(onlyIf = IsAmazonCrtS3ClientPresent.class) @@ -66,7 +60,6 @@ void createS3CrtTransferManager( .unremovable() .setRuntimeInit() .scope(ApplicationScoped.class) - .addQualifier(S3Crt.class) .createWith(recorder.getS3CrtTransferManager()) .destroyer(SdkAutoCloseableDestroyer.class) .addInjectionPoint(ClassType.create(S3AsyncClient.class), diff --git a/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3CrtProcessor.java b/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3CrtProcessor.java index 4184710e2..6166c63b1 100644 --- a/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3CrtProcessor.java +++ b/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3CrtProcessor.java @@ -11,8 +11,9 @@ import org.jboss.jandex.ParameterizedType; import org.jboss.jandex.Type; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; -import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; +import io.quarkus.amazon.common.runtime.ClientUtil; import io.quarkus.amazon.common.runtime.SdkAutoCloseableDestroyer; import io.quarkus.amazon.s3.runtime.S3BuildTimeConfig; import io.quarkus.amazon.s3.runtime.S3Crt; @@ -56,7 +57,7 @@ AdditionalBeanBuildItem qualifiers() { @BuildStep(onlyIf = IsAmazonCrtS3ClientPresent.class) void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer) { + BuildProducer requireClientProducer) { Optional asyncClassName = Optional.empty(); @@ -76,37 +77,39 @@ void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, } if (asyncClassName.isPresent()) { - requireClientProducer.produce(new RequireAmazonClientBuildItem(Optional.empty(), asyncClassName)); + requireClientProducer + .produce(new RequireAmazonClientInjectionBuildItem(asyncClassName.get(), ClientUtil.DEFAULT_CLIENT_NAME)); } } @BuildStep(onlyIf = IsAmazonCrtS3ClientPresent.class) - void setupClient(List clientRequirements, - BuildProducer clientProducer) { + void setupClient(List clientRequirements, + BuildProducer clientProducer) { Optional asyncClassName = Optional.empty(); - for (RequireAmazonClientBuildItem clientRequirement : clientRequirements) { + for (RequireAmazonClientInjectionBuildItem clientRequirement : clientRequirements) { - if (clientRequirement.getAsyncClassName().filter(asyncClientName()::equals).isPresent()) { - asyncClassName = clientRequirement.getAsyncClassName(); + if (clientRequirement.getClassName().equals(asyncClientName())) { + asyncClassName = Optional.of(clientRequirement.getClassName()); } } if (asyncClassName.isPresent()) { - clientProducer.produce(new AmazonClientBuildItem(Optional.empty(), asyncClassName, configName(), - buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient())); + clientProducer + .produce(new RequireAmazonClientTransportBuilderBuildItem(Optional.empty(), asyncClassName, configName(), + buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient())); } } @BuildStep(onlyIf = IsAmazonCrtS3ClientPresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void createS3CrtAsyncClient(List amazonClients, + void createS3CrtAsyncClient(List amazonClients, S3CrtRecorder recorder, BuildProducer syntheticBeans, ExecutorBuildItem executorBuildItem, LaunchModeBuildItem launchMode) { - Optional matchingClientBuildItem = amazonClients.stream() + Optional matchingClientBuildItem = amazonClients.stream() .filter(c -> c.getAwsClientName().equals(configName())) .findAny(); diff --git a/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3Processor.java b/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3Processor.java index 243fc943b..a00fe3855 100644 --- a/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3Processor.java +++ b/s3/deployment/src/main/java/io/quarkus/amazon/s3/deployment/S3Processor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -87,11 +87,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -102,7 +109,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -110,7 +117,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, S3Recorder recorder, + void setupApacheSyncTransport(List amazonClients, S3Recorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -123,7 +130,7 @@ void setupApacheSyncTransport(List amazonClients, S3Recor @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, S3Recorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, S3Recorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -136,7 +143,7 @@ void setupAwsCrtSyncTransport(List amazonClients, S3Recor @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, S3Recorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, S3Recorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -149,7 +156,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, S3Recorder recorder, + void setupNettyAsyncTransport(List amazonClients, S3Recorder recorder, AmazonClientNettyTransportRecorder transportRecorder, S3Config runtimeConfig, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -163,7 +170,7 @@ void setupNettyAsyncTransport(List amazonClients, S3Recor @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, S3Recorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, S3Recorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/secretsmanager/deployment/src/main/java/io/quarkus/amazon/secretsmanager/deployment/SecretsManagerProcessor.java b/secretsmanager/deployment/src/main/java/io/quarkus/amazon/secretsmanager/deployment/SecretsManagerProcessor.java index e59957b72..e134f4364 100644 --- a/secretsmanager/deployment/src/main/java/io/quarkus/amazon/secretsmanager/deployment/SecretsManagerProcessor.java +++ b/secretsmanager/deployment/src/main/java/io/quarkus/amazon/secretsmanager/deployment/SecretsManagerProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,8 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SecretsManagerRecorder recorder, + void setupApacheSyncTransport(List amazonClients, + SecretsManagerRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +124,8 @@ void setupApacheSyncTransport(List amazonClients, Secrets @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SecretsManagerRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, + SecretsManagerRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +138,8 @@ void setupAwsCrtSyncTransport(List amazonClients, Secrets @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SecretsManagerRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, + SecretsManagerRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +152,8 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SecretsManagerRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, + SecretsManagerRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +167,8 @@ void setupNettyAsyncTransport(List amazonClients, Secrets @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SecretsManagerRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, + SecretsManagerRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/ses/deployment/src/main/java/io/quarkus/amazon/ses/deployment/SesProcessor.java b/ses/deployment/src/main/java/io/quarkus/amazon/ses/deployment/SesProcessor.java index 3f7c21d65..254d11e53 100644 --- a/ses/deployment/src/main/java/io/quarkus/amazon/ses/deployment/SesProcessor.java +++ b/ses/deployment/src/main/java/io/quarkus/amazon/ses/deployment/SesProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -81,11 +81,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -96,7 +103,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -104,7 +111,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SesRecorder recorder, + void setupApacheSyncTransport(List amazonClients, SesRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, SesConfig runtimeConfig, BuildProducer syncTransports) { @@ -117,7 +124,7 @@ void setupApacheSyncTransport(List amazonClients, SesReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SesRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, SesRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -130,7 +137,7 @@ void setupAwsCrtSyncTransport(List amazonClients, SesReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SesRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, SesRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, SesConfig runtimeConfig, BuildProducer syncTransports) { @@ -143,7 +150,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SesRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, SesRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, SesConfig runtimeConfig, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -157,7 +164,7 @@ void setupNettyAsyncTransport(List amazonClients, SesReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SesRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, SesRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/sfn/deployment/src/main/java/io/quarkus/amazon/sfn/deployment/SfnProcessor.java b/sfn/deployment/src/main/java/io/quarkus/amazon/sfn/deployment/SfnProcessor.java index 3b5e6d38e..fe4f50cba 100644 --- a/sfn/deployment/src/main/java/io/quarkus/amazon/sfn/deployment/SfnProcessor.java +++ b/sfn/deployment/src/main/java/io/quarkus/amazon/sfn/deployment/SfnProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -81,11 +81,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -96,7 +103,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -104,7 +111,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SfnRecorder recorder, + void setupApacheSyncTransport(List amazonClients, SfnRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, SfnConfig runtimeConfig, BuildProducer syncTransports) { @@ -117,7 +124,7 @@ void setupApacheSyncTransport(List amazonClients, SfnReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SfnRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, SfnRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -130,7 +137,7 @@ void setupAwsCrtSyncTransport(List amazonClients, SfnReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SfnRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, SfnRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, SfnConfig runtimeConfig, BuildProducer syncTransports) { @@ -143,7 +150,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SfnRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, SfnRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, SfnConfig runtimeConfig, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -157,7 +164,7 @@ void setupNettyAsyncTransport(List amazonClients, SfnReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SfnRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, SfnRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/sns/deployment/src/main/java/io/quarkus/amazon/sns/deployment/SnsProcessor.java b/sns/deployment/src/main/java/io/quarkus/amazon/sns/deployment/SnsProcessor.java index 591ee3654..0bb0daa29 100644 --- a/sns/deployment/src/main/java/io/quarkus/amazon/sns/deployment/SnsProcessor.java +++ b/sns/deployment/src/main/java/io/quarkus/amazon/sns/deployment/SnsProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SnsRecorder recorder, + void setupApacheSyncTransport(List amazonClients, SnsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, SnsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SnsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, SnsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, SnsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SnsRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, SnsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SnsRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, SnsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, SnsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SnsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, SnsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/sqs/deployment/src/main/java/io/quarkus/amazon/sqs/deployment/SqsProcessor.java b/sqs/deployment/src/main/java/io/quarkus/amazon/sqs/deployment/SqsProcessor.java index 17195a249..2696927bc 100644 --- a/sqs/deployment/src/main/java/io/quarkus/amazon/sqs/deployment/SqsProcessor.java +++ b/sqs/deployment/src/main/java/io/quarkus/amazon/sqs/deployment/SqsProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SqsRecorder recorder, + void setupApacheSyncTransport(List amazonClients, SqsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, SqsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SqsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, SqsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, SqsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SqsRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, SqsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SqsRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, SqsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, SqsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SqsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, SqsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/ssm/deployment/src/main/java/io/quarkus/amazon/ssm/deployment/SsmProcessor.java b/ssm/deployment/src/main/java/io/quarkus/amazon/ssm/deployment/SsmProcessor.java index 1599ade58..c4c1f43dd 100644 --- a/ssm/deployment/src/main/java/io/quarkus/amazon/ssm/deployment/SsmProcessor.java +++ b/ssm/deployment/src/main/java/io/quarkus/amazon/ssm/deployment/SsmProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, SsmRecorder recorder, + void setupApacheSyncTransport(List amazonClients, SsmRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, SsmReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, SsmRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, SsmRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, SsmReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, SsmRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, SsmRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, SsmRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, SsmRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, SsmReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, SsmRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, SsmRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) { diff --git a/sts/deployment/src/main/java/io/quarkus/amazon/sts/deployment/StsProcessor.java b/sts/deployment/src/main/java/io/quarkus/amazon/sts/deployment/StsProcessor.java index 1b22503ea..bed0cc31b 100644 --- a/sts/deployment/src/main/java/io/quarkus/amazon/sts/deployment/StsProcessor.java +++ b/sts/deployment/src/main/java/io/quarkus/amazon/sts/deployment/StsProcessor.java @@ -7,13 +7,13 @@ import io.quarkus.amazon.common.deployment.AbstractAmazonServiceProcessor; import io.quarkus.amazon.common.deployment.AmazonClientAsyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientAsyncTransportBuildItem; -import io.quarkus.amazon.common.deployment.AmazonClientBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientInterceptorsPathBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncResultBuildItem; import io.quarkus.amazon.common.deployment.AmazonClientSyncTransportBuildItem; import io.quarkus.amazon.common.deployment.AmazonHttpClients; import io.quarkus.amazon.common.deployment.RequireAmazonClientBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonClientInjectionBuildItem; +import io.quarkus.amazon.common.deployment.RequireAmazonClientTransportBuilderBuildItem; import io.quarkus.amazon.common.deployment.RequireAmazonTelemetryBuildItem; import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem; import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder; @@ -80,11 +80,18 @@ void setup( } @BuildStep - void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase, - BuildProducer requireClientProducer, + void discoverClientInjectionPoints(BeanRegistrationPhaseBuildItem beanRegistrationPhase, BuildProducer requireClientInjectionProducer) { - discoverClient(beanRegistrationPhase, requireClientProducer, requireClientInjectionProducer); + discoverClientInjectionPointsInternal(beanRegistrationPhase, requireClientInjectionProducer); + } + + @BuildStep + void discover( + List amazonClientInjectionPoints, + BuildProducer requireClientProducer) { + + discoverClient(amazonClientInjectionPoints, requireClientProducer); } @BuildStep @@ -95,7 +102,7 @@ void discoverTelemetry(BuildProducer telemetryP @BuildStep void setupClient(List clientRequirements, - BuildProducer clientProducer) { + BuildProducer clientProducer) { setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(), buildTimeConfig.asyncClient()); @@ -103,7 +110,7 @@ void setupClient(List clientRequirements, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupApacheSyncTransport(List amazonClients, StsRecorder recorder, + void setupApacheSyncTransport(List amazonClients, StsRecorder recorder, AmazonClientApacheTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -116,7 +123,7 @@ void setupApacheSyncTransport(List amazonClients, StsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtSyncTransport(List amazonClients, StsRecorder recorder, + void setupAwsCrtSyncTransport(List amazonClients, StsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -129,7 +136,7 @@ void setupAwsCrtSyncTransport(List amazonClients, StsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupUrlConnectionSyncTransport(List amazonClients, StsRecorder recorder, + void setupUrlConnectionSyncTransport(List amazonClients, StsRecorder recorder, AmazonClientUrlConnectionTransportRecorder transportRecorder, BuildProducer syncTransports) { @@ -142,7 +149,7 @@ void setupUrlConnectionSyncTransport(List amazonClients, @BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupNettyAsyncTransport(List amazonClients, StsRecorder recorder, + void setupNettyAsyncTransport(List amazonClients, StsRecorder recorder, AmazonClientNettyTransportRecorder transportRecorder, BuildProducer asyncTransports, EventLoopGroupBuildItem eventLoopSupplier) { @@ -156,7 +163,7 @@ void setupNettyAsyncTransport(List amazonClients, StsReco @BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class) @Record(ExecutionTime.RUNTIME_INIT) - void setupAwsCrtAsyncTransport(List amazonClients, StsRecorder recorder, + void setupAwsCrtAsyncTransport(List amazonClients, StsRecorder recorder, AmazonClientAwsCrtTransportRecorder transportRecorder, BuildProducer asyncTransports) {