Browse Source

Introduce alias for 'value' attribute in @RequestHeader

Issue: SPR-11393
pull/811/head
Sam Brannen 11 years ago
parent
commit
25a5d9d759
  1. 18
      spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java
  2. 2
      spring-web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java
  3. 4
      spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java
  4. 8
      spring-web/src/test/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolverTests.java

18
spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2014 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -22,9 +22,12 @@ import java.lang.annotation.Retention; @@ -22,9 +22,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
/**
* Annotation which indicates that a method parameter should be bound to a web request header.
* Supported for annotated handler methods in Servlet and Portlet environments.
*
* <p>Supported for annotated handler methods in Servlet and Portlet environments.
*
* <p>If the method parameter is {@link java.util.Map Map&lt;String, String&gt;} or
* {@link org.springframework.util.MultiValueMap MultiValueMap&lt;String, String&gt;},
@ -32,6 +35,7 @@ import java.lang.annotation.Target; @@ -32,6 +35,7 @@ import java.lang.annotation.Target;
* populated with all header names and values.
*
* @author Juergen Hoeller
* @author Sam Brannen
* @since 3.0
* @see RequestMapping
* @see RequestParam
@ -45,10 +49,18 @@ import java.lang.annotation.Target; @@ -45,10 +49,18 @@ import java.lang.annotation.Target;
public @interface RequestHeader {
/**
* The name of the request header to bind to.
* Alias for {@link #name}.
*/
@AliasFor(attribute = "name")
String value() default "";
/**
* The name of the request header to bind to.
* @since 4.2
*/
@AliasFor(attribute = "value")
String name() default "";
/**
* Whether the header is required.
* <p>Default is {@code true}, leading to an exception thrown in case

2
spring-web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java

@ -267,7 +267,7 @@ public class HandlerMethodInvoker { @@ -267,7 +267,7 @@ public class HandlerMethodInvoker {
}
else if (RequestHeader.class.isInstance(paramAnn)) {
RequestHeader requestHeader = (RequestHeader) paramAnn;
headerName = requestHeader.value();
headerName = requestHeader.name();
required = requestHeader.required();
defaultValue = parseDefaultValueAttribute(requestHeader.defaultValue());
annotationsFound++;

4
spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolver.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2014 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -86,7 +86,7 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho @@ -86,7 +86,7 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho
private static class RequestHeaderNamedValueInfo extends NamedValueInfo {
private RequestHeaderNamedValueInfo(RequestHeader annotation) {
super(annotation.value(), annotation.required(), annotation.defaultValue());
super(annotation.name(), annotation.required(), annotation.defaultValue());
}
}

8
spring-web/src/test/java/org/springframework/web/method/annotation/RequestHeaderMethodArgumentResolverTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -141,10 +141,10 @@ public class RequestHeaderMethodArgumentResolverTests { @@ -141,10 +141,10 @@ public class RequestHeaderMethodArgumentResolverTests {
resolver.resolveArgument(paramNamedValueStringArray, null, webRequest, null);
}
public void params(@RequestHeader(value = "name", defaultValue = "bar") String param1,
public void params(@RequestHeader(name = "name", defaultValue = "bar") String param1,
@RequestHeader("name") String[] param2,
@RequestHeader(value = "name", defaultValue="#{systemProperties.systemProperty}") String param3,
@RequestHeader(value = "name", defaultValue="#{request.contextPath}") String param4,
@RequestHeader(name = "name", defaultValue="#{systemProperties.systemProperty}") String param3,
@RequestHeader(name = "name", defaultValue="#{request.contextPath}") String param4,
@RequestHeader("name") Map<?, ?> unsupported) {
}

Loading…
Cancel
Save