Browse Source

Introduce alias for 'value' attribute in @ActionMapping

Issue: SPR-11393
pull/811/head
Sam Brannen 10 years ago
parent
commit
0d6b01b694
  1. 32
      spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.java
  2. 2
      spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java
  3. 4
      spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.java
  4. 2
      spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java

32
spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/bind/annotation/ActionMapping.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.
@ -22,39 +22,51 @@ import java.lang.annotation.Retention; @@ -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.
* <p>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.
* <p>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.
* <p>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.
* <p>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,
* <p>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 <i>not</i> supposed to be present in the request.
* @see org.springframework.web.bind.annotation.RequestMapping#params()
*/

2
spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/AnnotationMethodHandlerAdapter.java

@ -456,7 +456,7 @@ public class AnnotationMethodHandlerAdapter extends PortletContentGenerator @@ -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());

4
spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/mvc/annotation/DefaultAnnotationHandlerMapping.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.
@ -163,7 +163,7 @@ public class DefaultAnnotationHandlerMapping extends AbstractMapBasedHandlerMapp @@ -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());

2
spring-webmvc-portlet/src/test/java/org/springframework/web/portlet/mvc/annotation/Portlet20AnnotationControllerTests.java

@ -1163,7 +1163,7 @@ public class Portlet20AnnotationControllerTests { @@ -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");
}

Loading…
Cancel
Save