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 <lukaszlen...@apache.org> Authored: Thu Mar 13 18:31:43 2014 +0100 Committer: Lukasz Lenart <lukaszlen...@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>