Skip to content

Commit a562d21

Browse files
committed
Merge branch '2.2.x'
Closes gh-19113
2 parents be938f0 + a4ca1d0 commit a562d21

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
@@ -189,7 +189,7 @@ public void setAddresses(String addresses) {
189189
private List<Address> parseAddresses(String addresses) {
190190
List<Address> parsedAddresses = new ArrayList<>();
191191
for (String address : StringUtils.commaDelimitedListToStringArray(addresses)) {
192-
parsedAddresses.add(new Address(address));
192+
parsedAddresses.add(new Address(address, getSsl().isEnabled()));
193193
}
194194
return parsedAddresses;
195195
}
@@ -390,7 +390,7 @@ public boolean determineEnabled() {
390390
return isEnabled();
391391
}
392392
Address address = RabbitProperties.this.parsedAddresses.get(0);
393-
return address.secureConnection;
393+
return address.determineSslEnabled(isEnabled());
394394
}
395395

396396
public void setEnabled(boolean enabled) {
@@ -989,14 +989,14 @@ private static final class Address {
989989

990990
private String virtualHost;
991991

992-
private boolean secureConnection;
992+
private Boolean secureConnection;
993993

994-
private Address(String input) {
994+
private Address(String input, boolean sslEnabled) {
995995
input = input.trim();
996996
input = trimPrefix(input);
997997
input = parseUsernameAndPassword(input);
998998
input = parseVirtualHost(input);
999-
parseHostAndPort(input);
999+
parseHostAndPort(input, sslEnabled);
10001000
}
10011001

10021002
private String trimPrefix(String input) {
@@ -1005,7 +1005,8 @@ private String trimPrefix(String input) {
10051005
return input.substring(PREFIX_AMQP_SECURE.length());
10061006
}
10071007
if (input.startsWith(PREFIX_AMQP)) {
1008-
input = input.substring(PREFIX_AMQP.length());
1008+
this.secureConnection = false;
1009+
return input.substring(PREFIX_AMQP.length());
10091010
}
10101011
return input;
10111012
}
@@ -1036,18 +1037,22 @@ private String parseVirtualHost(String input) {
10361037
return input;
10371038
}
10381039

1039-
private void parseHostAndPort(String input) {
1040+
private void parseHostAndPort(String input, boolean sslEnabled) {
10401041
int portIndex = input.indexOf(':');
10411042
if (portIndex == -1) {
10421043
this.host = input;
1043-
this.port = (this.secureConnection) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
1044+
this.port = (determineSslEnabled(sslEnabled)) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
10441045
}
10451046
else {
10461047
this.host = input.substring(0, portIndex);
10471048
this.port = Integer.valueOf(input.substring(portIndex + 1));
10481049
}
10491050
}
10501051

1052+
private boolean determineSslEnabled(boolean sslEnabled) {
1053+
return (this.secureConnection != null) ? this.secureConnection : sslEnabled;
1054+
}
1055+
10511056
}
10521057

10531058
}

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
@@ -102,6 +102,14 @@ void determinePortUsingAmqpsReturnsPortOfFirstAddress() {
102102
assertThat(this.properties.determinePort()).isEqualTo(5671);
103103
}
104104

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

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

0 commit comments

Comments
 (0)