Commit 8681a8ad authored by Andy Wilkinson's avatar Andy Wilkinson

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
parent cd62596e
/*
* 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(":")) {
......
/*
* 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());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment