From 6fd129b9ede6f5037deaf14038cf381fcb229222 Mon Sep 17 00:00:00 2001 From: Thomas Schneider Date: Sat, 24 Nov 2007 19:08:26 +0000 Subject: [PATCH] WW-2328 fix for DefaultActionMapper not parsing out the sessionid Submitted By: Omkar Patil Reviewed By: Tom Schneider git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@597904 13f79535-47bb-0310-9956-ffa450edef68 --- .../dispatcher/mapper/DefaultActionMapper.java | 5 ++++- .../dispatcher/mapper/DefaultActionMapperTest.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java index 7bba12d32..0d919504c 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java @@ -289,7 +289,10 @@ public class DefaultActionMapper implements ActionMapper { ConfigurationManager configManager) { ActionMapping mapping = new ActionMapping(); String uri = getUri(request); - + + int indexOfSemicolon = uri.indexOf(";"); + uri = (indexOfSemicolon > -1) ? uri.substring(0, indexOfSemicolon) : uri; + uri = dropExtension(uri, mapping); if (uri == null) { return null; diff --git a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java index 3404b5257..38ec51469 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java @@ -181,6 +181,18 @@ public class DefaultActionMapperTest extends StrutsTestCase { ActionMapping mapping = mapper.getMapping(req, configManager); assertEquals("/my/namespace/actionName.action", mapper.getUriFromActionMapping(mapping)); } + + public void testGetUriWithSemicolonPresent() throws Exception { + req.setupGetParameterMap(new HashMap()); + req.setupGetRequestURI("/my/namespace/actionName.action;abc=123rty56"); + req.setupGetServletPath("/my/namespace/actionName.action;abc=123rty56"); + req.setupGetAttribute(null); + req.addExpectedGetAttributeName("javax.servlet.include.servlet_path"); + + DefaultActionMapper mapper = new DefaultActionMapper(); + ActionMapping mapping = mapper.getMapping(req, configManager); + assertEquals("/my/namespace/actionName.action", mapper.getUriFromActionMapping(mapping)); + } public void testGetUriWithMethod() throws Exception { req.setupGetParameterMap(new HashMap());