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