From 493e9c1ff0a97ea099c1f2c03b7e2609ed451cc5 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 24 Jan 2019 15:18:43 +0100 Subject: [PATCH 1/2] Consistent upgrade to Rome 1.12 and WebJars Locator 0.36 --- spring-test/spring-test.gradle | 2 +- spring-web/spring-web.gradle | 2 +- spring-webflux/spring-webflux.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-test/spring-test.gradle b/spring-test/spring-test.gradle index 983825d1ea0..765b2d3c65a 100644 --- a/spring-test/spring-test.gradle +++ b/spring-test/spring-test.gradle @@ -67,7 +67,7 @@ dependencies { testCompile("org.junit.jupiter:junit-jupiter-params") testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") testCompile("com.thoughtworks.xstream:xstream:1.4.10") - testCompile("com.rometools:rome:1.11.1") + testCompile("com.rometools:rome:1.12.0") testCompile("org.apache.tiles:tiles-api:${tiles3Version}") testCompile("org.apache.tiles:tiles-core:${tiles3Version}", withoutJclOverSlf4J) testCompile("org.apache.tiles:tiles-servlet:${tiles3Version}", withoutJclOverSlf4J) diff --git a/spring-web/spring-web.gradle b/spring-web/spring-web.gradle index 65540cada09..560a0ad3f23 100644 --- a/spring-web/spring-web.gradle +++ b/spring-web/spring-web.gradle @@ -58,7 +58,7 @@ dependencies { optional("com.google.code.gson:gson:2.8.5") optional("com.google.protobuf:protobuf-java-util:3.6.1") optional("com.googlecode.protobuf-java-format:protobuf-java-format:1.4") - optional("com.rometools:rome:1.11.1") + optional("com.rometools:rome:1.12.0") optional("com.caucho:hessian:4.0.51") optional("org.codehaus.groovy:groovy:${groovyVersion}") optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") diff --git a/spring-webflux/spring-webflux.gradle b/spring-webflux/spring-webflux.gradle index 2e1410b5eec..126470eed4b 100644 --- a/spring-webflux/spring-webflux.gradle +++ b/spring-webflux/spring-webflux.gradle @@ -17,7 +17,7 @@ dependencies { optional(project(":spring-context-support")) // for FreeMarker support optional("javax.servlet:javax.servlet-api:4.0.1") optional("javax.websocket:javax.websocket-api:1.1") - optional("org.webjars:webjars-locator-core:0.35") + optional("org.webjars:webjars-locator-core:0.36") optional("org.freemarker:freemarker:${freemarkerVersion}") optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson2Version}") From 7cc700435be9febfa7c5bbc1308f9c881a880730 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 24 Jan 2019 15:18:55 +0100 Subject: [PATCH 2/2] HandlerMethod skips interface parameter introspection for return value Fixes #22303 --- .../web/method/HandlerMethod.java | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java b/spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java index 3a001fb07fd..d1613211b09 100644 --- a/spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java +++ b/spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java @@ -480,26 +480,28 @@ public class HandlerMethod { Annotation[] anns = this.combinedAnnotations; if (anns == null) { anns = super.getParameterAnnotations(); - for (Annotation[][] ifcAnns : getInterfaceParameterAnnotations()) { - int index = getParameterIndex(); - if (index < ifcAnns.length) { - Annotation[] paramAnns = ifcAnns[index]; - if (paramAnns.length > 0) { - List merged = new ArrayList<>(anns.length + paramAnns.length); - merged.addAll(Arrays.asList(anns)); - for (Annotation paramAnn : paramAnns) { - boolean existingType = false; - for (Annotation ann : anns) { - if (ann.annotationType() == paramAnn.annotationType()) { - existingType = true; - break; + int index = getParameterIndex(); + if (index >= 0) { + for (Annotation[][] ifcAnns : getInterfaceParameterAnnotations()) { + if (index < ifcAnns.length) { + Annotation[] paramAnns = ifcAnns[index]; + if (paramAnns.length > 0) { + List merged = new ArrayList<>(anns.length + paramAnns.length); + merged.addAll(Arrays.asList(anns)); + for (Annotation paramAnn : paramAnns) { + boolean existingType = false; + for (Annotation ann : anns) { + if (ann.annotationType() == paramAnn.annotationType()) { + existingType = true; + break; + } + } + if (!existingType) { + merged.add(adaptAnnotation(paramAnn)); } } - if (!existingType) { - merged.add(adaptAnnotation(paramAnn)); - } + anns = merged.toArray(new Annotation[0]); } - anns = merged.toArray(new Annotation[0]); } } }