Skip to content

Commit f414e64

Browse files
authored
Merge branch 'main' into copilot/update-spring-boot-version-again
2 parents 42c43f4 + 272013b commit f414e64

File tree

11 files changed

+283
-55
lines changed

11 files changed

+283
-55
lines changed

eng/common/pipelines/templates/steps/set-test-pipeline-version.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ parameters:
1414
- name: TestPipeline
1515
type: boolean
1616
default: false
17-
- name: ArtifactsJson
18-
type: string
19-
default: ''
17+
- name: Artifacts
18+
type: object
19+
default: []
2020

2121
steps:
2222
- ${{ if eq(parameters.TestPipeline, true) }}:
@@ -31,5 +31,5 @@ steps:
3131
-PackageNames '${{ coalesce(parameters.PackageName, parameters.PackageNames) }}'
3232
-ServiceDirectory '${{ parameters.ServiceDirectory }}'
3333
-TagSeparator '${{ parameters.TagSeparator }}'
34-
-ArtifactsJson '${{ parameters.ArtifactsJson }}'
34+
-Artifacts @('${{ replace(convertToJson(parameters.Artifacts), '''', '`''') }}' | ConvertFrom-Json)
3535
pwsh: true

eng/common/scripts/SetTestPipelineVersion.ps1

Lines changed: 63 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,63 +5,83 @@ param (
55
[string]$BuildID,
66
[Parameter(mandatory = $false)]
77
[string]$PackageNames = "",
8-
[Parameter(mandatory = $true)]
8+
[Parameter(mandatory = $false)]
9+
# ServiceDirectory is required when using PackageNames,
10+
# or when Artifacts do not include their own ServiceDirectory property.
911
[string]$ServiceDirectory,
1012
[Parameter(mandatory = $false)]
1113
[string]$TagSeparator = "_",
1214
[Parameter(mandatory = $false)]
13-
[string]$ArtifactsJson = ""
15+
[object[]]$Artifacts = @()
1416
)
1517

1618
. (Join-Path $PSScriptRoot common.ps1)
1719

20+
# Ensure Artifacts is always an array
21+
$Artifacts = @($Artifacts)
22+
1823
Write-Host "PackageNames: $PackageNames"
1924
Write-Host "ServiceDirectory: $ServiceDirectory"
2025
Write-Host "BuildID: $BuildID"
21-
Write-Host "ArtifactsJson: $ArtifactsJson"
26+
Write-Host "Artifacts count: $($Artifacts.Count)"
2227

