Fix bug with custom RequestCondition

A custom RequestCondition which can be provided by overriding methods
in RequestMappingHandlerMapping worked only for conditions that match
and did not return null (as it should have) for conditions that don't
match.

Issues: SPR-9134
This commit is contained in:
Rossen Stoyanchev
2012-04-02 15:19:38 -04:00
parent 9833a4c385
commit 64ee5e579a
2 changed files with 32 additions and 25 deletions

View File

@@ -17,6 +17,7 @@
package org.springframework.web.servlet.mvc.condition;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import javax.servlet.http.HttpServletRequest;
@@ -24,15 +25,11 @@ import javax.servlet.http.HttpServletRequest;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.condition.HeadersRequestCondition;
import org.springframework.web.servlet.mvc.condition.ParamsRequestCondition;
import org.springframework.web.servlet.mvc.condition.RequestConditionHolder;
import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;
/**
* A test fixture for
* A test fixture for
* {code org.springframework.web.servlet.mvc.method.RequestConditionHolder} tests.
*
*
* @author Rossen Stoyanchev
*/
public class RequestConditionHolderTests {
@@ -41,7 +38,7 @@ public class RequestConditionHolderTests {
public void combineEmpty() {
RequestConditionHolder empty = new RequestConditionHolder(null);
RequestConditionHolder notEmpty = new RequestConditionHolder(new ParamsRequestCondition("name"));
assertSame(empty, empty.combine(new RequestConditionHolder(null)));
assertSame(notEmpty, notEmpty.combine(empty));
assertSame(notEmpty, empty.combine(notEmpty));
@@ -52,7 +49,7 @@ public class RequestConditionHolderTests {
RequestConditionHolder params1 = new RequestConditionHolder(new ParamsRequestCondition("name1"));
RequestConditionHolder params2 = new RequestConditionHolder(new ParamsRequestCondition("name2"));
RequestConditionHolder expected = new RequestConditionHolder(new ParamsRequestCondition("name1", "name2"));
assertEquals(expected, params1.combine(params2));
}
@@ -67,14 +64,24 @@ public class RequestConditionHolderTests {
public void match() {
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
request.setParameter("name1", "value1");
RequestMethodsRequestCondition rm = new RequestMethodsRequestCondition(RequestMethod.GET, RequestMethod.POST);
RequestConditionHolder custom = new RequestConditionHolder(rm);
RequestMethodsRequestCondition expected = new RequestMethodsRequestCondition(RequestMethod.GET);
assertEquals(expected, custom.getMatchingCondition(request).getCondition());
}
@Test
public void noMatch() {
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
RequestMethodsRequestCondition rm = new RequestMethodsRequestCondition(RequestMethod.POST);
RequestConditionHolder custom = new RequestConditionHolder(rm);
assertNull(custom.getMatchingCondition(request));
}
@Test
public void matchEmpty() {
RequestConditionHolder empty = new RequestConditionHolder(null);
@@ -91,7 +98,7 @@ public class RequestConditionHolderTests {
assertEquals(1, params11.compareTo(params12, request));
assertEquals(-1, params12.compareTo(params11, request));
}
@Test
public void compareEmpty() {
HttpServletRequest request = new MockHttpServletRequest();