diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java index 1f9c7983de7..37fe9a3b4a1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java @@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.pulsar; import java.time.Duration; import java.util.ArrayList; import java.util.LinkedHashMap; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -928,7 +927,7 @@ public class PulsarProperties { * given list. If all backup clusters are available, the Pulsar client chooses the * first backup cluster. */ - private List backupClusters = new LinkedList<>(); + private List backupClusters = new ArrayList<>(); public FailoverPolicy getFailoverPolicy() { return this.failoverPolicy; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java index d26bdbd6200..31755501b5a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java @@ -73,38 +73,32 @@ final class PulsarPropertiesMapper { Consumer serviceUrlProviderConsumer, PulsarProperties.Client properties, PulsarConnectionDetails connectionDetails) { PulsarProperties.Failover failoverProperties = properties.getFailover(); - if (!failoverProperties.getBackupClusters().isEmpty()) { - Map secondaryAuths = new LinkedHashMap<>(); - failoverProperties.getBackupClusters().forEach((cluster) -> { - PulsarProperties.Authentication authentication = cluster.getAuthentication(); - if (authentication.getPluginClassName() != null) { - customizeAuthentication((authPluginClassName, authParams) -> secondaryAuths - .put(cluster.getServiceUrl(), AuthenticationFactory.create(authPluginClassName, authParams)), - authentication); - } - else { - secondaryAuths.put(cluster.getServiceUrl(), null); - } - }); - - AutoClusterFailoverBuilder autoClusterFailoverBuilder = new AutoClusterFailoverBuilderImpl(); - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - map.from(connectionDetails::getBrokerUrl).to(autoClusterFailoverBuilder::primary); - map.from(new ArrayList<>(secondaryAuths.keySet())).to(autoClusterFailoverBuilder::secondary); - map.from(failoverProperties::getFailoverPolicy).to(autoClusterFailoverBuilder::failoverPolicy); - map.from(failoverProperties::getFailOverDelay) - .to(timeoutProperty(autoClusterFailoverBuilder::failoverDelay)); - map.from(failoverProperties::getSwitchBackDelay) - .to(timeoutProperty(autoClusterFailoverBuilder::switchBackDelay)); - map.from(failoverProperties::getCheckInterval) - .to(timeoutProperty(autoClusterFailoverBuilder::checkInterval)); - map.from(secondaryAuths).to(autoClusterFailoverBuilder::secondaryAuthentication); - - serviceUrlProviderConsumer.accept(autoClusterFailoverBuilder.build()); - } - else { + if (failoverProperties.getBackupClusters().isEmpty()) { serviceUrlConsumer.accept(connectionDetails.getBrokerUrl()); + return; } + Map secondaryAuths = new LinkedHashMap<>(); + failoverProperties.getBackupClusters().forEach((cluster) -> { + PulsarProperties.Authentication authentication = cluster.getAuthentication(); + if (authentication.getPluginClassName() == null) { + secondaryAuths.put(cluster.getServiceUrl(), null); + } + else { + customizeAuthentication((authPluginClassName, authParams) -> secondaryAuths.put(cluster.getServiceUrl(), + AuthenticationFactory.create(authPluginClassName, authParams)), authentication); + } + }); + AutoClusterFailoverBuilder autoClusterFailoverBuilder = new AutoClusterFailoverBuilderImpl(); + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + map.from(connectionDetails::getBrokerUrl).to(autoClusterFailoverBuilder::primary); + map.from(new ArrayList<>(secondaryAuths.keySet())).to(autoClusterFailoverBuilder::secondary); + map.from(failoverProperties::getFailoverPolicy).to(autoClusterFailoverBuilder::failoverPolicy); + map.from(failoverProperties::getFailOverDelay).to(timeoutProperty(autoClusterFailoverBuilder::failoverDelay)); + map.from(failoverProperties::getSwitchBackDelay) + .to(timeoutProperty(autoClusterFailoverBuilder::switchBackDelay)); + map.from(failoverProperties::getCheckInterval).to(timeoutProperty(autoClusterFailoverBuilder::checkInterval)); + map.from(secondaryAuths).to(autoClusterFailoverBuilder::secondaryAuthentication); + serviceUrlProviderConsumer.accept(autoClusterFailoverBuilder.build()); } void customizeAdminBuilder(PulsarAdminBuilder adminBuilder, PulsarConnectionDetails connectionDetails) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java index cdf8f5b7025..d398d434993 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.PulsarClientException; * * @author Swamy Mavuri */ - +@SuppressWarnings("deprecation") public class MockAuthentication implements Authentication { public Map authParamsMap = new HashMap<>(); @@ -45,7 +45,6 @@ public class MockAuthentication implements Authentication { } @Override - @Deprecated public void configure(Map authParams) { this.authParamsMap = authParams; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java index 999b0d225aa..bb3ff549ec6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java @@ -125,7 +125,6 @@ class PulsarConfigurationTests { void whenHasUserDefinedFailoverPropertiesAddsToClient() { PulsarConnectionDetails connectionDetails = mock(PulsarConnectionDetails.class); given(connectionDetails.getBrokerUrl()).willReturn("connectiondetails"); - PulsarConfigurationTests.this.contextRunner.withBean(PulsarConnectionDetails.class, () -> connectionDetails) .withPropertyValues("spring.pulsar.client.service-url=properties", "spring.pulsar.client.failover.backup-clusters[0].service-url=backup-cluster-1", @@ -138,7 +137,6 @@ class PulsarConfigurationTests { .run((context) -> { DefaultPulsarClientFactory clientFactory = context.getBean(DefaultPulsarClientFactory.class); PulsarProperties pulsarProperties = context.getBean(PulsarProperties.class); - ClientBuilder target = mock(ClientBuilder.class); BiConsumer customizeAction = PulsarClientBuilderCustomizer::customize; PulsarClientBuilderCustomizer pulsarClientBuilderCustomizer = (PulsarClientBuilderCustomizer) ReflectionTestUtils @@ -146,7 +144,6 @@ class PulsarConfigurationTests { customizeAction.accept(pulsarClientBuilderCustomizer, target); InOrder ordered = inOrder(target); ordered.verify(target).serviceUrlProvider(Mockito.any(AutoClusterFailover.class)); - assertThat(pulsarProperties.getClient().getFailover().getFailOverDelay()) .isEqualTo(Duration.ofSeconds(15)); assertThat(pulsarProperties.getClient().getFailover().getSwitchBackDelay()) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java index 55a393a5420..06b20589fe5 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java @@ -106,10 +106,8 @@ class PulsarPropertiesMapperTests { backupCluster1.getAuthentication() .setPluginClassName("org.springframework.boot.autoconfigure.pulsar.MockAuthentication"); backupCluster1.getAuthentication().setParam(params); - BackupCluster backupCluster2 = new BackupCluster(); backupCluster2.setServiceUrl("backup-cluster-2"); - PulsarProperties properties = new PulsarProperties(); properties.getClient().setServiceUrl("https://used.example.com"); properties.getClient().getFailover().setFailoverPolicy(FailoverPolicy.ORDER); @@ -117,10 +115,8 @@ class PulsarPropertiesMapperTests { properties.getClient().getFailover().setFailOverDelay(Duration.ofSeconds(30)); properties.getClient().getFailover().setSwitchBackDelay(Duration.ofSeconds(30)); properties.getClient().getFailover().setBackupClusters(List.of(backupCluster1, backupCluster2)); - PulsarConnectionDetails connectionDetails = mock(PulsarConnectionDetails.class); given(connectionDetails.getBrokerUrl()).willReturn("https://used.example.com"); - ClientBuilder builder = mock(ClientBuilder.class); new PulsarPropertiesMapper(properties).customizeClientBuilder(builder, new PropertiesPulsarConnectionDetails(properties));