You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/03/13 18:32:02 UTC

git commit: Removes direct support for action: prefix

Repository: struts
Updated Branches:
  refs/heads/feature/use-js-to-support-multiple-buttons 83bdfcb57 -> 9ffd0417b


Removes direct support for action: prefix


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/9ffd0417
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/9ffd0417
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/9ffd0417

Branch: refs/heads/feature/use-js-to-support-multiple-buttons
Commit: 9ffd0417b660302222e456c6c3684ed95406b4af
Parents: 83bdfcb
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Mar 13 18:31:43 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Mar 13 18:31:43 2014 +0100

----------------------------------------------------------------------
 .../org/apache/struts2/StrutsConstants.java     |  6 ---
 .../dispatcher/mapper/DefaultActionMapper.java  | 42 ------------------
 .../org/apache/struts2/default.properties       |  8 +---
 core/src/main/resources/struts-default.xml      |  8 ++--
 .../mapper/DefaultActionMapperTest.java         | 45 ++++++++------------
 .../convention/annotation/ResultPath.java       |  2 +-
 6 files changed, 24 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/core/src/main/java/org/apache/struts2/StrutsConstants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java
index 3423ec8..b6ccc3c 100644
--- a/core/src/main/java/org/apache/struts2/StrutsConstants.java
+++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java
@@ -271,12 +271,6 @@ public final class StrutsConstants {
     /** actions names' whitelist **/
     public static final String STRUTS_ALLOWED_ACTION_NAMES = "struts.allowed.action.names";
 
-    /** enables action: prefix **/
-    public static final String STRUTS_MAPPER_ACTION_PREFIX_ENABLED = "struts.mapper.action.prefix.enabled";
-
-    /** enables access to actions in other namespaces than current with action: prefix **/
-    public static final String STRUTS_MAPPER_ACTION_PREFIX_CROSSNAMESPACES = "struts.mapper.action.prefix.crossNamespaces";
-
     public static final String DEFAULT_TEMPLATE_TYPE_CONFIG_KEY = "struts.ui.templateSuffix";
 
     /** Allows override default DispatcherErrorHandler **/

http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
index a7a1a69..b3390c1 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
@@ -113,15 +113,12 @@ public class DefaultActionMapper implements ActionMapper {
     private static final Logger LOG = LoggerFactory.getLogger(DefaultActionMapper.class);
 
     protected static final String METHOD_PREFIX = "method:";
-    protected static final String ACTION_PREFIX = "action:";
 
     protected boolean allowDynamicMethodCalls = false;
     protected boolean allowSlashesInActionNames = false;
     protected boolean alwaysSelectFullNamespace = false;
     protected PrefixTrie prefixTrie = null;
     protected Pattern allowedActionNames = Pattern.compile("[a-zA-Z0-9._!/\\-]*");
-    private boolean allowActionPrefix = false;
-    private boolean allowActionCrossNamespaceAccess = false;
 
     protected List<String> extensions = new ArrayList<String>() {{
         add("action");
@@ -140,35 +137,6 @@ public class DefaultActionMapper implements ActionMapper {
                         }
                     }
                 });
-
-                put(ACTION_PREFIX, new ParameterAction() {
-                    public void execute(final String key, ActionMapping mapping) {
-                        if (allowActionPrefix) {
-                            String name = key.substring(ACTION_PREFIX.length());
-                            if (allowDynamicMethodCalls) {
-                                int bang = name.indexOf('!');
-                                if (bang != -1) {
-                                    String method = name.substring(bang + 1);
-                                    mapping.setMethod(method);
-                                    name = name.substring(0, bang);
-                                }
-                            }
-                            String actionName = cleanupActionName(name);
-                            if (allowSlashesInActionNames && !allowActionCrossNamespaceAccess) {
-                                if (actionName.startsWith("/")) {
-                                    actionName = actionName.substring(1);
-                                }
-                            }
-                            if (!allowSlashesInActionNames && !allowActionCrossNamespaceAccess) {
-                                if (actionName.lastIndexOf("/") != -1) {
-                                    actionName = actionName.substring(actionName.lastIndexOf("/") + 1);
-                                }
-                            }
-                            mapping.setName(actionName);
-                        }
-                    }
-                });
-
             }
         };
     }
@@ -204,16 +172,6 @@ public class DefaultActionMapper implements ActionMapper {
         this.allowedActionNames = Pattern.compile(allowedActionNames);
     }
 
