nbubna 2004/11/10 20:49:58 Modified: src/java/org/apache/velocity/tools/view/servlet VelocityViewServlet.java Log: add convenience methods for param/prop retrieval, postpone creation of engine until initVelocity() is called, and add getVelocityEngine() for subclass access Revision Changes Path 1.23 +60 -32 jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/servlet/VelocityViewServlet.java Index: VelocityViewServlet.java =================================================================== RCS file: /home/cvs/jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/servlet/VelocityViewServlet.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- VelocityViewServlet.java 11 Nov 2004 04:12:24 -0000 1.22 +++ VelocityViewServlet.java 11 Nov 2004 04:49:58 -0000 1.23 @@ -34,7 +34,6 @@ import org.apache.commons.collections.ExtendedProperties; import org.apache.velocity.Template; -import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.context.Context; import org.apache.velocity.exception.ResourceNotFoundException; @@ -143,7 +142,8 @@ /** Cache of writers */ private static SimplePool writerPool = new SimplePool(40); - private VelocityEngine velocity = new VelocityEngine(); + /* The engine used to process templates. */ + private VelocityEngine velocity = null; /** * The default content type. When necessary, includes the @@ -159,6 +159,7 @@ private boolean warnOfOutputStreamDeprecation = true; + /** * <p>Initializes servlet, toolbox and Velocity template engine. * Called by the servlet container on loading.</p> @@ -176,18 +177,12 @@ initToolbox(config); // we can get these now that velocity is initialized - defaultContentType = (String)velocity.getProperty(CONTENT_TYPE); - if (defaultContentType == null) - { - defaultContentType = DEFAULT_CONTENT_TYPE; - } + defaultContentType = + (String)getVelocityProperty(CONTENT_TYPE, DEFAULT_CONTENT_TYPE); String encoding = - (String)velocity.getProperty(RuntimeConstants.OUTPUT_ENCODING); - if (encoding == null) - { - encoding = DEFAULT_OUTPUT_ENCODING; - } + (String)getVelocityProperty(RuntimeConstants.OUTPUT_ENCODING, + DEFAULT_OUTPUT_ENCODING); // For non Latin-1 encodings, ensure that the charset is // included in the Content-Type header. @@ -215,6 +210,51 @@ /** + * Looks up an init parameter with the specified key in either the + * ServletConfig or, failing that, in the ServletContext. + */ + protected String findInitParameter(ServletConfig config, String key) + { + // check the servlet config + String param = config.getInitParameter(key); + + if (param == null || param.length() == 0) + { + // check the servlet context + ServletContext servletContext = config.getServletContext(); + param = servletContext.getInitParameter(key); + } + return param; + } + + + /** + * Simplifies process of getting a property from VelocityEngine, + * because the VelocityEngine interface sucks compared to the singleton's. + * Use of this method assumes that [EMAIL PROTECTED] #initVelocity(ServletConfig)} + * has already been called. + */ + protected String getVelocityProperty(String key, String alternate) + { + String prop = (String)velocity.getProperty(key); + if (prop == null || prop.length() == 0) + { + return alternate; + } + return prop; + } + + + /** + * Returns the underlying VelocityEngine being used. + */ + protected VelocityEngine getVelocityEngine() + { + return velocity; + } + + + /** * Initializes the ServletToolboxManager for this servlet's * toolbox (if any). * @@ -222,22 +262,14 @@ */ protected void initToolbox(ServletConfig config) throws ServletException { - ServletContext servletContext = config.getServletContext(); - - /* check the servlet config for a toolbox */ - String file = config.getInitParameter(TOOLBOX_KEY); - - /* check the servlet context for a toolbox */ - if (file == null || file.length() == 0) - { - file = servletContext.getInitParameter(TOOLBOX_KEY); - } + /* check the servlet config and context for a toolbox param */ + String file = findInitParameter(config, TOOLBOX_KEY); /* if we have a toolbox, get a manager for it */ if (file != null) { toolboxManager = - ServletToolboxManager.getInstance(servletContext, file); + ServletToolboxManager.getInstance(getServletContext(), file); } else { @@ -260,6 +292,8 @@ */ protected void initVelocity(ServletConfig config) throws ServletException { + velocity = new VelocityEngine(); + velocity.setApplicationAttribute(SERVLET_CONTEXT_KEY, getServletContext()); // default to servletlogger, which logs to the servlet engines log @@ -346,19 +380,13 @@ protected ExtendedProperties loadConfiguration(ServletConfig config) throws IOException { - ServletContext servletContext = config.getServletContext(); - // grab the path to the custom props file (if any) - String propsFile = config.getInitParameter(INIT_PROPS_KEY); - if (propsFile == null || propsFile.length() == 0) - { - propsFile = servletContext.getInitParameter(INIT_PROPS_KEY); - } + String propsFile = findInitParameter(config, INIT_PROPS_KEY); ExtendedProperties p = new ExtendedProperties(); if (propsFile != null) { - p.load(servletContext.getResourceAsStream(propsFile)); + p.load(getServletContext().getResourceAsStream(propsFile)); velocity.info("VelocityViewServlet: Custom Properties File: "+propsFile); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]