From 0d6b01b694ecd0d512ff5c54c3f18bc1c63401c2 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 31 May 2015 21:08:26 +0200 Subject: [PATCH] Introduce alias for 'value' attribute in @ActionMapping Issue: SPR-11393 --- .../bind/annotation/ActionMapping.java | 32 +++++++++++++------ .../AnnotationMethodHandlerAdapter.java | 2 +- .../DefaultAnnotationHandlerMapping.java | 4 +-- .../Portlet20AnnotationControllerTests.java | 2 +- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.java b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.java index 12c490b777..7754c49a5d 100644 --- a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.java +++ b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.java @@ -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. @@ -22,39 +22,51 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.springframework.core.annotation.AliasFor; import org.springframework.web.bind.annotation.Mapping; /** * Annotation for mapping Portlet action requests onto handler methods. * * @author Juergen Hoeller + * @author Sam Brannen * @since 3.0 * @see org.springframework.web.bind.annotation.RequestMapping */ -@Target({ElementType.METHOD}) +@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping public @interface ActionMapping { + /** + * Alias for {@link #name}. + */ + @AliasFor(attribute = "name") + String value() default ""; + /** * The name of the action, according to the Portlet 2.0 - * "javax.portlet.action" parameter. - *

If not specified, the method will be used as default handler: - * i.e. for action requests where no specific action mapping was found. + * {@code javax.portlet.action} parameter. + *

If not specified, the annotated method will be used as a default + * handler: i.e. for action requests where no specific action mapping + * was found. *

Note that all such annotated action methods only apply within the * {@code @RequestMapping} constraints of the containing handler class. + * @since 4.2 * @see javax.portlet.ActionRequest#ACTION_NAME + * @see #value */ - String value() default ""; + @AliasFor(attribute = "value") + String name() default ""; /** * The parameters of the mapped request, narrowing the primary mapping. - *

Same format for any environment: a sequence of "myParam=myValue" style - * expressions, with a request only mapped if each such parameter is found - * to have the given value. "myParam" style expressions are also supported, + *

Same format for any environment: a sequence of {@code "myParam=myValue"} + * style expressions, with a request only mapped if each such parameter is found + * to have the given value. {@code "myParam"} style expressions are also supported, * with such parameters having to be present in the request (allowed to have - * any value). Finally, "!myParam" style expressions indicate that the + * any value). Finally, {@code "!myParam"} style expressions indicate that the * specified parameter is not supposed to be present in the request. * @see org.springframework.web.bind.annotation.RequestMapping#params() */ diff --git a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java index b39b304c17..8602982898 100644 --- a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java +++ b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java @@ -456,7 +456,7 @@ public class AnnotationMethodHandlerAdapter extends PortletContentGenerator EventMapping eventMapping = AnnotationUtils.findAnnotation(method, EventMapping.class); RequestMapping requestMapping = AnnotationUtils.findAnnotation(method, RequestMapping.class); if (actionMapping != null) { - mappingInfo.initPhaseMapping(PortletRequest.ACTION_PHASE, actionMapping.value(), actionMapping.params()); + mappingInfo.initPhaseMapping(PortletRequest.ACTION_PHASE, actionMapping.name(), actionMapping.params()); } if (renderMapping != null) { mappingInfo.initPhaseMapping(PortletRequest.RENDER_PHASE, renderMapping.value(), renderMapping.params()); diff --git a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.java b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.java index f740c9da8c..c5c6186944 100644 --- a/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.java +++ b/spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.java @@ -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. @@ -163,7 +163,7 @@ public class DefaultAnnotationHandlerMapping extends AbstractMapBasedHandlerMapp RequestMapping requestMapping = AnnotationUtils.findAnnotation(method, RequestMapping.class); if (actionMapping != null) { params = StringUtils.mergeStringArrays(params, actionMapping.params()); - predicate = new ActionMappingPredicate(actionMapping.value(), params); + predicate = new ActionMappingPredicate(actionMapping.name(), params); } else if (renderMapping != null) { params = StringUtils.mergeStringArrays(params, renderMapping.params()); diff --git a/spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java b/spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java index 3832a271a0..b0c8d351bb 100644 --- a/spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java +++ b/spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java @@ -1163,7 +1163,7 @@ public class Portlet20AnnotationControllerTests { @RequestMapping("VIEW") private static class MyPortlet20DispatchingController { - @ActionMapping("this") + @ActionMapping(name = "this") public void myHandle(StateAwareResponse response) { response.setRenderParameter("test", "value"); }