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 2008/02/16 13:27:08 UTC
svn commit: r628279 - in /struts/struts2/trunk/core/src:
main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java
Author: mrdon
Date: Sat Feb 16 04:27:07 2008
New Revision: 628279
URL: http://svn.apache.org/viewvc?rev=628279&view=rev
Log:
Fixing edit where id wouldn't be set
WW-2186
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java?rev=628279&r1=628278&r2=628279&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java Sat Feb 16 04:27:07 2008
@@ -121,9 +121,16 @@
String actionName = mapping.getName();
+ int lastSlashPos = actionName.lastIndexOf('/');
+ String id = null;
+ if (lastSlashPos > -1 && actionName != null) {
+ id = actionName.substring(lastSlashPos+1);
+ }
+
+
// Only try something if the action name is specified
if (actionName != null && actionName.length() > 0) {
- int lastSlashPos = actionName.lastIndexOf('/');
+
// If a method hasn't been explicitly named, try to guess using ReST-style patterns
if (mapping.getMethod() == null) {
@@ -140,8 +147,6 @@
}
} else if (lastSlashPos > -1) {
- String id = actionName.substring(lastSlashPos+1);
-
// Viewing the form to create a new item e.g. foo/new
if (isGet(request) && "new".equals(id)) {
mapping.setMethod("editNew");
@@ -159,17 +164,18 @@
mapping.setMethod("update");
}
- if (idParameterName != null) {
- if (mapping.getParams() == null) {
- mapping.setParams(new HashMap());
- }
- mapping.getParams().put(idParameterName, id);
- }
}
if (idParameterName != null && lastSlashPos > -1) {
actionName = actionName.substring(0, lastSlashPos);
}
+ }
+
+ if (idParameterName != null && id != null) {
+ if (mapping.getParams() == null) {
+ mapping.setParams(new HashMap());
+ }
+ mapping.getParams().put(idParameterName, id);
}
// Try to determine parameters from the url before the action name
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java?rev=628279&r1=628278&r2=628279&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java Sat Feb 16 04:27:07 2008
@@ -74,6 +74,38 @@
assertEquals("index", mapping.getMethod());
}
+ public void testGetId() throws Exception {
+ mapper.setIdParameterName("id");
+ req.setupGetRequestURI("/my/namespace/foo/3");
+ req.setupGetServletPath("/my/namespace/foo/3");
+ req.setupGetAttribute(null);
+ req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
+ req.setupGetMethod("GET");
+
+ ActionMapping mapping = mapper.getMapping(req, configManager);
+
+ assertEquals("/my/namespace", mapping.getNamespace());
+ assertEquals("foo/3", mapping.getName());
+ assertEquals("view", mapping.getMethod());
+ assertEquals("3", mapping.getParams().get("id"));
+ }
+
+ public void testGetEdit() throws Exception {
+ mapper.setIdParameterName("id");
+ req.setupGetRequestURI("/my/namespace/foo/3!edit");
+ req.setupGetServletPath("/my/namespace/foo/3!edit");
+ req.setupGetAttribute(null);
+ req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
+ req.setupGetMethod("GET");
+
+ ActionMapping mapping = mapper.getMapping(req, configManager);
+
+ assertEquals("/my/namespace", mapping.getNamespace());
+ assertEquals("foo/3", mapping.getName());
+ assertEquals("edit", mapping.getMethod());
+ assertEquals("3", mapping.getParams().get("id"));
+ }
+
public void testGetIndexWithParams() throws Exception {
req.setupGetRequestURI("/my/namespace/bar/1/foo/");
req.setupGetServletPath("/my/namespace/bar/1/foo/");