Add test for bridge method support in MvcUriComponentsBuilder

This commit introduces a new fromMethodNameWithBridgedMethod() test in
MvcUriComponentsBuilderTests which is currently disabled via @Ignore
until this bug is resolved.

Issue: SPR-12977
master
Sam Brannen 10 years ago
parent bb3f26483b
commit 859751b9d9
  1. 41
      spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilderTests.java

@ -16,10 +16,6 @@
package org.springframework.web.servlet.mvc.method.annotation; package org.springframework.web.servlet.mvc.method.annotation;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.*;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@ -29,10 +25,13 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.ISODateTimeFormat; import org.joda.time.format.ISODateTimeFormat;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -58,21 +57,25 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.*;
/** /**
* Unit tests for {@link org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder}. * Unit tests for {@link org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder}.
* *
* @author Oliver Gierke * @author Oliver Gierke
* @author Dietrich Schulten * @author Dietrich Schulten
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Sam Brannen
*/ */
public class MvcUriComponentsBuilderTests { public class MvcUriComponentsBuilderTests {
private MockHttpServletRequest request; private final MockHttpServletRequest request = new MockHttpServletRequest();
@Before @Before
public void setUp() { public void setUp() {
this.request = new MockHttpServletRequest();
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(this.request)); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(this.request));
} }
@ -169,6 +172,14 @@ public class MvcUriComponentsBuilderTests {
assertThat(queryParams.get("offset"), contains("10")); assertThat(queryParams.get("offset"), contains("10"));
} }
@Test
// TODO [SPR-12977] Enable fromMethodNameWithBridgedMethod() test.
@Ignore("Disabled until SPR-12977 is resolved")
public void fromMethodNameWithBridgedMethod() throws Exception {
UriComponents uriComponents = fromMethodName(PersonCrudController.class, "get", new Long(42)).build();
assertThat(uriComponents.toUriString(), is("http://localhost/get/42"));
}
// SPR-11391 // SPR-11391
@Test @Test
@ -356,7 +367,6 @@ public class MvcUriComponentsBuilderTests {
} }
@SuppressWarnings("unused")
@RequestMapping("/people/{id}/addresses") @RequestMapping("/people/{id}/addresses")
static class PersonsAddressesController { static class PersonsAddressesController {
@ -371,7 +381,6 @@ public class MvcUriComponentsBuilderTests {
} }
@SuppressWarnings("unused")
class UnmappedController { class UnmappedController {
@RequestMapping @RequestMapping
@ -379,7 +388,6 @@ public class MvcUriComponentsBuilderTests {
} }
} }
@SuppressWarnings("unused")
@RequestMapping("/something") @RequestMapping("/something")
static class ControllerWithMethods { static class ControllerWithMethods {
@ -412,7 +420,6 @@ public class MvcUriComponentsBuilderTests {
} }
} }
@SuppressWarnings("unused")
@RequestMapping("/user/{userId}/contacts") @RequestMapping("/user/{userId}/contacts")
static class UserContactController { static class UserContactController {
@ -422,7 +429,19 @@ public class MvcUriComponentsBuilderTests {
} }
} }
@SuppressWarnings("unused") static abstract class AbstractCrudController<T, ID> {
abstract T get(ID id);
}
static class PersonCrudController extends AbstractCrudController<Person, Long> {
@RequestMapping(path = "/{id}", method = RequestMethod.GET)
public Person get(@PathVariable Long id) {
return new Person();
}
}
@Controller @Controller
static class MetaAnnotationController { static class MetaAnnotationController {

Loading…
Cancel
Save