SPR-7812 Provide separate methods for type and method-level custom request conditions. Polish javadoc in RequestMappingInfo and related HandlerMapping classes

This commit is contained in:
Rossen Stoyanchev
2011-09-01 12:02:19 +00:00
parent ddfb2d3c58
commit b6d7c85f6e
10 changed files with 350 additions and 328 deletions

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.web.servlet.mvc.method;
package org.springframework.web.servlet.mvc.condition;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
@@ -26,36 +26,40 @@ 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
* {code org.springframework.web.servlet.mvc.method.RequestConditionHolder} tests.
*
* @author Rossen Stoyanchev
*/
public class CustomRequestConditionTests {
public class RequestConditionHolderTests {
@Test
public void combineEmpty() {
CustomRequestCondition empty = new CustomRequestCondition();
CustomRequestCondition custom = new CustomRequestCondition(new ParamsRequestCondition("name"));
RequestConditionHolder empty = new RequestConditionHolder(null);
RequestConditionHolder notEmpty = new RequestConditionHolder(new ParamsRequestCondition("name"));
assertSame(empty, empty.combine(new CustomRequestCondition()));
assertSame(custom, custom.combine(empty));
assertSame(custom, empty.combine(custom));
assertSame(empty, empty.combine(new RequestConditionHolder(null)));
assertSame(notEmpty, notEmpty.combine(empty));
assertSame(notEmpty, empty.combine(notEmpty));
}
@Test
public void combine() {
CustomRequestCondition params1 = new CustomRequestCondition(new ParamsRequestCondition("name1"));
CustomRequestCondition params2 = new CustomRequestCondition(new ParamsRequestCondition("name2"));
CustomRequestCondition expected = new CustomRequestCondition(new ParamsRequestCondition("name1", "name2"));
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));
}
@Test(expected=ClassCastException.class)
public void combineIncompatible() {
CustomRequestCondition params = new CustomRequestCondition(new ParamsRequestCondition("name"));
CustomRequestCondition headers = new CustomRequestCondition(new HeadersRequestCondition("name"));
RequestConditionHolder params = new RequestConditionHolder(new ParamsRequestCondition("name"));
RequestConditionHolder headers = new RequestConditionHolder(new HeadersRequestCondition("name"));
params.combine(headers);
}
@@ -65,7 +69,7 @@ public class CustomRequestConditionTests {
request.setParameter("name1", "value1");
RequestMethodsRequestCondition rm = new RequestMethodsRequestCondition(RequestMethod.GET, RequestMethod.POST);
CustomRequestCondition custom = new CustomRequestCondition(rm);
RequestConditionHolder custom = new RequestConditionHolder(rm);
RequestMethodsRequestCondition expected = new RequestMethodsRequestCondition(RequestMethod.GET);
assertEquals(expected, custom.getMatchingCondition(request).getCondition());
@@ -73,7 +77,7 @@ public class CustomRequestConditionTests {
@Test
public void matchEmpty() {
CustomRequestCondition empty = new CustomRequestCondition();
RequestConditionHolder empty = new RequestConditionHolder(null);
assertSame(empty, empty.getMatchingCondition(new MockHttpServletRequest()));
}
@@ -81,8 +85,8 @@ public class CustomRequestConditionTests {
public void compare() {
HttpServletRequest request = new MockHttpServletRequest();
CustomRequestCondition params11 = new CustomRequestCondition(new ParamsRequestCondition("1"));
CustomRequestCondition params12 = new CustomRequestCondition(new ParamsRequestCondition("1", "2"));
RequestConditionHolder params11 = new RequestConditionHolder(new ParamsRequestCondition("1"));
RequestConditionHolder params12 = new RequestConditionHolder(new ParamsRequestCondition("1", "2"));
assertEquals(1, params11.compareTo(params12, request));
assertEquals(-1, params12.compareTo(params11, request));
@@ -92,19 +96,19 @@ public class CustomRequestConditionTests {
public void compareEmpty() {
HttpServletRequest request = new MockHttpServletRequest();
CustomRequestCondition empty = new CustomRequestCondition();
CustomRequestCondition empty2 = new CustomRequestCondition();
CustomRequestCondition custom = new CustomRequestCondition(new ParamsRequestCondition("name"));
RequestConditionHolder empty = new RequestConditionHolder(null);
RequestConditionHolder empty2 = new RequestConditionHolder(null);
RequestConditionHolder notEmpty = new RequestConditionHolder(new ParamsRequestCondition("name"));
assertEquals(0, empty.compareTo(empty2, request));
assertEquals(-1, custom.compareTo(empty, request));
assertEquals(1, empty.compareTo(custom, request));
assertEquals(-1, notEmpty.compareTo(empty, request));
assertEquals(1, empty.compareTo(notEmpty, request));
}
@Test(expected=ClassCastException.class)
public void compareIncompatible() {
CustomRequestCondition params = new CustomRequestCondition(new ParamsRequestCondition("name"));
CustomRequestCondition headers = new CustomRequestCondition(new HeadersRequestCondition("name"));
RequestConditionHolder params = new RequestConditionHolder(new ParamsRequestCondition("name"));
RequestConditionHolder headers = new RequestConditionHolder(new HeadersRequestCondition("name"));
params.compareTo(headers, new MockHttpServletRequest());
}

View File

@@ -54,11 +54,10 @@ import org.springframework.web.servlet.mvc.condition.ParamsRequestCondition;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.servlet.mvc.condition.ProducesRequestCondition;
import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import org.springframework.web.util.UrlPathHelper;
/**
* Test fixture with {@link RequestMappingHandlerMapping}.
* Test fixture with {@link RequestMappingInfoHandlerMapping}.
*
* @author Arjen Poutsma
* @author Rossen Stoyanchev
@@ -275,6 +274,7 @@ public class RequestMappingInfoHandlerMappingTests {
new ConsumesRequestCondition(annotation.consumes(), annotation.headers()),
new ProducesRequestCondition(annotation.produces(), annotation.headers()), null);
}
}
}

View File

@@ -67,14 +67,14 @@ public class RequestMappingInfoTests {
RequestMappingInfo expected = new RequestMappingInfo(
new PatternsRequestCondition("/foo*"), null, null, null, null, null, null);
assertEquals(expected, info.getMatchingInfo(request));
assertEquals(expected, info.getMatchingCondition(request));
info = new RequestMappingInfo(
new PatternsRequestCondition("/**", "/foo*", "/foo"), null, null, null, null, null, null);
expected = new RequestMappingInfo(
new PatternsRequestCondition("/foo", "/foo*", "/**"), null, null, null, null, null, null);
assertEquals(expected, info.getMatchingInfo(request));
assertEquals(expected, info.getMatchingCondition(request));
}
@Test
@@ -86,14 +86,14 @@ public class RequestMappingInfoTests {
new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null,
new ParamsRequestCondition("foo=bar"), null, null, null, null);
RequestMappingInfo match = info.getMatchingInfo(request);
RequestMappingInfo match = info.getMatchingCondition(request);
assertNotNull(match);
info = new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null,
new ParamsRequestCondition("foo!=bar"), null, null, null, null);
match = info.getMatchingInfo(request);
match = info.getMatchingCondition(request);
assertNull(match);
}
@@ -107,14 +107,14 @@ public class RequestMappingInfoTests {
new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null,
new HeadersRequestCondition("foo=bar"), null, null, null);
RequestMappingInfo match = info.getMatchingInfo(request);
RequestMappingInfo match = info.getMatchingCondition(request);
assertNotNull(match);
info = new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null,
new HeadersRequestCondition("foo!=bar"), null, null, null);
match = info.getMatchingInfo(request);
match = info.getMatchingCondition(request);
assertNull(match);
}
@@ -128,14 +128,14 @@ public class RequestMappingInfoTests {
new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null, null,
new ConsumesRequestCondition("text/plain"), null, null);
RequestMappingInfo match = info.getMatchingInfo(request);
RequestMappingInfo match = info.getMatchingCondition(request);
assertNotNull(match);
info = new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null, null,
new ConsumesRequestCondition("application/xml"), null, null);
match = info.getMatchingInfo(request);
match = info.getMatchingCondition(request);
assertNull(match);
}
@@ -149,14 +149,14 @@ public class RequestMappingInfoTests {
new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null, null, null,
new ProducesRequestCondition("text/plain"), null);
RequestMappingInfo match = info.getMatchingInfo(request);
RequestMappingInfo match = info.getMatchingCondition(request);
assertNotNull(match);
info = new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null, null, null,
new ProducesRequestCondition("application/xml"), null);
match = info.getMatchingInfo(request);
match = info.getMatchingCondition(request);
assertNull(match);
}
@@ -170,7 +170,7 @@ public class RequestMappingInfoTests {
new RequestMappingInfo(
new PatternsRequestCondition("/foo"), null, null, null, null, null,
new ParamsRequestCondition("foo=bar"));
RequestMappingInfo match = info.getMatchingInfo(request);
RequestMappingInfo match = info.getMatchingCondition(request);
assertNotNull(match);
@@ -178,7 +178,7 @@ public class RequestMappingInfoTests {
new PatternsRequestCondition("/foo"), null,
new ParamsRequestCondition("foo!=bar"), null, null, null,
new ParamsRequestCondition("foo!=bar"));
match = info.getMatchingInfo(request);
match = info.getMatchingCondition(request);
assertNull(match);
}