Author: husted Date: Tue Aug 29 09:51:55 2006 New Revision: 438114 URL: http://svn.apache.org/viewvc?rev=438114&view=rev Log: WW-1353 Complete rollback of r436971 and r436991, using new property name and enabling behavior by default. Update affected applications. (And release notes.)
Modified: struts/sandbox/trunk/struts2/apps/mailreader-bang/README.txt struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.properties struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.xml struts/struts2/trunk/ (props changed) struts/struts2/trunk/apps/mailreader/src/main/resources/struts.properties struts/struts2/trunk/apps/showcase/src/main/resources/struts.properties struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java struts/struts2/trunk/core/src/main/resources/org/apache/struts2/default.properties struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java Modified: struts/sandbox/trunk/struts2/apps/mailreader-bang/README.txt URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2/apps/mailreader-bang/README.txt?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/sandbox/trunk/struts2/apps/mailreader-bang/README.txt (original) +++ struts/sandbox/trunk/struts2/apps/mailreader-bang/README.txt Tue Aug 29 09:51:55 2006 @@ -1,16 +1,15 @@ README.txt - mailreader-bang -This application demonstrates switching form the "bang" syntax for invoking +This application demonstrates switching from the "bang" syntax for invoking dynamic methods to a general-purpose wild card approach. To switch between approaches, edit the struts.xml file to include either the struts-bang.xml file OR the struts-wildcard.xml. (But not both.) When using the -bang application, be sure that the -disableDynamicMethodInvocation property is set to false. +struts.enable.DynamicMethodInvocation property is set to "true". For the -wilcard application. be sure that the -disableDynamicMethodInvocation property is set to true. - +struts.enable.DynamicMethodInvocation property is set to "false". ---------------------------------------------------------------------------- Modified: struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.properties URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.properties?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.properties (original) +++ struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.properties Tue Aug 29 09:51:55 2006 @@ -2,5 +2,4 @@ struts.devMode = true struts.action.extension = do struts.custom.i18n.resources = resources -struts.compatibilityMode.WebWork = false - +struts.enable.DynamicMethodInvocation = false Modified: struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.xml?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.xml (original) +++ struts/sandbox/trunk/struts2/apps/mailreader-bang/src/main/resources/struts.xml Tue Aug 29 09:51:55 2006 @@ -12,7 +12,6 @@ <!-- <include file="struts-bang.xml"/> --> - <include file="struts-wildcard.xml"/> </struts> Propchange: struts/struts2/trunk/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Tue Aug 29 09:51:55 2006 @@ -2,3 +2,4 @@ *.iml *.iws *.ipr +lib Modified: struts/struts2/trunk/apps/mailreader/src/main/resources/struts.properties URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/struts.properties?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/struts.properties (original) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/struts.properties Tue Aug 29 09:51:55 2006 @@ -1,3 +1,4 @@ struts.objectFactory = spring struts.devMode = true struts.custom.i18n.resources = resources +struts.enable.DynamicMethodInvocation = false Modified: struts/struts2/trunk/apps/showcase/src/main/resources/struts.properties URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/struts.properties?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/resources/struts.properties (original) +++ struts/struts2/trunk/apps/showcase/src/main/resources/struts.properties Tue Aug 29 09:51:55 2006 @@ -9,4 +9,3 @@ struts.freemarker.manager.classname=customFreemarkerManager struts.serve.static=true struts.serve.static.browserCache=false -struts.compatibilityMode.WebWork = true Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java Tue Aug 29 09:51:55 2006 @@ -123,5 +123,5 @@ public static final String STRUTS_SERVE_STATIC_BROWSER_CACHE = "struts.serve.static.browserCache"; /** Allows one to disable dynamic method invocation from the URL */ - public static final String STRUTS_DISABLE_DYNAMIC_METHOD_INVOCATION = "struts.core.disableDynamicMethodInvocation"; + public static final String STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION = "struts.enable.DynamicMethodInvocation"; } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java Tue Aug 29 09:51:55 2006 @@ -27,6 +27,7 @@ import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsConstants; import org.apache.struts2.StrutsException; +import org.apache.struts2.config.Settings; import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.RequestMap; import org.apache.struts2.views.jsp.TagUtils; @@ -168,6 +169,8 @@ * @see org.apache.struts2.views.jsp.TagUtils#buildNamespace */ private void executeAction() { + // FIXME: our implementation is flawed - the only concept of ! should be in DefaultActionMapper + boolean allowDynamicMethodCalls = "true".equals(Settings.get(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)); String actualName = findString(name, "name", "Action name is required. Example: updatePerson"); if (actualName == null) { @@ -178,10 +181,12 @@ String methodName = null; // handle "name!method" convention. - int exclamation = actualName.lastIndexOf("!"); - if (exclamation != -1) { - actionName = actualName.substring(0, exclamation); - methodName = actualName.substring(exclamation + 1); + if (allowDynamicMethodCalls) { + int exclamation = actualName.lastIndexOf("!"); + if (exclamation != -1) { + actionName = actualName.substring(0, exclamation); + methodName = actualName.substring(exclamation + 1); + } } String namespace; Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java Tue Aug 29 09:51:55 2006 @@ -32,6 +32,7 @@ import com.opensymphony.xwork2.validator.Validator; import org.apache.commons.lang.StringUtils; import org.apache.struts2.StrutsConstants; +import org.apache.struts2.config.Settings; import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.mapper.ActionMapperFactory; import org.apache.struts2.dispatcher.mapper.ActionMapping; @@ -223,11 +224,16 @@ } String actionMethod = ""; - // todo: this logic is flawed - the only concept of ! should be in DefaultActionMapper - if (action.indexOf("!") != -1) { - int endIdx = action.lastIndexOf("!"); - actionMethod = action.substring(endIdx + 1, action.length()); - action = action.substring(0, endIdx); + // FIXME: our implementation is flawed - the only concept of ! should be in DefaultActionMapper + boolean allowDynamicMethodCalls = "true".equals(Settings.get(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)); + + // handle "name!method" convention. + if (allowDynamicMethodCalls) { + if (action.indexOf("!") != -1) { + int endIdx = action.lastIndexOf("!"); + actionMethod = action.substring(endIdx + 1, action.length()); + action = action.substring(0, endIdx); + } } Configuration config = Dispatcher.getInstance().getConfigurationManager().getConfiguration(); Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java Tue Aug 29 09:51:55 2006 @@ -148,7 +148,7 @@ ancestorForm.getParameters().put("updownselectIds", m); } else { - _log.warn("no ancestor form found for updownselect "+this+", therefore autoselect of all elements unpon form submission will not work "); + _log.warn("no ancestor form found for updownselect "+this+", therefore autoselect of all elements upon form submission will not work "); } } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java Tue Aug 29 09:51:55 2006 @@ -149,7 +149,7 @@ static final String REDIRECT_PREFIX = "redirect:"; static final String REDIRECT_ACTION_PREFIX = "redirect-action:"; - private static boolean disableDynamicMethodCalls = "true".equals(Settings.get(StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE)); + private static boolean allowDynamicMethodCalls = "true".equals(Settings.get(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)); private PrefixTrie prefixTrie = null; public DefaultActionMapper() { @@ -208,7 +208,7 @@ parseNameAndNamespace(uri, mapping, config); - if (!disableDynamicMethodCalls) { + if (allowDynamicMethodCalls) { handleSpecialParameters(request, mapping); } @@ -216,7 +216,7 @@ return null; } - if (!disableDynamicMethodCalls) { + if (allowDynamicMethodCalls) { // handle "name!method" convention. String name = mapping.getName(); int exclamation = name.lastIndexOf("!"); Modified: struts/struts2/trunk/core/src/main/resources/org/apache/struts2/default.properties URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/org/apache/struts2/default.properties?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/resources/org/apache/struts2/default.properties (original) +++ struts/struts2/trunk/core/src/main/resources/org/apache/struts2/default.properties Tue Aug 29 09:51:55 2006 @@ -71,10 +71,10 @@ ### headers) struts.serve.static.browserCache=true -### Set this to true if you wish to disable all forms of dynamic method invocation +### Set this to false if you wish to disable all forms of dynamic method invocation ### via the URL request. This includes URLs like foo!bar.action, as well as params ### like method:bar. See the DefaultActionMapper for more info. -struts.core.disableDynamicMethodInvocation = false +struts.enable.DynamicMethodInvocation = true ### use alternative syntax that requires %{} in most places ### to evaluate expressions for String attributes for tags Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java?rev=438114&r1=438113&r2=438114&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java Tue Aug 29 09:51:55 2006 @@ -193,6 +193,7 @@ } } + // FIXME: Logging the error seems to cause the standard Maven build to fail public void testUnknownNameDefined() throws Exception { ActionTag tag = new ActionTag(); tag.setPageContext(pageContext); @@ -202,11 +203,10 @@ tag.doStartTag(); tag.doEndTag(); - // will just log it to ERROR but we run th code to test that it works somehow + // will just log it to ERROR but we run the code to test that it works somehow } - // TODO - !input form fails in Maven, but passes in IDEA. The settings seem to be ignored under Maven. - public void FIXME_testActionMethodWithExecuteResult() throws Exception { + public void testActionMethodWithExecuteResult() throws Exception { ActionTag tag = new ActionTag(); tag.setPageContext(pageContext); tag.setNamespace("");