Map empty virtual host to "/" when parsed from an address

Previously, an address that ended in a "/" would result in the virtual
host being an empty string. This was inconsistent with setVirtualHost
which would map an empty string to "/".

This commit updates the address parsing logic to call setVirtualHost
rather than assigning the value directly to this.virtualHost. This
ensures that the special handling for an empty string is applied
consistently.

Closes gh-3304
pull/3885/head
Andy Wilkinson 10 years ago
parent cd62596e82
commit 8681a8ad2a

@ -1,5 +1,5 @@
/*
* Copyright 2012-2014 the original author or authors.
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -27,6 +27,7 @@ import org.springframework.util.StringUtils;
*
* @author Greg Turnquist
* @author Dave Syer
* @author Andy Wilkinson
*/
@ConfigurationProperties(prefix = "spring.rabbitmq")
public class RabbitProperties {
@ -115,7 +116,7 @@ public class RabbitProperties {
}
int index = address.indexOf("/");
if (index >= 0 && index < address.length()) {
this.virtualHost = address.substring(index + 1);
setVirtualHost(address.substring(index + 1));
address = address.substring(0, index);
}
if (!address.contains(":")) {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2014 the original author or authors.
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -25,6 +25,7 @@ import static org.junit.Assert.assertNull;
* Tests for {@link RabbitProperties}.
*
* @author Dave Syer
* @author Andy Wilkinson
*/
public class RabbitPropertiesTests {
@ -85,6 +86,15 @@ public class RabbitPropertiesTests {
assertEquals("lemur.cloudamqp.com:5672", this.properties.getAddresses());
}
@Test
public void addressWithTrailingSlash() {
this.properties.setAddresses("amqp://root:password@otherhost:1111/");
assertEquals("otherhost", this.properties.getHost());
assertEquals(1111, this.properties.getPort());
assertEquals("root", this.properties.getUsername());
assertEquals("/", this.properties.getVirtualHost());
}
@Test
public void testDefaultVirtualHost() {
this.properties.setVirtualHost("/");
@ -92,7 +102,7 @@ public class RabbitPropertiesTests {
}
@Test
public void testemptyVirtualHost() {
public void testEmptyVirtualHost() {
this.properties.setVirtualHost("");
assertEquals("/", this.properties.getVirtualHost());
}

Loading…
Cancel
Save