-    @Inject(value = StrutsConstants.STRUTS_MAPPER_ACTION_PREFIX_ENABLED)
-    public void setAllowActionPrefix(String allowActionPrefix) {
-        this.allowActionPrefix = "true".equalsIgnoreCase(allowActionPrefix);
-    }
-
-    @Inject(value = StrutsConstants.STRUTS_MAPPER_ACTION_PREFIX_CROSSNAMESPACES)
-    public void setAllowActionCrossNamespaceAccess(String allowActionCrossNamespaceAccess) {
-        this.allowActionCrossNamespaceAccess = "true".equalsIgnoreCase(allowActionCrossNamespaceAccess);
-    }
-
     @Inject
     public void setContainer(Container container) {
         this.container = container;

http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/core/src/main/resources/org/apache/struts2/default.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/org/apache/struts2/default.properties b/core/src/main/resources/org/apache/struts2/default.properties
index ea3bc0c..dff1b88 100644
--- a/core/src/main/resources/org/apache/struts2/default.properties
+++ b/core/src/main/resources/org/apache/struts2/default.properties
@@ -97,7 +97,7 @@ struts.serve.static.browserCache=true
 
 ### Set this to false if you wish to disable implicit dynamic method invocation
 ### via the URL request. This includes URLs like foo!bar.action, as well as params
-### like method:bar (but not action:foo).
+### like method:bar.
 ### An alternative to implicit dynamic method invocation is to use wildcard
 ### mappings, such as <action name="*/*" method="{2}" class="actions.{1}">
 struts.enable.DynamicMethodInvocation = false
@@ -111,12 +111,6 @@ struts.enable.DynamicMethodInvocation = false
 ### "/foo/save".
 struts.enable.SlashesInActionNames = false
 
-### Disables support for action: prefix
-struts.mapper.action.prefix.enabled = false
-
-### Blocks access to actions in other namespace than current with action: prefix
-struts.mapper.action.prefix.crossNamespaces = false
-
 ### use alternative syntax that requires %{} in most places
 ### to evaluate expressions for String attributes for tags
 struts.tag.altSyntax=true

http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/core/src/main/resources/struts-default.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml
index a99a945..d8c162b 100644
--- a/core/src/main/resources/struts-default.xml
+++ b/core/src/main/resources/struts-default.xml
@@ -201,7 +201,7 @@
                 <interceptor-ref name="multiselect"/>
                 <interceptor-ref name="actionMappingParams"/>
                 <interceptor-ref name="params">
-                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
                 </interceptor-ref>
                 <interceptor-ref name="conversionError"/>
                 <interceptor-ref name="deprecation"/>
@@ -257,7 +257,7 @@
                 <interceptor-ref name="checkbox"/>
                 <interceptor-ref name="multiselect"/>
                 <interceptor-ref name="params">
-                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
                 </interceptor-ref>
                 <interceptor-ref name="servletConfig"/>
                 <interceptor-ref name="prepare"/>
@@ -267,7 +267,7 @@
                 <interceptor-ref name="staticParams"/>
                 <interceptor-ref name="actionMappingParams"/>
                 <interceptor-ref name="params">
-                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
                 </interceptor-ref>
                 <interceptor-ref name="conversionError"/>
                 <interceptor-ref name="validation">
@@ -304,7 +304,7 @@
                 <interceptor-ref name="staticParams"/>
                 <interceptor-ref name="actionMappingParams"/>
                 <interceptor-ref name="params">
-                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+                    <param name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
                 </interceptor-ref>
                 <interceptor-ref name="conversionError"/>
                 <interceptor-ref name="validation">

http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
index 33ff6e9..46561b8 100644
--- a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
+++ b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
@@ -401,7 +401,7 @@ public class DefaultActionMapperTest extends StrutsInternalTestCase {
 
     public void testActionPrefixWhenDisabled() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction", "");
+        parameterMap.put("action:myAction", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
@@ -415,115 +415,106 @@ public class DefaultActionMapperTest extends StrutsInternalTestCase {
 
     public void testActionPrefixWhenEnabled() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction", "");
+        parameterMap.put("action:myAction", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("myAction", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefixWhenSlashesAndCrossNamespaceDisabled() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "my/Action", "");
+        parameterMap.put("action:my/Action", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
         defaultActionMapper.setSlashesInActionNames("true");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("my/Action", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefixWhenSlashesButSlashesDisabledAndCrossNamespaceDisabled() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "my/Action", "");
+        parameterMap.put("action:my/Action", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
         defaultActionMapper.setSlashesInActionNames("false");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("Action", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefixWhenSlashesButSlashesDisabledAndCrossNamespace() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "my/Action", "");
+        parameterMap.put("action:my/Action", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
-        defaultActionMapper.setAllowActionCrossNamespaceAccess("true");
         defaultActionMapper.setSlashesInActionNames("false");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("my/Action", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefixWhenCrossNamespace() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "/my/Action", "");
+        parameterMap.put("action:/my/Action", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
-        defaultActionMapper.setAllowActionCrossNamespaceAccess("true");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("/my/Action", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefix_fromImageButton() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction", "");
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction.x", "");
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction.y", "");
+        parameterMap.put("action:myAction", "");
+        parameterMap.put("action:myAction.x", "");
+        parameterMap.put("action:myAction.y", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("myAction", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testActionPrefix_fromIEImageButton() throws Exception {
         Map parameterMap = new HashMap();
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction.x", "");
-        parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction.y", "");
+        parameterMap.put("action:myAction.x", "");
+        parameterMap.put("action:myAction.y", "");
 
         StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
         request.setParameterMap(parameterMap);
         request.setupGetServletPath("/someServletPath.action");
 
         DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
-        defaultActionMapper.setAllowActionPrefix("true");
         ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
 
-        assertEquals("myAction", actionMapping.getName());
+        assertEquals("someServletPath", actionMapping.getName());
     }
 
     public void testRedirectPrefix() throws Exception {

http://git-wip-us.apache.org/repos/asf/struts/blob/9ffd0417/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/ResultPath.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/ResultPath.java b/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/ResultPath.java
index 320fdc7..46b3a04 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/ResultPath.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/ResultPath.java
@@ -38,7 +38,7 @@ import java.lang.annotation.Target;
  * is a JSP or some type of template (Velocity for example). In order to
  * figure out which results are associated with an action, this class can be
  * used to set the base directory that the Convention plugin looks at when
- * trying to figure out the correct results. For example, if there is an action:
+ * trying to figure out the correct results.
  * </p>
  *
  * <pre>