Return-Path: X-Original-To: apmail-struts-commits-archive@minotaur.apache.org Delivered-To: apmail-struts-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EA20410FE7 for ; Sun, 6 Apr 2014 14:04:11 +0000 (UTC) Received: (qmail 91339 invoked by uid 500); 6 Apr 2014 14:03:23 -0000 Delivered-To: apmail-struts-commits-archive@struts.apache.org Received: (qmail 91229 invoked by uid 500); 6 Apr 2014 14:03:22 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 90952 invoked by uid 99); 6 Apr 2014 14:03:17 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Apr 2014 14:03:17 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 2C3F494B9DB; Sun, 6 Apr 2014 14:03:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: lukaszlenart@apache.org To: commits@struts.apache.org Date: Sun, 06 Apr 2014 14:03:41 -0000 Message-Id: <39b7d7eba5a649368a072b5504258013@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [28/50] [abbrv] git commit: WW-4169 Solves problem resolving path when action contains slashes WW-4169 Solves problem resolving path when action contains slashes Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/272feecf Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/272feecf Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/272feecf Branch: refs/heads/master Commit: 272feecfbd9bd69bf500af31541567f254dd0c6d Parents: a6017dc Author: Lukasz Lenart Authored: Fri Mar 28 08:09:31 2014 +0100 Committer: Lukasz Lenart Committed: Fri Mar 28 08:09:31 2014 +0100 ---------------------------------------------------------------------- .../views/freemarker/FreemarkerResult.java | 18 +++++++++++++----- .../views/freemarker/FreeMarkerResultTest.java | 3 +++ 2 files changed, 16 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/272feecf/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java index b8af3d6..3ded53b 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java @@ -39,7 +39,6 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsStatics; import org.apache.struts2.dispatcher.StrutsResultSupport; -import org.apache.struts2.views.util.ResourceUtil; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -165,12 +164,21 @@ public class FreemarkerResult extends StrutsResultSupport { ActionContext ctx = invocation.getInvocationContext(); HttpServletRequest req = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST); - if (!locationArg.startsWith("/")) { - String base = ResourceUtil.getResourceBase(req); - locationArg = base + "/" + locationArg; + String absoluteLocation; + if (location.startsWith("/")) { + absoluteLocation = location; + } else { + String namespace = invocation.getProxy().getNamespace(); + if (namespace == null || namespace.length() == 0 || namespace.equals("/")) { + absoluteLocation = "/" + location; + } else if (namespace.startsWith("/")) { + absoluteLocation = namespace + "/" + location; + } else { + absoluteLocation = "/" + namespace + "/" + location; + } } - Template template = configuration.getTemplate(locationArg, deduceLocale()); + Template template = configuration.getTemplate(absoluteLocation, deduceLocale()); TemplateModel model = createModel(); // Give subclasses a chance to hook into preprocessing http://git-wip-us.apache.org/repos/asf/struts/blob/272feecf/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java index d721826..060b927 100644 --- a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java +++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java @@ -22,7 +22,9 @@ package org.apache.struts2.views.freemarker; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.mock.MockActionInvocation; +import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory; @@ -164,6 +166,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { invocation = new MockActionInvocation(); invocation.setStack(stack); invocation.setInvocationContext(context); + invocation.setProxy(new MockActionProxy()); servletContext.setRealPath(new File(FreeMarkerResultTest.class.getResource( "someFreeMarkerFile.ftl").toURI()).toURL().getFile()); }