Juan Pablo Santos RodrÃguez created JSPWIKI-1088: ----------------------------------------------------
Summary: Fallback to default template if jspwiki.templateDir if the requested template folder is not found Key: JSPWIKI-1088 URL: https://issues.apache.org/jira/browse/JSPWIKI-1088 Project: JSPWiki Issue Type: Task Components: Templates and UI Affects Versions: 2.11.0-M1 Reporter: Juan Pablo Santos RodrÃguez As noted on the 2.11.0.M1 release vote, people migrating from 2.10 to 2.11, with the {{jspwiki.templateDir}} property set to {{haddock}} will get a template-less result. Suggestions on the thread vote: {quote} 1) During this transition moving the haddock template folder, it would be wise to still keep an empty template/haddock folder. JSPWiki will automatically fall back to the default template when it doesn't find the requested JSP; so migrating would become more easy. 2) As an improvement on the longer run, JSPWiki should also automatically fall back to the default template when the requested template *folder* is not found. {quote} {quote} Here's a possible solution. In WikiContext there's a method named setDefaultTemplate(HttpServletRequest) that has a FIXME note, to the effect that we need to check for the existence of the template directory. If we were to replace the beginning of the WikiContext.java file with: {code} public class WikiContext implements Cloneable, Command { /** * The name used for the default template. The value is {@value}. */ public static final String DEFAULT_TEMPLATE_NAME = "default"; ... private String m_template = DEFAULT_TEMPLATE_NAME; ... {code} and the beginning of the setDefaultTemplate() method with: {code} protected void setDefaultTemplate( HttpServletRequest request ) { String defaultTemplate = m_engine.getTemplateDir(); // check to see if the template directory actually exists if ( !templateDirectoryExists( m_engine, request ) ) { defaultTemplate = DEFAULT_TEMPLATE_NAME; } ... {code} and provide this utility method, which returns true if it finds ViewTemplate.jsp in the template directory specified in the property file: {code} /** * A test to see if the template directory specified in the wiki's properties actually * exists. * <p> * This checks the existence of the <tt>ViewTemplate.jsp</tt> file, which exists in every * template. * * @param engine the WikiEngine * @param request the HttpServletRequest used to obtain the real path * @return true if the template directory exists on the server */ private boolean templateDirectoryExists( WikiEngine engine, HttpServletRequest request ) { File templatesDir = new File(request.getServletContext().getRealPath("/"), "templates"); File templateDir = new File(templatesDir, engine.getTemplateDir()); File viewTemplateJsp = new File(templateDir, "ViewTemplate.jsp"); return viewTemplateJsp.exists(); } {code} Would that do? {quote} -- This message was sent by Atlassian JIRA (v7.6.3#76005)