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); + + } }