You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/09/08 11:16:43 UTC
svn commit: r573805 - in /struts/struts2/trunk/core/src:
main/java/org/apache/struts2/dispatcher/
main/java/org/apache/struts2/dispatcher/mapper/
test/java/org/apache/struts2/dispatcher/mapper/
Author: mrdon
Date: Sat Sep 8 02:16:43 2007
New Revision: 573805
URL: http://svn.apache.org/viewvc?rev=573805&view=rev
Log:
Fix handling of empty extension during url creation
WW-2163
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java?rev=573805&r1=573804&r2=573805&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java Sat Sep 8 02:16:43 2007
@@ -137,6 +137,13 @@
public void setLocation(String location) {
this.location = location;
}
+
+ /**
+ * Gets the location it was created with, mainly for testing
+ */
+ public String getLocation() {
+ return location;
+ }
/**
* Returns the last parsed and encoded location value
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=573805&r1=573804&r2=573805&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 Sat Sep 8 02:16:43 2007
@@ -228,7 +228,7 @@
ServletRedirectResult redirect = new ServletRedirectResult();
container.inject(redirect);
String extension = getDefaultExtension();
- if (extension != null) {
+ if (extension != null && extension.length() > 0) {
location += "." + extension;
}
redirect.setLocation(location);
@@ -499,8 +499,11 @@
String extension = getDefaultExtension();
if (extension != null) {
- if (uri.indexOf('.' + extension) == -1) {
- uri.append(".").append(extension);
+
+ if (extension.length() == 0 || (extension.length() > 0 && uri.indexOf('.' + extension) == -1)) {
+ if (extension.length() > 0) {
+ uri.append(".").append(extension);
+ }
if (params.length() > 0) {
uri.append(params);
}
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java?rev=573805&r1=573804&r2=573805&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java Sat Sep 8 02:16:43 2007
@@ -27,6 +27,7 @@
import org.apache.struts2.StrutsTestCase;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.ServletRedirectResult;
+import org.apache.struts2.dispatcher.StrutsResultSupport;
import org.apache.struts2.views.jsp.StrutsMockHttpServletRequest;
import org.apache.struts2.views.jsp.StrutsMockHttpServletResponse;
@@ -376,9 +377,34 @@
ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
- Result result = actionMapping.getResult();
+ StrutsResultSupport result = (StrutsResultSupport) actionMapping.getResult();
assertNotNull(result);
assertTrue(result instanceof ServletRedirectResult);
+
+ assertEquals("myAction.action", result.getLocation());
+
+ // TODO: need to test location but there's noaccess to the property/method, unless we use reflection
+ }
+
+ public void testRedirectActionPrefixWithEmptyExtension() throws Exception {
+ Map parameterMap = new HashMap();
+ parameterMap.put(DefaultActionMapper.REDIRECT_ACTION_PREFIX + "myAction", "");
+
+ StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
+ request.setupGetServletPath("/someServletPath");
+ request.setParameterMap(parameterMap);
+
+ DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
+ defaultActionMapper.setContainer(container);
+ defaultActionMapper.setExtensions(",,");
+ ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
+
+
+ StrutsResultSupport result = (StrutsResultSupport) actionMapping.getResult();
+ assertNotNull(result);
+ assertTrue(result instanceof ServletRedirectResult);
+
+ assertEquals("myAction", result.getLocation());
// TODO: need to test location but there's noaccess to the property/method, unless we use reflection
}
@@ -550,6 +576,18 @@
String uri = mapper.getUriFromActionMapping(actionMapping);
assertEquals("/myActionName.action", uri);
+ }
+
+ public void testGetUriFromActionMapperWhenBlankExtension() throws Exception {
+ DefaultActionMapper mapper = new DefaultActionMapper();
+ mapper.setExtensions(",,");
+ ActionMapping actionMapping = new ActionMapping();
+ actionMapping.setMethod("myMethod");
+ actionMapping.setName("myActionName");
+ actionMapping.setNamespace("/myNamespace");
+ String uri = mapper.getUriFromActionMapping(actionMapping);
+
+ assertEquals("/myNamespace/myActionName!myMethod", uri);
}
}