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 2006/07/19 07:42:21 UTC

svn commit: r423378 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java

Author: mrdon
Date: Tue Jul 18 22:42:21 2006
New Revision: 423378

URL: http://svn.apache.org/viewvc?rev=423378&view=rev
Log:
Changed action mapper to always add the extension when building a uri to
prevent the masking of cases where the user adds the extension when it
shouldn't be there like the form's action attribute
WW-1323

Modified:
    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/mapper/DefaultActionMapper.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java?rev=423378&r1=423377&r2=423378&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 Jul 18 22:42:21 2006
@@ -379,10 +379,15 @@
         }
 
         String extension = getDefaultExtension();
-        if ( extension != null && uri.indexOf( '.' + extension) == -1  ) {
-            uri.append(".").append(extension);
-            if ( params.length() > 0) {
-                uri.append(params);
+        if ( extension != null) {
+            
+            // When in compatibility mode, we don't add an extension if it exists already
+            // otherwise, we always add it
+            if (!compatibilityMode || (compatibilityMode && uri.indexOf( '.' + extension) == -1  )) {
+                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=423378&r1=423377&r2=423378&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 Tue Jul 18 22:42:21 2006
@@ -247,6 +247,16 @@
 
         // TODO: need to test location but there's noaccess to the property/method, unless we use reflection
     }
+    
+    public void testDropExtension() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        String name = mapper.dropExtension("foo.action");
+        assertTrue("Name not right: "+name, "foo".equals(name));
+        
+        name = mapper.dropExtension("foo.action.action");
+        assertTrue("Name not right: "+name, "foo.action".equals(name));
+        
+    }
 
     public void testGetUriFromActionMapper1() throws Exception {
         DefaultActionMapper mapper = new DefaultActionMapper();
@@ -355,6 +365,33 @@
         String uri = mapper.getUriFromActionMapping(actionMapping);
 
         assertEquals("/myActionName.action?test=bla", uri);
+    }
+    
+    public void testGetUriFromActionMapper11() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        ActionMapping actionMapping = new ActionMapping();
+        actionMapping.setName("myActionName.action");
+        actionMapping.setNamespace("/");
+        String uri = mapper.getUriFromActionMapping(actionMapping);
+
+        assertEquals("/myActionName.action.action", uri);
+    }
+    
+    public void testGetUriFromActionMapper12() throws Exception {
+        Object old = org.apache.struts2.config.Configuration.get(StrutsConstants.STRUTS_COMPATIBILITY_MODE);
+        org.apache.struts2.config.Configuration.set(StrutsConstants.STRUTS_COMPATIBILITY_MODE, "true");
+        try {
+            DefaultActionMapper mapper = new DefaultActionMapper();
+            ActionMapping actionMapping = new ActionMapping();
+            actionMapping.setName("myActionName.action");
+            actionMapping.setNamespace("/");
+            String uri = mapper.getUriFromActionMapping(actionMapping);
+
+            assertEquals("/myActionName.action", uri);
+        }
+        finally {
+            org.apache.struts2.config.Configuration.set(StrutsConstants.STRUTS_COMPATIBILITY_MODE, old);
+        }
     }
 
 }