You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/08/05 09:38:45 UTC
[3/3] git commit: WW-4335 Uses lastIndexOf to figure out theme name
WW-4335 Uses lastIndexOf to figure out theme name
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/16e240b4
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/16e240b4
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/16e240b4
Branch: refs/heads/develop
Commit: 16e240b4a534620c601d18ad7ff290806584d47e
Parents: 51b16bd
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Aug 5 09:38:32 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Aug 5 09:38:32 2014 +0200
----------------------------------------------------------------------
.../FreemarkerThemeTemplateLoader.java | 2 +-
.../FreemarkerThemeTemplateLoaderTest.java | 66 ++++++++++++++++++++
2 files changed, 67 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/16e240b4/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoader.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoader.java
index 35a90a4..5c56463 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoader.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoader.java
@@ -37,7 +37,7 @@ public class FreemarkerThemeTemplateLoader implements TemplateLoader{
return parentTemplateLoader.findTemplateSource(name);
}
- int themeEndIndex = name.indexOf('/', tokenIndex);
+ int themeEndIndex = name.lastIndexOf('/');
if (themeEndIndex < 0) {
return parentTemplateLoader.findTemplateSource(name);
}
http://git-wip-us.apache.org/repos/asf/struts/blob/16e240b4/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoaderTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoaderTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoaderTest.java
new file mode 100644
index 0000000..7f8ef31
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerThemeTemplateLoaderTest.java
@@ -0,0 +1,66 @@
+package org.apache.struts2.views.freemarker;
+
+import freemarker.cache.TemplateLoader;
+import org.apache.struts2.StrutsInternalTestCase;
+import org.apache.struts2.components.template.Template;
+import org.apache.struts2.components.template.TemplateEngine;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.core.IsEqual;
+import org.mockito.Matchers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class FreemarkerThemeTemplateLoaderTest extends StrutsInternalTestCase {
+
+ public void testThemeExpansionToken() throws Exception {
+ // given
+ FreemarkerThemeTemplateLoader loader = new FreemarkerThemeTemplateLoader();
+ loader.setUIThemeExpansionToken("~~~");
+
+ TemplateEngine engine = mock(TemplateEngine.class);
+ loader.setTemplateEngine(engine);
+
+ TemplateLoader parent = mock(TemplateLoader.class);
+ when(parent.findTemplateSource("template/foo/bar/text.ftl")).thenReturn(new Object());
+
+ loader.init(parent);
+
+ // when
+ Object actual = loader.findTemplateSource("template/~~~foo/bar/text.ftl");
+
+ // then
+ assertThat(actual).isNotNull();
+ }
+
+ public void testThemeExpansionTokenWithParent() throws Exception {
+ // given
+ FreemarkerThemeTemplateLoader loader = new FreemarkerThemeTemplateLoader();
+ loader.setUIThemeExpansionToken("~~~");
+
+ TemplateEngine engine = mock(TemplateEngine.class);
+ Map<String, String> props = new HashMap<String, String>();
+ props.put("parent", "foo/foo");
+ when(engine.getThemeProps(Matchers.argThat(new IsEqual<Template>(new Template("template", "foo/bar", "text.ftl"))))).thenReturn(props);
+ loader.setTemplateEngine(engine);
+
+ TemplateLoader parent = mock(TemplateLoader.class);
+ when(parent.findTemplateSource("template/foo/bar/text.ftl")).thenReturn(null);
+ when(parent.findTemplateSource("template/foo/foo/text.ftl")).thenReturn(new Object());
+
+ loader.init(parent);
+
+ // when
+ Object actual = loader.findTemplateSource("template/~~~foo/bar/text.ftl");
+
+ // then
+ assertThat(actual).isNotNull();
+ }
+
+}
\ No newline at end of file