Commit 9823d078 by Dave Syer

Revert "Add support in SpringMvcContract for query string in Class @RequestMapping"

This reverts commit 2c502e39.
parent 2b58487a
......@@ -107,26 +107,6 @@ public class SpringMvcContract extends Contract.BaseContract
}
@Override
protected void processAnnotationOnClass(MethodMetadata data, Class<?> clz) {
if(clz.getInterfaces().length == 0) {
RequestMapping classAnnotation = findMergedAnnotation(clz,
RequestMapping.class);
if (classAnnotation != null) {
// Prepend path from class annotation if specified
if (classAnnotation.value().length > 0) {
String pathValue = emptyToNull(classAnnotation.value()[0]);
pathValue = resolve(pathValue);
if (!pathValue.startsWith("/")) {
pathValue = "/" + pathValue;
}
data.template().insert(0, pathValue);
}
}
}
}
@Override
public MethodMetadata parseAndValidateMetadata(Class<?> targetType, Method method) {
this.processedMethods.put(Feign.configKey(targetType, method), method);
MethodMetadata md = super.parseAndValidateMetadata(targetType, method);
......@@ -134,6 +114,19 @@ public class SpringMvcContract extends Contract.BaseContract
RequestMapping classAnnotation = findMergedAnnotation(targetType,
RequestMapping.class);
if (classAnnotation != null) {
// Prepend path from class annotation if specified
if (classAnnotation.value().length > 0) {
String pathValue = emptyToNull(classAnnotation.value()[0]);
checkState(pathValue != null,
"RequestMapping.value() was empty on type %s",
method.getDeclaringClass().getName());
pathValue = resolve(pathValue);
if (!pathValue.startsWith("/")) {
pathValue = "/" + pathValue;
}
md.template().insert(0, pathValue);
}
// produces - use from class annotation only if method has not specified this
if (!md.template().headers().containsKey(ACCEPT)) {
parseProduces(md, method, classAnnotation);
......
......@@ -72,51 +72,39 @@ public class SpringMvcContractTests {
String.class);
MethodMetadata data = this.contract
.parseAndValidateMetadata(method.getDeclaringClass(), method);
MethodMetadata extendingData = this.contract
.parseAndValidateMetadata(method.getDeclaringClass(), method);
assertEquals("/prepend/{anotherId}", data.template().url());
assertEquals(data.template().url(), extendingData.template().url());
assertEquals("/test/{id}", data.template().url());
assertEquals("GET", data.template().method());
assertEquals(data.template().method(), extendingData.template().method());
assertEquals(MediaType.APPLICATION_JSON_VALUE,
data.template().headers().get("Accept").iterator().next());
assertEquals(data.template().headers().get("Accept").iterator().next(),
extendingData.template().headers().get("Accept").iterator().next());
assertEquals("anotherId", data.indexToName().get(0).iterator().next());
assertEquals(data.indexToName().get(0).iterator().next(),
extendingData.indexToName().get(0).iterator().next());
}
@Test
public void testProcessAnnotations_Simple() throws Exception {
Method method = TestTemplate_Simple.class.getDeclaredMethod("getTest",
String.class, String.class);
String.class);
MethodMetadata data = this.contract
.parseAndValidateMetadata(method.getDeclaringClass(), method);
assertEquals("/prepend/{anotherId}/test/{id}", data.template().url());
assertEquals("/test/{id}", data.template().url());
assertEquals("GET", data.template().method());
assertEquals(MediaType.APPLICATION_JSON_VALUE,
data.template().headers().get("Accept").iterator().next());
assertEquals("anotherId", data.indexToName().get(0).iterator().next());
assertEquals("id", data.indexToName().get(1).iterator().next());
assertEquals("id", data.indexToName().get(0).iterator().next());
}
@Test
public void testProcessAnnotations_SimplePost() throws Exception {
Method method = TestTemplate_Simple.class.getDeclaredMethod("postTest",
String.class, TestObject.class);
TestObject.class);
MethodMetadata data = this.contract
.parseAndValidateMetadata(method.getDeclaringClass(), method);
assertEquals("/prepend/{anotherId}", data.template().url());
assertEquals("", data.template().url());
assertEquals("POST", data.template().method());
assertEquals(MediaType.APPLICATION_JSON_VALUE,
data.template().headers().get("Accept").iterator().next());
assertEquals("anotherId", data.indexToName().get(0).iterator().next());
}
......@@ -200,16 +188,14 @@ public class SpringMvcContractTests {
@Test
public void testProcessAnnotations_Advanced3() throws Exception {
Method method = TestTemplate_Simple.class.getDeclaredMethod("getTest",
String.class);
Method method = TestTemplate_Simple.class.getDeclaredMethod("getTest");
MethodMetadata data = this.contract
.parseAndValidateMetadata(method.getDeclaringClass(), method);
assertEquals("/prepend/{anotherId}", data.template().url());
assertEquals("", data.template().url());
assertEquals("GET", data.template().method());
assertEquals(MediaType.APPLICATION_JSON_VALUE,
data.template().headers().get("Accept").iterator().next());
assertEquals("anotherId", data.indexToName().get(0).iterator().next());
}
@Test
......@@ -276,20 +262,15 @@ public class SpringMvcContractTests {
return false;
}
@RequestMapping("/prepend/{anotherId}")
public interface TestTemplate_Simple {
@RequestMapping(value = "/test/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<TestObject> getTest(@PathVariable String anotherId, @PathVariable String id);
ResponseEntity<TestObject> getTest(@PathVariable("id") String id);
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
TestObject getTest(@PathVariable String anotherId);
TestObject getTest();
@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
TestObject postTest(@PathVariable String anotherId, @RequestBody TestObject object);
}
public interface TestTemplate_Simple_Extending extends TestTemplate_Simple{
TestObject postTest(@RequestBody TestObject object);
}
public interface TestTemplate_Headers {
......
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