Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Address api review comments for Default*Factory #27820

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ private AzureContextUtils() {

}

public static final String DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME = "springDefaultAzureCredential";
public static final String DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME = "spring_cloud_azure_default_credential";

public static final String EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME =
"EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsExtendedBindingProperties;
import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner;
import com.azure.spring.cloud.stream.binder.eventhubs.provisioning.EventHubsChannelResourceManagerProvisioner;
import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProcessorFactory;
import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProducerFactory;
import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory;
import com.azure.spring.messaging.eventhubs.core.EventHubsProducerFactory;
import com.azure.spring.messaging.eventhubs.core.properties.NamespaceProperties;
import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProcessorFactory;
import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProducerFactory;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
Expand Down Expand Up @@ -127,25 +127,25 @@ EventHubsProducerFactoryCustomizer defaultEventHubsProducerFactoryCustomizer(
@ConditionalOnMissingBean
EventHubsProcessorFactoryCustomizer defaultEventHubsProcessorFactoryCustomizer(
AzureTokenCredentialResolver azureTokenCredentialResolver,
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) TokenCredential defaultAzureCredential,
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) TokenCredential defaultCredential,
ObjectProvider<AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder>> processorClientBuilderCustomizers) {

return new DefaultProcessorFactoryCustomizer(defaultAzureCredential, azureTokenCredentialResolver, processorClientBuilderCustomizers);
return new DefaultProcessorFactoryCustomizer(defaultCredential, azureTokenCredentialResolver, processorClientBuilderCustomizers);
}

