Skip to content

Commit d386ee0

Browse files
committed
Merge pull request #19109 from bono007
* pr/19109: Polish "Use ssl.enabled flag when RabbitMQ address has no protocol" Use ssl.enabled flag when RabbitMQ address has no protocol Closes gh-19109
2 parents a38e6b4 + 5d8fe86 commit d386ee0

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public void setAddresses(String addresses) {
188188
private List<Address> parseAddresses(String addresses) {
189189
List<Address> parsedAddresses = new ArrayList<>();
190190
for (String address : StringUtils.commaDelimitedListToStringArray(addresses)) {
191-
parsedAddresses.add(new Address(address));
191+
parsedAddresses.add(new Address(address, getSsl().isEnabled()));
192192
}
193193
return parsedAddresses;
194194
}
@@ -378,7 +378,7 @@ public boolean determineEnabled() {
378378
return isEnabled();
379379
}
380380
Address address = RabbitProperties.this.parsedAddresses.get(0);
381-
return address.secureConnection;
381+
return address.determineSslEnabled(isEnabled());
382382
}
383383

384384
public void setEnabled(boolean enabled) {
@@ -966,14 +966,14 @@ private static final class Address {
966966

967967
private String virtualHost;
968968

969-
private boolean secureConnection;
969+
private Boolean secureConnection;
970970

971-
private Address(String input) {
971+
private Address(String input, boolean sslEnabled) {
972972
input = input.trim();
973973
input = trimPrefix(input);
974974
input = parseUsernameAndPassword(input);
975975
input = parseVirtualHost(input);
976-
parseHostAndPort(input);
976+
parseHostAndPort(input, sslEnabled);
977977
}
978978

979979
private String trimPrefix(String input) {
@@ -982,7 +982,8 @@ private String trimPrefix(String input) {
982982
return input.substring(PREFIX_AMQP_SECURE.length());
983983
}
984984
if (input.startsWith(PREFIX_AMQP)) {
985-
input = input.substring(PREFIX_AMQP.length());
985+
this.secureConnection = false;
986+
return input.substring(PREFIX_AMQP.length());
986987
}
987988
return input;
988989
}
@@ -1013,18 +1014,22 @@ private String parseVirtualHost(String input) {
10131014
return input;
10141015
}
10151016

1016-
private void parseHostAndPort(String input) {
1017+
private void parseHostAndPort(String input, boolean sslEnabled) {
10171018
int portIndex = input.indexOf(':');
10181019
if (portIndex == -1) {
10191020
this.host = input;
1020-
this.port = (this.secureConnection) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
1021+
this.port = (determineSslEnabled(sslEnabled)) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
10211022
}
10221023
else {
10231024
this.host = input.substring(0, portIndex);
10241025
this.port = Integer.valueOf(input.substring(portIndex + 1));
10251026
}
10261027
}
10271028

1029+
private boolean determineSslEnabled(boolean sslEnabled) {
1030+
return (this.secureConnection != null) ? this.secureConnection : sslEnabled;
1031+
}
1032+
10281033
}
10291034

10301035
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,14 @@ public void determinePortUsingAmqpsReturnsPortOfFirstAddress() {
101101
assertThat(this.properties.determinePort()).isEqualTo(5671);
102102
}
103103

104+
@Test
105+
public void determinePortReturnsDefaultAmqpsPortWhenFirstAddressHasNoExplicitPortButSslEnabled() {
106+
this.properties.getSsl().setEnabled(true);
107+
this.properties.setPort(1234);
108+
this.properties.setAddresses("rabbit1.example.com,rabbit2.example.com:2345");
109+
assertThat(this.properties.determinePort()).isEqualTo(5671);
110+
}
111+
104112
@Test
105113
public void virtualHostDefaultsToNull() {
106114
assertThat(this.properties.getVirtualHost()).isNull();
@@ -240,6 +248,20 @@ public void determineSslUsingAmqpsReturnsStateOfFirstAddress() {
240248
assertThat(this.properties.getSsl().determineEnabled()).isTrue();
241249
}
242250

251+
@Test
252+
public void sslDetermineEnabledIsTrueWhenAddressHasNoProtocolAndSslIsEnabled() {
253+
this.properties.getSsl().setEnabled(true);
254+
this.properties.setAddresses("root:password@otherhost");
255+
assertThat(this.properties.getSsl().determineEnabled()).isTrue();
256+
}
257+
258+
@Test
259+
public void sslDetermineEnabledIsFalseWhenAddressHasNoProtocolAndSslIsDisabled() {
260+
this.properties.getSsl().setEnabled(false);
261+
this.properties.setAddresses("root:password@otherhost");
262+
assertThat(this.properties.getSsl().determineEnabled()).isFalse();
263+
}
264+
243265
@Test
244266
public void determineSslUsingAmqpReturnsStateOfFirstAddress() {
245267
this.properties.setAddresses("amqp://root:password@otherhost,amqps://root:password2@otherhost2");

0 commit comments

Comments
 (0)