23-
$packageNamesArray = @()
24-
$artifacts = $null
25-
26-
# If ArtifactsJson is provided, extract package names from it
27-
if (![String]::IsNullOrWhiteSpace($ArtifactsJson)) {
28-
Write-Host "Using ArtifactsJson to determine package names"
28+
if ($Artifacts -and $Artifacts.Count -gt 0) {
29+
# When using Artifacts, process each artifact with its name and groupId (if applicable)
2930
try {
30-
$artifacts = $ArtifactsJson | ConvertFrom-Json
31-
$packageNamesArray = $artifacts | ForEach-Object { $_.name }
32-
Write-Host "Extracted package names from ArtifactsJson: $($packageNamesArray -join ', ')"
33-
}
34-
catch {
35-
LogError "Failed to parse ArtifactsJson: $($_.Exception.Message)"
36-
exit 1
37-
}
38-
}
39-
elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
40-
$packageNamesArray = $PackageNames.Split(',')
41-
}
42-
else {
43-
LogError "Either PackageNames or ArtifactsJson must be provided."
44-
exit 1
45-
}
31+
foreach ($artifact in $Artifacts) {
32+
# Validate required properties
33+
if (-not (Get-Member -InputObject $artifact -Name 'name' -MemberType Properties)) {
34+
LogError "Artifact is missing required 'name' property."
35+
exit 1
36+
}
4637

47-
if ($artifacts) {
48-
# When using ArtifactsJson, process each artifact with its name and groupId (if applicable)
49-
try {
50-
foreach ($artifact in $artifacts) {
5138
$packageName = $artifact.name
39+
if ([String]::IsNullOrWhiteSpace($packageName)) {
40+
LogError "Artifact 'name' property is null or empty."
41+
exit 1
42+
}
43+
44+
$artifactServiceDirectory = $null
45+
# Check for ServiceDirectory property
46+
if (Get-Member -InputObject $artifact -Name 'ServiceDirectory' -MemberType Properties) {
47+
if (![String]::IsNullOrWhiteSpace($artifact.ServiceDirectory)) {
48+
$artifactServiceDirectory = $artifact.ServiceDirectory
49+
}
50+
}
51+
52+
if ([String]::IsNullOrWhiteSpace($artifactServiceDirectory)) {
53+
$artifactServiceDirectory = $ServiceDirectory
54+
}
55+
56+
# Validate ServiceDirectory is available
57+
if ([String]::IsNullOrWhiteSpace($artifactServiceDirectory)) {
58+
LogError "ServiceDirectory is required but not provided for artifact '$packageName'. Provide it via script parameter or artifact property."
59+
exit 1
60+
}
61+
5262
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
5363
$prefix = "$packageName$TagSeparator"
5464

5565
if ($Language -eq "java") {
66+
# Check for groupId property
67+
if (-not (Get-Member -InputObject $artifact -Name 'groupId' -MemberType Properties)) {
68+
LogError "Artifact '$packageName' is missing required 'groupId' property for Java language."
69+
exit 1
70+
}
71+
5672
$groupId = $artifact.groupId
57-
Write-Host "Processing $packageName with groupId $groupId"
5873
if ([String]::IsNullOrWhiteSpace($groupId)) {
5974
LogError "GroupId is missing for package $packageName."
6075
exit 1
6176
}
77+
78+
Write-Host "Processing $packageName with groupId $groupId"
6279
# Use groupId+artifactName format for tag prefix (e.g., "com.azure.v2+azure-sdk-template_")
6380
$prefix = "$groupId+$packageName$TagSeparator"
6481
}
82+
else {
83+
Write-Host "Processing $packageName"
84+
}
6585

6686
Write-Host "Get Latest Tag : git tag -l $prefix*"
6787
$latestTags = git tag -l "$prefix*"
@@ -87,21 +107,27 @@ if ($artifacts) {
87107
if ($Language -ne "java") {
88108
SetPackageVersion -PackageName $packageName `
89109
-Version $newVersion.ToString() `
90-
-ServiceDirectory $ServiceDirectory
110+
-ServiceDirectory $artifactServiceDirectory
91111
} else {
92112
SetPackageVersion -PackageName $packageName `
93113
-Version $newVersion.ToString() `
94-
-ServiceDirectory $ServiceDirectory `
114+
-ServiceDirectory $artifactServiceDirectory `
95115
-GroupId $groupId
96116
}
97117
}
98118
}
99119
catch {
100-
LogError "Failed to process ArtifactsJson: $ArtifactsJson, exception: $($_.Exception.Message)"
120+
LogError "Failed to process Artifacts: exception: $($_.Exception.Message)"
101121
exit 1
102122
}
103-
} else {
123+
} elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
104124
# Fallback to original logic when using PackageNames string
125+
if ([String]::IsNullOrWhiteSpace($ServiceDirectory)) {
126+
LogError "ServiceDirectory is required when using PackageNames."
127+
exit 1
128+
}
129+
130+
$packageNamesArray = $PackageNames.Split(',')
105131
foreach ($packageName in $packageNamesArray) {
106132
Write-Host "Processing $packageName"
107133
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
@@ -131,4 +157,7 @@ if ($artifacts) {
131157
-Version $newVersion.ToString() `
132158
-ServiceDirectory $ServiceDirectory
133159
}
160+
} else {
161+
LogError "Either PackageNames or Artifacts must be provided."
162+
exit 1
134163
}

eng/common/scripts/logging.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ function LogGroupStart() {
9494
elseif (Test-SupportsGitHubLogging) {
9595
Write-Host "::group::$args"
9696
}
97+
else {
98+
Write-Host "> $args"
99+
}
97100
}
98101

99102
function LogGroupEnd() {

sdk/cosmos/azure-cosmos-spark_3/pom.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@
5555
<version>2.12.19</version> <!-- {x-version-update;cosmos_org.scala-lang:scala-library;external_dependency} -->
5656
<scope>provided</scope>
5757
</dependency>
58-
<dependency>
59-
<groupId>commons-io</groupId>
60-
<artifactId>commons-io</artifactId>
61-
<version>2.4</version> <!-- {x-version-update;cosmos_commons-io:commons-io;external_dependency} -->
62-
<scope>provided</scope>
63-
</dependency>
6458
<dependency>
6559
<groupId>com.azure</groupId>
6660
<artifactId>azure-cosmos</artifactId>
@@ -288,7 +282,6 @@
288282
<include>org.apache.spark:spark-sql_2.12:[3.3.0]</include> <!-- {x-include-update;cosmos-spark_3-3_org.apache.spark:spark-sql_2.12;external_dependency} -->
289283
<include>org.apache.spark:spark-sql_2.12:[3.4.0]</include> <!-- {x-include-update;cosmos-spark_3-4_org.apache.spark:spark-sql_2.12;external_dependency} -->
290284
<include>org.apache.spark:spark-sql_2.12:[3.5.0]</include> <!-- {x-include-update;cosmos-spark_3-5_org.apache.spark:spark-sql_2.12;external_dependency} -->
291-
<include>commons-io:commons-io:[2.4]</include> <!-- {x-include-update;cosmos_commons-io:commons-io;external_dependency} -->
292285
<include>org.scala-lang:scala-library:[2.12.19]</include> <!-- {x-include-update;cosmos_org.scala-lang:scala-library;external_dependency} -->
293286
<include>org.scala-lang.modules:scala-java8-compat_2.12:[0.8.0]</include> <!-- {x-include-update;cosmos_org.scala-lang.modules:scala-java8-compat_2.12;external_dependency} -->
294287
<include>io.projectreactor:reactor-scala-extensions_2.12:[0.8.0]</include> <!-- {x-include-update;cosmos_io.projectreactor:reactor-scala-extensions_2.12;external_dependency} -->

sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/ChangeFeedInitialOffsetWriter.scala

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Licensed under the MIT License.
33
package com.azure.cosmos.spark
44

5-
import org.apache.commons.io.IOUtils
65
import org.apache.spark.sql.SparkSession
76
import org.apache.spark.sql.execution.streaming.{HDFSMetadataLog, MetadataVersionUtil}
87

@@ -25,7 +24,7 @@ private class ChangeFeedInitialOffsetWriter
2524
}
2625

2726
override def deserialize(in: InputStream): String = {
28-
val content = IOUtils.toString(new InputStreamReader(in, StandardCharsets.UTF_8))
27+
val content = readerToString(new InputStreamReader(in, StandardCharsets.UTF_8))
2928
// HDFSMetadataLog would never create a partial file.
3029
require(content.nonEmpty)
3130
val indexOfNewLine = content.indexOf("\n")
@@ -37,4 +36,25 @@ private class ChangeFeedInitialOffsetWriter
3736
MetadataVersionUtil.validateVersion(content.substring(0, indexOfNewLine), VERSION)
3837
content.substring(indexOfNewLine + 1)
3938
}
39+
40+
private def readerToString(reader: java.io.Reader): String = {
41+
val writer = new StringBuilderWriter
42+
val buffer = new Array[Char](4096)
43+
Stream.continually(reader.read(buffer)).takeWhile(_ != -1).foreach(writer.write(buffer, 0, _))
44+
writer.toString
45+
}
46+
47+
private class StringBuilderWriter extends java.io.Writer {
48+
private val stringBuilder = new StringBuilder
49+
50+
override def write(cbuf: Array[Char], off: Int, len: Int): Unit = {
51+
stringBuilder.appendAll(cbuf, off, len)
52+
}
53+
54+
override def flush(): Unit = {}
55+
56+
override def close(): Unit = {}
57+
58+
override def toString: String = stringBuilder.toString()
59+
}
4060
}

sdk/spring/CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,29 @@
22
# (Unreleased)
33
Upgrade Spring Boot dependencies version to 4.0.0 and Spring Cloud dependencies version to 2025.1.0
44

5+
## 6.1.0 (Not released)
6+
7+
### Spring Cloud Azure Autoconfigure
8+
This section includes changes in `spring-cloud-azure-autoconfigure` module.
9+
10+
#### Bugs Fixed
11+
12+
- 2 `TokenCredential` bean found in AzureServiceBusMessagingAutoConfiguration. [#47470](https://github.com/Azure/azure-sdk-for-java/pull/47470)
13+
- `spring.cloud.azure.eventhubs.credential.token-credential-bean-name` not take effect in AzureEventHubsMessagingAutoConfiguration. [#47470](https://github.com/Azure/azure-sdk-for-java/pull/47470)
14+
15+
## 5.24.0 (2025-12-04)
16+
- This release is compatible with Spring Boot 3.5.0-3.5.8, 3.4.0-3.4.12, 3.3.0-3.3.13, 3.2.0-3.2.12, 3.1.0-3.1.12, 3.0.0-3.0.13. (Note: 3.5.x (x>8) and 3.4.y (y>12) should be supported, but they aren't tested with this release.)
17+
- This release is compatible with Spring Cloud 2025.0.0, 2024.0.0-2024.0.2, 2023.0.0-2023.0.5, 2022.0.0-2022.0.5. (Note: 2025.0.x(x>0) and 2024.0.y (y>2) should be supported, but they aren't tested with this release.)
18+
19+
### Spring Cloud Azure Dependencies (BOM)
20+
21+
#### Dependency Updates
22+
- Upgrade `azure-servicebus-jms` to 2.1.0.
23+
24+
### Azure Spring Data Cosmos
25+
This section includes changes in `azure-spring-data-cosmos` module.
26+
Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#5240-2025-12-04) for more details.
27+
528
## 6.0.0 (2025-09-22)
629
- This release is compatible with Spring Boot 3.5.0-3.5.5. (Note: 3.5.x (x>5) should be supported, but they aren't tested with this release.)
730
- This release is compatible with Spring Cloud 2025.0.0. (Note: 2025.0.x(x>0) should be supported, but they aren't tested with this release.)

sdk/spring/azure-spring-data-cosmos/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010

1111
#### Other Changes
1212

13+
### 5.24.0 (2025-12-04)
14+
15+
#### Other Changes
16+
* regular release
17+
1318
### 6.0.0 (2025-09-22)
1419

1520
#### Other Changes

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfiguration.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
package com.azure.spring.cloud.autoconfigure.implementation.eventhubs;
55

6+
import com.azure.core.credential.TokenCredential;
67
import com.azure.messaging.eventhubs.CheckpointStore;
78
import com.azure.messaging.eventhubs.EventData;
89
import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty;
910
import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties;
11+
import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver;
1012
import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider;
1113
import com.azure.spring.cloud.core.service.AzureServiceType;
1214
import com.azure.spring.messaging.ConsumerIdentifier;
@@ -27,6 +29,7 @@
2729
import org.slf4j.LoggerFactory;
2830
import org.springframework.beans.BeanUtils;
2931
import org.springframework.beans.factory.ObjectProvider;
32+
import org.springframework.beans.factory.annotation.Qualifier;
3033
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
3134
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3235
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -37,6 +40,7 @@
3740
import org.springframework.context.annotation.Configuration;
3841
import org.springframework.context.annotation.Import;
3942

43+
import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME;
4044
import static com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils.copyAzureCommonProperties;
4145

4246
/**
@@ -83,10 +87,16 @@ static class ProcessorContainerConfiguration {
8387
@Bean
8488
@ConditionalOnMissingBean
8589
EventHubsProcessorFactory defaultEventHubsNamespaceProcessorFactory(
86-
NamespaceProperties properties, CheckpointStore checkpointStore,
87-
ObjectProvider<PropertiesSupplier<ConsumerIdentifier, ProcessorProperties>> suppliers) {
88-
return new DefaultEventHubsNamespaceProcessorFactory(checkpointStore, properties,
90+
NamespaceProperties properties,
91+
CheckpointStore checkpointStore,
92+
ObjectProvider<PropertiesSupplier<ConsumerIdentifier, ProcessorProperties>> suppliers,
93+
ObjectProvider<AzureTokenCredentialResolver> tokenCredentialResolvers,
94+
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) ObjectProvider<TokenCredential> defaultTokenCredentials) {
95+
DefaultEventHubsNamespaceProcessorFactory factory = new DefaultEventHubsNamespaceProcessorFactory(checkpointStore, properties,
8996
suppliers.getIfAvailable());
97+
factory.setDefaultCredential(defaultTokenCredentials.getIfAvailable());
98+
factory.setTokenCredentialResolver(tokenCredentialResolvers.getIfAvailable());
99+
return factory;
90100
}
91101

92102
}
@@ -98,8 +108,13 @@ static class EventHubsTemplateConfiguration {
98108
@ConditionalOnMissingBean
99109
EventHubsProducerFactory defaultEventHubsNamespaceProducerFactory(
100110
NamespaceProperties properties,
101-
ObjectProvider<PropertiesSupplier<String, ProducerProperties>> suppliers) {
102-
return new DefaultEventHubsNamespaceProducerFactory(properties, suppliers.getIfAvailable());
111+
ObjectProvider<PropertiesSupplier<String, ProducerProperties>> suppliers,
112+
ObjectProvider<AzureTokenCredentialResolver> tokenCredentialResolvers,
113+
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) ObjectProvider<TokenCredential> defaultTokenCredentials) {
114+
DefaultEventHubsNamespaceProducerFactory factory = new DefaultEventHubsNamespaceProducerFactory(properties, suppliers.getIfAvailable());
115+
factory.setDefaultCredential(defaultTokenCredentials.getIfAvailable());
116+
factory.setTokenCredentialResolver(tokenCredentialResolvers.getIfAvailable());
117+
return factory;
103118
}
104119

105120
@Bean

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfiguration.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.slf4j.LoggerFactory;
3535
import org.springframework.beans.BeanUtils;
3636
import org.springframework.beans.factory.ObjectProvider;
37+
import org.springframework.beans.factory.annotation.Qualifier;
3738
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
3839
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3940
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -44,6 +45,7 @@
4445
import org.springframework.context.annotation.Configuration;
4546
import org.springframework.context.annotation.Import;
4647

48+
import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME;
4749
import static com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils.copyAzureCommonProperties;
4850

4951

@@ -92,7 +94,7 @@ ServiceBusProcessorFactory defaultServiceBusNamespaceProcessorFactory(
9294
NamespaceProperties properties,
9395
ObjectProvider<PropertiesSupplier<ConsumerIdentifier, ProcessorProperties>> suppliers,
9496
ObjectProvider<AzureTokenCredentialResolver> tokenCredentialResolvers,
95-
ObjectProvider<TokenCredential> defaultTokenCredentials,
97+
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) ObjectProvider<TokenCredential> defaultTokenCredentials,
9698
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder>> clientBuilderCustomizers,
9799
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusProcessorClientBuilder>> processorClientBuilderCustomizers,
98100
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder>> sessionProcessorClientBuilderCustomizers) {
@@ -115,7 +117,7 @@ ServiceBusConsumerFactory defaultServiceBusNamespaceConsumerFactory(
115117
NamespaceProperties properties,
116118
ObjectProvider<PropertiesSupplier<ConsumerIdentifier, ConsumerProperties>> suppliers,
117119
ObjectProvider<AzureTokenCredentialResolver> tokenCredentialResolvers,
118-
ObjectProvider<TokenCredential> defaultTokenCredentials,
120+
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) ObjectProvider<TokenCredential> defaultTokenCredentials,
119121
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder>> customizers,
120122
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionReceiverClientBuilder>> sessionReceiverCustomizers) {
121123
DefaultServiceBusNamespaceConsumerFactory factory = new DefaultServiceBusNamespaceConsumerFactory(properties, suppliers.getIfAvailable());
@@ -136,7 +138,7 @@ ServiceBusProducerFactory defaultServiceBusNamespaceProducerFactory(
136138
NamespaceProperties properties,
137139
ObjectProvider<PropertiesSupplier<String, ProducerProperties>> suppliers,
138140
ObjectProvider<AzureTokenCredentialResolver> tokenCredentialResolvers,
139-
ObjectProvider<TokenCredential> defaultTokenCredentials,
141+
@Qualifier(DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME) ObjectProvider<TokenCredential> defaultTokenCredentials,
140142
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder>> clientBuilderCustomizers,
141143
ObjectProvider<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSenderClientBuilder>> senderClientBuilderCustomizers) {
142144
DefaultServiceBusNamespaceProducerFactory factory = new DefaultServiceBusNamespaceProducerFactory(properties, suppliers.getIfAvailable());

0 commit comments

Comments
 (0)