/**
* The default {@link EventHubsProducerFactoryCustomizer} to configure the credential related properties and client builder customizers.
*/
static class DefaultProducerFactoryCustomizer implements EventHubsProducerFactoryCustomizer {

private final TokenCredential defaultAzureCredential;
private final TokenCredential defaultCredential;
private final AzureTokenCredentialResolver tokenCredentialResolver;
private final ObjectProvider<AzureServiceClientBuilderCustomizer<EventHubClientBuilder>> clientBuilderCustomizers;

DefaultProducerFactoryCustomizer(TokenCredential defaultAzureCredential,
DefaultProducerFactoryCustomizer(TokenCredential defaultCredential,
AzureTokenCredentialResolver azureTokenCredentialResolver,
ObjectProvider<AzureServiceClientBuilderCustomizer<EventHubClientBuilder>> clientBuilderCustomizers) {
this.defaultAzureCredential = defaultAzureCredential;
this.defaultCredential = defaultCredential;
this.tokenCredentialResolver = azureTokenCredentialResolver;
this.clientBuilderCustomizers = clientBuilderCustomizers;
}
Expand All @@ -156,7 +156,7 @@ public void customize(EventHubsProducerFactory factory) {
DefaultEventHubsNamespaceProducerFactory defaultFactory =
(DefaultEventHubsNamespaceProducerFactory) factory;

defaultFactory.setDefaultAzureCredential(defaultAzureCredential);
defaultFactory.setDefaultCredential(defaultCredential);
defaultFactory.setTokenCredentialResolver(tokenCredentialResolver);
clientBuilderCustomizers.orderedStream().forEach(defaultFactory::addBuilderCustomizer);
}
Expand All @@ -172,14 +172,14 @@ ObjectProvider<AzureServiceClientBuilderCustomizer<EventHubClientBuilder>> getCl
*/
static class DefaultProcessorFactoryCustomizer implements EventHubsProcessorFactoryCustomizer {

private final TokenCredential defaultAzureCredential;
private final TokenCredential defaultCredential;
private final AzureTokenCredentialResolver tokenCredentialResolver;
private final ObjectProvider<AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder>> processorClientBuilderCustomizers;

DefaultProcessorFactoryCustomizer(TokenCredential defaultAzureCredential,
DefaultProcessorFactoryCustomizer(TokenCredential defaultCredential,
AzureTokenCredentialResolver azureTokenCredentialResolver,
ObjectProvider<AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder>> processorClientBuilderCustomizers) {
this.defaultAzureCredential = defaultAzureCredential;
this.defaultCredential = defaultCredential;
this.tokenCredentialResolver = azureTokenCredentialResolver;
this.processorClientBuilderCustomizers = processorClientBuilderCustomizers;
}
Expand All @@ -190,7 +190,7 @@ public void customize(EventHubsProcessorFactory factory) {
DefaultEventHubsNamespaceProcessorFactory defaultFactory =
(DefaultEventHubsNamespaceProcessorFactory) factory;

defaultFactory.setDefaultAzureCredential(defaultAzureCredential);
defaultFactory.setDefaultCredential(defaultCredential);
defaultFactory.setTokenCredentialResolver(tokenCredentialResolver);
processorClientBuilderCustomizers.orderedStream().forEach(defaultFactory::addBuilderCustomizer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties;
import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner;
import com.azure.spring.cloud.stream.binder.servicebus.provisioning.ServiceBusChannelResourceManagerProvisioner;
import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProcessorFactory;
import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProducerFactory;
import com.azure.spring.messaging.servicebus.core.ServiceBusProcessorFactory;
import com.azure.spring.messaging.servicebus.core.ServiceBusProducerFactory;
import com.azure.spring.messaging.servicebus.core.properties.NamespaceProperties;
import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProcessorFactory;
import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProducerFactory;
import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Qualifier;
Expand Down Expand Up @@ -143,14 +143,14 @@ ServiceBusProcessorFactoryCustomizer defaultServiceBusProcessorFactoryCustomizer
*/
static class DefaultProducerFactoryCustomizer implements ServiceBusProducerFactoryCustomizer {

private final TokenCredential defaultAzureCredential;
private final TokenCredential defaultCredential;
private final AzureTokenCredentialResolver tokenCredentialResolver;
private final ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSenderClientBuilder>> senderClientBuilderCustomizers;

DefaultProducerFactoryCustomizer(TokenCredential defaultAzureCredential,
DefaultProducerFactoryCustomizer(TokenCredential defaultCredential,
AzureTokenCredentialResolver azureTokenCredentialResolver,
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSenderClientBuilder>> senderClientBuilderCustomizers) {
this.defaultAzureCredential = defaultAzureCredential;
this.defaultCredential = defaultCredential;
this.tokenCredentialResolver = azureTokenCredentialResolver;
this.senderClientBuilderCustomizers = senderClientBuilderCustomizers;
}
Expand All @@ -161,7 +161,7 @@ public void customize(ServiceBusProducerFactory factory) {
DefaultServiceBusNamespaceProducerFactory defaultFactory =
(DefaultServiceBusNamespaceProducerFactory) factory;

defaultFactory.setDefaultAzureCredential(defaultAzureCredential);
defaultFactory.setDefaultCredential(defaultCredential);
defaultFactory.setTokenCredentialResolver(tokenCredentialResolver);
senderClientBuilderCustomizers.orderedStream().forEach(defaultFactory::addBuilderCustomizer);
}
Expand All @@ -178,16 +178,16 @@ ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.Servi
*/
static class DefaultProcessorFactoryCustomizer implements ServiceBusProcessorFactoryCustomizer {

private final TokenCredential defaultAzureCredential;
private final TokenCredential defaultCredential;
private final AzureTokenCredentialResolver tokenCredentialResolver;
private final ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusProcessorClientBuilder>> processorClientBuilderCustomizers;
private final ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder>> sessionProcessorClientBuilderCustomizers;

DefaultProcessorFactoryCustomizer(TokenCredential defaultAzureCredential,
DefaultProcessorFactoryCustomizer(TokenCredential defaultCredential,
AzureTokenCredentialResolver azureTokenCredentialResolver,
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusProcessorClientBuilder>> processorClientBuilderCustomizers,
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder>> sessionProcessorClientBuilderCustomizers) {
this.defaultAzureCredential = defaultAzureCredential;
this.defaultCredential = defaultCredential;
this.tokenCredentialResolver = azureTokenCredentialResolver;
this.processorClientBuilderCustomizers = processorClientBuilderCustomizers;
this.sessionProcessorClientBuilderCustomizers = sessionProcessorClientBuilderCustomizers;
Expand All @@ -199,16 +199,11 @@ public void customize(ServiceBusProcessorFactory factory) {
DefaultServiceBusNamespaceProcessorFactory defaultFactory =
(DefaultServiceBusNamespaceProcessorFactory) factory;

defaultFactory.setDefaultAzureCredential(defaultAzureCredential);
defaultFactory.setDefaultCredential(defaultCredential);
defaultFactory.setTokenCredentialResolver(tokenCredentialResolver);
processorClientBuilderCustomizers
.orderedStream()
.map(c -> new DefaultServiceBusNamespaceProcessorFactory.ServiceBusProcessorClientBuilderCustomizer(c, null))
.forEach(defaultFactory::addBuilderCustomizer);
sessionProcessorClientBuilderCustomizers
.orderedStream()
.map(c -> new DefaultServiceBusNamespaceProcessorFactory.ServiceBusProcessorClientBuilderCustomizer(null, c))
.forEach(defaultFactory::addBuilderCustomizer);
processorClientBuilderCustomizers.orderedStream().forEach(defaultFactory::addBuilderCustomizer);
sessionProcessorClientBuilderCustomizers.orderedStream()
.forEach(defaultFactory::addSessionBuilderCustomizer);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import com.azure.messaging.eventhubs.EventProcessorClientBuilder;
import com.azure.messaging.eventhubs.models.CloseContext;
import com.azure.messaging.eventhubs.models.InitializationContext;
import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier;
import com.azure.spring.cloud.core.credential.AzureCredentialResolver;
import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer;
import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier;
import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsErrorHandler;
import com.azure.spring.cloud.service.implementation.eventhubs.factory.EventProcessorClientBuilderFactory;
import com.azure.spring.cloud.service.listener.MessageListener;
Expand Down Expand Up @@ -62,7 +62,7 @@ public final class DefaultEventHubsNamespaceProcessorFactory implements EventHub
private final List<AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder>> customizers = new ArrayList<>();
private final Map<String, List<AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder>>> dedicatedCustomizers = new HashMap<>();
private AzureCredentialResolver<TokenCredential> tokenCredentialResolver = null;
private TokenCredential defaultAzureCredential = null;
private TokenCredential defaultCredential = null;

/**
* Construct a factory with the provided {@link CheckpointStore}.
Expand Down Expand Up @@ -165,7 +165,7 @@ private EventProcessorClient doCreateProcessor(@NonNull String eventHub, @NonNul
factory.setCloseContextConsumer(closeContextConsumer);
factory.setInitializationContextConsumer(initializationContextConsumer);

factory.setDefaultTokenCredential(this.defaultAzureCredential);
factory.setDefaultTokenCredential(this.defaultCredential);
factory.setTokenCredentialResolver(this.tokenCredentialResolver);

factory.setSpringIdentifier(AzureSpringIdentifier.AZURE_SPRING_INTEGRATION_EVENT_HUBS);
Expand Down Expand Up @@ -199,11 +199,12 @@ public void setTokenCredentialResolver(AzureCredentialResolver<TokenCredential>
}

/**
* Set the default Azure credential.
* @param defaultAzureCredential The default Azure Credential.
* Set the default credential for all clients generated from this factory.
*
* @param defaultCredential The default credential.
*/
public void setDefaultAzureCredential(TokenCredential defaultAzureCredential) {
this.defaultAzureCredential = defaultAzureCredential;
public void setDefaultCredential(TokenCredential defaultCredential) {
this.defaultCredential = defaultCredential;
}

/**
Expand All @@ -220,18 +221,18 @@ public void addBuilderCustomizer(AzureServiceClientBuilderCustomizer<EventProces

/**
* Add a service client builder customizer to customize the clients created from this factory with event hub name of
* value {@code eventHubName} and consumer group of value {@code consumerGroup}.
* @param eventHubName the event hub name of the client.
* value {@code eventHub} and consumer group of value {@code consumerGroup}.
* @param eventHub the event hub name of the client.
* @param consumerGroup the consumer group of the client.
* @param customizer the provided customizer.
*/
public void addBuilderCustomizer(String eventHubName, String consumerGroup, AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder> customizer) {
public void addBuilderCustomizer(String eventHub, String consumerGroup, AzureServiceClientBuilderCustomizer<EventProcessorClientBuilder> customizer) {
if (customizer == null) {
LOGGER.debug("The provided customizer is null, will ignore it.");
return;
}
this.dedicatedCustomizers
.computeIfAbsent(getCustomizerKey(eventHubName, consumerGroup), key -> new ArrayList<>())
.computeIfAbsent(getCustomizerKey(eventHub, consumerGroup), key -> new ArrayList<>())
.add(customizer);
}

Expand All @@ -241,8 +242,8 @@ private void customizeBuilder(String eventHub, String consumerGroup, EventProces
.forEach(customizer -> customizer.customize(builder));
}

private String getCustomizerKey(String eventHubName, String consumerGroup) {
return eventHubName + "_" + consumerGroup;
private String getCustomizerKey(String eventHub, String consumerGroup) {
return eventHub + "_" + consumerGroup;
}

}
Loading