Author: mrdon
Date: Fri Oct 26 23:49:24 2007
New Revision: 589053

URL: http://svn.apache.org/viewvc?rev=589053&view=rev
Log:
Improving parsing of extension list to be more intuitive
WW-1715

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=589053&r1=589052&r2=589053&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
 Fri Oct 26 23:49:24 2007
@@ -20,14 +20,7 @@
  */
 package org.apache.struts2.dispatcher.mapper;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Scanner;
-import java.util.Set;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -183,7 +176,7 @@
     
     protected List<String> extensions = new ArrayList<String>() {{ 
add("action"); add("");}};
 
-    protected  Container container;
+    protected Container container;
 
     public DefaultActionMapper() {
         prefixTrie = new PrefixTrie() {
@@ -272,11 +265,14 @@
     
     @Inject(StrutsConstants.STRUTS_ACTION_EXTENSION)
     public void setExtensions(String extensions) {
-        if (!"".equals(extensions)) {
+        if (extensions != null && !"".equals(extensions)) {
             List<String> list = new ArrayList<String>();
-            Scanner scanner = new Scanner(extensions).useDelimiter(",");
-            while (scanner.hasNext()) {
-                list.add(scanner.next());
+            String[] tokens = extensions.split(",");
+            for (String token : tokens) {
+                list.add(token);
+            }
+            if (extensions.endsWith(",")) {
+                list.add("");
             }
             this.extensions = Collections.unmodifiableList(list);
         } else {

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=589053&r1=589052&r2=589053&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
 Fri Oct 26 23:49:24 2007
@@ -22,6 +22,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Arrays;
 
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsTestCase;
@@ -596,6 +597,31 @@
         String uri = mapper.getUriFromActionMapping(actionMapping);
 
         assertEquals("/myNamespace/myActionName!myMethod", uri);
+    }
+
+    public void testSetExtension() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        mapper.setExtensions("");
+        assertNull(mapper.extensions);
+        mapper.setExtensions(null);
+        assertNull(mapper.extensions);
+
+        mapper.setExtensions(",xml");
+        assertEquals(Arrays.asList("", "xml"), mapper.extensions);
+
+        mapper.setExtensions("html,xml,");
+        assertEquals(Arrays.asList("html", "xml", ""), mapper.extensions);
+
+        mapper.setExtensions("html,,xml");
+        assertEquals(Arrays.asList("html", "", "xml"), mapper.extensions);
+
+        mapper.setExtensions("xml");
+        assertEquals(Arrays.asList("xml"), mapper.extensions);
+
+        mapper.setExtensions(",");
+        assertEquals(Arrays.asList(""), mapper.extensions);
+
+
     }
 
 }


Reply via email to