diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java index b17c1639886..aba11e463c0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java @@ -1127,17 +1127,20 @@ public class RabbitProperties { } private String parseUsernameAndPassword(String input) { - if (input.contains("@")) { - String[] split = StringUtils.split(input, "@"); - String creds = split[0]; - input = split[1]; - split = StringUtils.split(creds, ":"); - this.username = split[0]; - if (split.length > 0) { - this.password = split[1]; - } + String[] splitInput = StringUtils.split(input, "@"); + if (splitInput == null) { + return input; } - return input; + String credentials = splitInput[0]; + String[] splitCredentials = StringUtils.split(credentials, ":"); + if (splitCredentials == null) { + this.username = credentials; + } + else { + this.username = splitCredentials[0]; + this.password = splitCredentials[1]; + } + return splitInput[1]; } private String parseVirtualHost(String input) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java index 9dd47e9fce9..569370b2ac6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java @@ -331,4 +331,11 @@ class RabbitPropertiesTests { assertThat(container).hasFieldOrPropertyWithValue("deBatchingEnabled", direct.isDeBatchingEnabled()); } + @Test + void determineUsernameWithoutPassword() { + this.properties.setAddresses("user@rabbit1.example.com:1234/alpha"); + assertThat(this.properties.determineUsername()).isEqualTo("user"); + assertThat(this.properties.determinePassword()).isEqualTo("guest"); + } + }