io.quarkus.amazon.sns.deployment.SnsProcessor Maven / Gradle / Ivy
package io.quarkus.amazon.sns.deployment;
import java.util.List;
import org.jboss.jandex.DotName;
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.RequireAmazonTelemetryBuildItem;
import io.quarkus.amazon.common.deployment.spi.EventLoopGroupBuildItem;
import io.quarkus.amazon.common.runtime.AmazonClientApacheTransportRecorder;
import io.quarkus.amazon.common.runtime.AmazonClientAwsCrtTransportRecorder;
import io.quarkus.amazon.common.runtime.AmazonClientCommonRecorder;
import io.quarkus.amazon.common.runtime.AmazonClientNettyTransportRecorder;
import io.quarkus.amazon.common.runtime.AmazonClientOpenTelemetryRecorder;
import io.quarkus.amazon.common.runtime.AmazonClientUrlConnectionTransportRecorder;
import io.quarkus.amazon.sns.runtime.SnsBuildTimeConfig;
import io.quarkus.amazon.sns.runtime.SnsClientProducer;
import io.quarkus.amazon.sns.runtime.SnsRecorder;
import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
import io.quarkus.arc.deployment.BeanRegistrationPhaseBuildItem;
import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.ExecutorBuildItem;
import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
import software.amazon.awssdk.services.sns.SnsAsyncClient;
import software.amazon.awssdk.services.sns.SnsAsyncClientBuilder;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.SnsClientBuilder;
public class SnsProcessor extends AbstractAmazonServiceProcessor {
private static final String AMAZON_SNS = "amazon-sns";
SnsBuildTimeConfig buildTimeConfig;
@Override
protected String amazonServiceClientName() {
return AMAZON_SNS;
}
@Override
protected String configName() {
return "sns";
}
@Override
protected DotName syncClientName() {
return DotName.createSimple(SnsClient.class.getName());
}
@Override
protected DotName asyncClientName() {
return DotName.createSimple(SnsAsyncClient.class.getName());
}
@Override
protected String builtinInterceptorsPath() {
return "software/amazon/awssdk/services/sns/execution.interceptors";
}
@BuildStep
AdditionalBeanBuildItem producer() {
return AdditionalBeanBuildItem.unremovableOf(SnsClientProducer.class);
}
@BuildStep
void setup(
BuildProducer extensionSslNativeSupport,
BuildProducer feature,
BuildProducer interceptors) {
setupExtension(extensionSslNativeSupport, feature, interceptors);
}
@BuildStep
void discover(BeanRegistrationPhaseBuildItem beanRegistrationPhase,
BuildProducer requireClientProducer) {
discoverClient(beanRegistrationPhase, requireClientProducer);
}
@BuildStep
void discoverTelemetry(BuildProducer telemetryProducer) {
discoverTelemetry(telemetryProducer, buildTimeConfig.sdk());
}
@BuildStep
void setupClient(List clientRequirements,
BuildProducer clientProducer) {
setupClient(clientRequirements, clientProducer, buildTimeConfig.sdk(), buildTimeConfig.syncClient(),
buildTimeConfig.asyncClient());
}
@BuildStep(onlyIf = AmazonHttpClients.IsAmazonApacheHttpServicePresent.class)
@Record(ExecutionTime.RUNTIME_INIT)
void setupApacheSyncTransport(List amazonClients, SnsRecorder recorder,
AmazonClientApacheTransportRecorder transportRecorder,
BuildProducer syncTransports) {
createApacheSyncTransportBuilder(amazonClients,
transportRecorder,
buildTimeConfig.syncClient(),
recorder.getSyncConfig(),
syncTransports);
}
@BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class)
@Record(ExecutionTime.RUNTIME_INIT)
void setupAwsCrtSyncTransport(List amazonClients, SnsRecorder recorder,
AmazonClientAwsCrtTransportRecorder transportRecorder,
BuildProducer syncTransports) {
createAwsCrtSyncTransportBuilder(amazonClients,
transportRecorder,
buildTimeConfig.syncClient(),
recorder.getSyncConfig(),
syncTransports);
}
@BuildStep(onlyIf = AmazonHttpClients.IsAmazonUrlConnectionHttpServicePresent.class)
@Record(ExecutionTime.RUNTIME_INIT)
void setupUrlConnectionSyncTransport(List amazonClients, SnsRecorder recorder,
AmazonClientUrlConnectionTransportRecorder transportRecorder,
BuildProducer syncTransports) {
createUrlConnectionSyncTransportBuilder(amazonClients,
transportRecorder,
buildTimeConfig.syncClient(),
recorder.getSyncConfig(),
syncTransports);
}
@BuildStep(onlyIf = AmazonHttpClients.IsAmazonNettyHttpServicePresent.class)
@Record(ExecutionTime.RUNTIME_INIT)
void setupNettyAsyncTransport(List amazonClients, SnsRecorder recorder,
AmazonClientNettyTransportRecorder transportRecorder,
BuildProducer asyncTransports,
EventLoopGroupBuildItem eventLoopSupplier) {
createNettyAsyncTransportBuilder(amazonClients,
transportRecorder,
buildTimeConfig.asyncClient(),
recorder.getAsyncConfig(),
asyncTransports, eventLoopSupplier.getMainEventLoopGroup());
}
@BuildStep(onlyIf = AmazonHttpClients.IsAmazonAwsCrtHttpServicePresent.class)
@Record(ExecutionTime.RUNTIME_INIT)
void setupAwsCrtAsyncTransport(List amazonClients, SnsRecorder recorder,
AmazonClientAwsCrtTransportRecorder transportRecorder,
BuildProducer asyncTransports) {
createAwsCrtAsyncTransportBuilder(amazonClients,
transportRecorder,
buildTimeConfig.asyncClient(),
recorder.getAsyncConfig(),
asyncTransports);
}
@BuildStep
@Record(ExecutionTime.RUNTIME_INIT)
void createClientBuilders(SnsRecorder recorder,
AmazonClientCommonRecorder commonRecorder,
AmazonClientOpenTelemetryRecorder otelRecorder,
List amazonRequireTelemtryClients,
List syncTransports,
List asyncTransports,
BuildProducer syntheticBeans,
BuildProducer clientSync,
BuildProducer clientAsync,
LaunchModeBuildItem launchModeBuildItem,
ExecutorBuildItem executorBuildItem) {
createClientBuilders(
recorder,
commonRecorder,
otelRecorder,
buildTimeConfig,
amazonRequireTelemtryClients,
syncTransports,
asyncTransports,
SnsClientBuilder.class,
SnsAsyncClientBuilder.class,
null,
syntheticBeans,
clientSync,
clientAsync,
launchModeBuildItem,
executorBuildItem);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy