WW-3761 - improves loading templates from file path

git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1292722 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Lukasz Lenart
2012-02-23 09:28:13 +00:00
parent 6ec3d2a8b6
commit a9b26ca87f
2 changed files with 42 additions and 5 deletions
@@ -27,13 +27,21 @@ import com.opensymphony.xwork2.util.FileManager;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
import freemarker.cache.*;
import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.cache.WebappTemplateLoader;
import freemarker.ext.jsp.TaglibFactory;
import freemarker.ext.servlet.HttpRequestHashModel;
import freemarker.ext.servlet.HttpRequestParametersHashModel;
import freemarker.ext.servlet.HttpSessionHashModel;
import freemarker.ext.servlet.ServletContextHashModel;
import freemarker.template.*;
import freemarker.template.Configuration;
import freemarker.template.ObjectWrapper;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import freemarker.template.TemplateModel;
import freemarker.template.utility.StringUtil;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.views.JspSupportServlet;
@@ -49,7 +57,13 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
@@ -382,7 +396,7 @@ public class FreemarkerManager {
// substring(7) is intentional as we "reuse" the last slash
templatePathLoader = new ClassTemplateLoader(getClass(), templatePath.substring(7));
} else if (templatePath.startsWith("file://")) {
templatePathLoader = new FileTemplateLoader(new File(templatePath));
templatePathLoader = new FileTemplateLoader(new File(templatePath.substring(7)));
}
}
} catch (IOException e) {
@@ -21,12 +21,12 @@
package org.apache.struts2.views.freemarker;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.StrutsTestCase;
import org.apache.struts2.views.jsp.StrutsMockServletContext;
/**
* Test case for FreemarkerManager
*
*/
public class FreemarkerManagerTest extends StrutsTestCase {
@@ -38,4 +38,27 @@ public class FreemarkerManagerTest extends StrutsTestCase {
freemarker.template.Configuration conf = mgr.getConfiguration(servletContext);
assertEquals(conf.getDefaultEncoding(), "UTF-8");
}
public void testTemplateLoaderBaseOnFile() throws Exception {
// given
DummyFreemarkerManager manager = new DummyFreemarkerManager();
StrutsMockServletContext servletContext = new StrutsMockServletContext();
servletContext.setAttribute(FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY, null);
String tmpPath = "file://" + FileUtils.getTempDirectoryPath();
// when
manager.load(servletContext, tmpPath);
// then
assertTrue(true); // should pass
}
}
class DummyFreemarkerManager extends FreemarkerManager {
public void load(StrutsMockServletContext servletContext, String path) {
createTemplateLoader(servletContext, path);
}
}