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
This commit is contained in:
commit
d386ee0984
|
@ -188,7 +188,7 @@ public class RabbitProperties {
|
|||
private List<Address> parseAddresses(String addresses) {
|
||||
List<Address> parsedAddresses = new ArrayList<>();
|
||||
for (String address : StringUtils.commaDelimitedListToStringArray(addresses)) {
|
||||
parsedAddresses.add(new Address(address));
|
||||
parsedAddresses.add(new Address(address, getSsl().isEnabled()));
|
||||
}
|
||||
return parsedAddresses;
|
||||
}
|
||||
|
@ -378,7 +378,7 @@ public class RabbitProperties {
|
|||
return isEnabled();
|
||||
}
|
||||
Address address = RabbitProperties.this.parsedAddresses.get(0);
|
||||
return address.secureConnection;
|
||||
return address.determineSslEnabled(isEnabled());
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
|
@ -966,14 +966,14 @@ public class RabbitProperties {
|
|||
|
||||
private String virtualHost;
|
||||
|
||||
private boolean secureConnection;
|
||||
private Boolean secureConnection;
|
||||
|
||||
private Address(String input) {
|
||||
private Address(String input, boolean sslEnabled) {
|
||||
input = input.trim();
|
||||
input = trimPrefix(input);
|
||||
input = parseUsernameAndPassword(input);
|
||||
input = parseVirtualHost(input);
|
||||
parseHostAndPort(input);
|
||||
parseHostAndPort(input, sslEnabled);
|
||||
}
|
||||
|
||||
private String trimPrefix(String input) {
|
||||
|
@ -982,7 +982,8 @@ public class RabbitProperties {
|
|||
return input.substring(PREFIX_AMQP_SECURE.length());
|
||||
}
|
||||
if (input.startsWith(PREFIX_AMQP)) {
|
||||
input = input.substring(PREFIX_AMQP.length());
|
||||
this.secureConnection = false;
|
||||
return input.substring(PREFIX_AMQP.length());
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
@ -1013,11 +1014,11 @@ public class RabbitProperties {
|
|||
return input;
|
||||
}
|
||||
|
||||
private void parseHostAndPort(String input) {
|
||||
private void parseHostAndPort(String input, boolean sslEnabled) {
|
||||
int portIndex = input.indexOf(':');
|
||||
if (portIndex == -1) {
|
||||
this.host = input;
|
||||
this.port = (this.secureConnection) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
|
||||
this.port = (determineSslEnabled(sslEnabled)) ? DEFAULT_PORT_SECURE : DEFAULT_PORT;
|
||||
}
|
||||
else {
|
||||
this.host = input.substring(0, portIndex);
|
||||
|
@ -1025,6 +1026,10 @@ public class RabbitProperties {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean determineSslEnabled(boolean sslEnabled) {
|
||||
return (this.secureConnection != null) ? this.secureConnection : sslEnabled;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -101,6 +101,14 @@ public class RabbitPropertiesTests {
|
|||
assertThat(this.properties.determinePort()).isEqualTo(5671);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void determinePortReturnsDefaultAmqpsPortWhenFirstAddressHasNoExplicitPortButSslEnabled() {
|
||||
this.properties.getSsl().setEnabled(true);
|
||||
this.properties.setPort(1234);
|
||||
this.properties.setAddresses("rabbit1.example.com,rabbit2.example.com:2345");
|
||||
assertThat(this.properties.determinePort()).isEqualTo(5671);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void virtualHostDefaultsToNull() {
|
||||
assertThat(this.properties.getVirtualHost()).isNull();
|
||||
|
@ -240,6 +248,20 @@ public class RabbitPropertiesTests {
|
|||
assertThat(this.properties.getSsl().determineEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sslDetermineEnabledIsTrueWhenAddressHasNoProtocolAndSslIsEnabled() {
|
||||
this.properties.getSsl().setEnabled(true);
|
||||
this.properties.setAddresses("root:password@otherhost");
|
||||
assertThat(this.properties.getSsl().determineEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sslDetermineEnabledIsFalseWhenAddressHasNoProtocolAndSslIsDisabled() {
|
||||
this.properties.getSsl().setEnabled(false);
|
||||
this.properties.setAddresses("root:password@otherhost");
|
||||
assertThat(this.properties.getSsl().determineEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void determineSslUsingAmqpReturnsStateOfFirstAddress() {
|
||||
this.properties.setAddresses("amqp://root:password@otherhost,amqps://root:password2@otherhost2");
|
||||
|
|
Loading…
Reference in New Issue