[prev in list] [next in list] [prev in thread] [next in thread]
List: velocity-dev
Subject: cvs commit: jakarta-velocity-tools/view/src/java/org/apache/velocity/tools/view/servlet ServletToolb
From: nbubna () apache ! org
Date: 2003-01-27 17:17:21
[Download RAW message or body]
nbubna 2003/01/27 09:17:21
Modified: view/src/java/org/apache/velocity/tools/view/servlet
ServletToolboxManager.java VelocityViewServlet.java
Log:
move toolbox loading into manager (patch from Claude Brisson)
Revision Changes Path
1.5 +78 -3 \
jakarta-velocity-tools/view/src/java/org/apache/velocity/tools/view/servlet/ServletToolboxManager.java
Index: ServletToolboxManager.java
===================================================================
RCS file: /home/cvs/jakarta-velocity-tools/view/src/java/org/apache/velocity/tools/view/servlet/ServletToolboxManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ServletToolboxManager.java 24 Jan 2003 05:04:51 -0000 1.4
+++ ServletToolboxManager.java 27 Jan 2003 17:17:20 -0000 1.5
@@ -56,6 +56,10 @@
package org.apache.velocity.tools.view.servlet;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
import java.util.List;
import java.util.Iterator;
import java.util.HashMap;
@@ -68,6 +72,7 @@
import org.dom4j.Element;
import org.dom4j.Node;
+import org.apache.velocity.app.Velocity;
import org.apache.velocity.tools.view.DataInfo;
import org.apache.velocity.tools.view.ToolInfo;
import org.apache.velocity.tools.view.XMLToolboxManager;
@@ -148,14 +153,17 @@
private ArrayList requestToolInfo;
private boolean createSession;
+ private static HashMap managersMap = new HashMap();
// --------------------------------------------------- Constructor --------
/**
- * Default constructor
+ * Use getInstance(ServletContext,String) instead
+ * to ensure there is exactly one ServletToolboxManager
+ * per xml toolbox configuration file.
*/
- public ServletToolboxManager(ServletContext servletContext)
+ private ServletToolboxManager(ServletContext servletContext)
{
this.servletContext = servletContext;
appTools = new HashMap();
@@ -165,6 +173,74 @@
}
+ /**
+ * ServletToolboxManager factory method.
+ * This method will ensure there is exactly one ServletToolboxManager
+ * per xml toolbox configuration file.
+ */
+ public static synchronized ServletToolboxManager getInstance(ServletContext \
servletContext, + \
String toolboxFile) + {
+ // little fix up
+ if (!toolboxFile.startsWith("/"))
+ {
+ toolboxFile = "/" + toolboxFile;
+ }
+
+ // get config file pathname
+ String pathname = servletContext.getRealPath(toolboxFile);
+
+ // check if a previous instance exists
+ ServletToolboxManager toolboxManager =
+ (ServletToolboxManager)managersMap.get(pathname);
+
+ if (toolboxManager == null)
+ {
+ // if not, build one
+ InputStream is = null;
+ try
+ {
+ // get the bits
+ is = servletContext.getResourceAsStream(toolboxFile);
+
+ if (is != null)
+ {
+ Velocity.info("Using toolbox configuration file '" + \
toolboxFile +"'"); +
+ toolboxManager = new ServletToolboxManager(servletContext);
+ toolboxManager.load(is);
+
+ // remember it
+ managersMap.put(pathname, toolboxManager);
+
+ Velocity.info("Toolbox setup complete.");
+ }
+ }
+ catch(Exception e)
+ {
+ Velocity.error("Problem reading toolbox file properties file '" + \
toolboxFile +"' : " + e ); +
+ // if this happens, it probably deserves
+ // to have the stack trace logged
+ java.io.StringWriter sw = new java.io.StringWriter();
+ e.printStackTrace(new java.io.PrintWriter(sw));
+ Velocity.error(sw.toString());
+ }
+ finally
+ {
+ try
+ {
+ if (is != null)
+ {
+ is.close();
+ }
+ }
+ catch(Exception ee) {}
+ }
+ }
+ return toolboxManager;
+ }
+
// --------------------------------------------------- Methods ------------
@@ -192,7 +268,6 @@
/**
* Overrides XMLToolboxManager to log to the servlet context
- * and to Velocity's main log
*/
protected void log(String s)
{
1.6 +18 -58 \
jakarta-velocity-tools/view/src/java/org/apache/velocity/tools/view/servlet/VelocityViewServlet.java
Index: VelocityViewServlet.java
===================================================================
RCS file: /home/cvs/jakarta-velocity-tools/view/src/java/org/apache/velocity/tools/view/servlet/VelocityViewServlet.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- VelocityViewServlet.java 7 May 2002 10:23:33 -0000 1.5
+++ VelocityViewServlet.java 27 Jan 2003 17:17:20 -0000 1.6
@@ -68,10 +68,6 @@
import java.util.HashMap;
import java.util.Properties;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
import org.apache.commons.collections.ExtendedProperties;
import org.apache.velocity.servlet.VelocityServlet;
@@ -152,63 +148,27 @@
{
super.init( config );
- /*
- * setup the toolbox if there is one
- */
+ ServletContext servletContext = config.getServletContext();
- String key = config.getInitParameter( TOOLBOX_PARAM );
+ /* check the servlet config for a toolbox */
+ String key = config.getInitParameter(TOOLBOX_PARAM);
- if ( key != null )
+ /* check the servlet context for a toolbox */
+ if (key == null || key.length() == 0)
{
- InputStream is = null;
+ key = servletContext.getInitParameter(TOOLBOX_PARAM);
+ }
- try
- {
- /*
- * little fix up
- */
-
- if ( !key.startsWith("/") )
- {
- key = "/" + key;
- }
-
- /*
- * get the bits
- */
-
- is = getServletContext().getResourceAsStream( key );
-
- if ( is != null)
- {
- Velocity.info("Using toolbox configuration file '" + key \
+"'");
-
- toolboxManager = new \
ServletToolboxManager(getServletContext());
- toolboxManager.load( is );
-
- Velocity.info("Toolbox setup complete.");
- }
- }
- catch( Exception e )
- {
- Velocity.error("Problem reading toolbox file properties file '" + \
key +"' : " + e );
- }
-
- finally
- {
- try
- {
- if ( is != null)
- is.close();
- }
- catch(Exception ee )
- {}
- }
- }
- else
- {
+ /* if we have a toolbox, get a manager for it */
+ if (key != null)
+ {
+ toolboxManager =
+ ServletToolboxManager.getInstance(servletContext, key);
+ }
+ else
+ {
Velocity.info("No toolbox entry in configuration.");
- }
+ }
}
@@ -220,7 +180,7 @@
protected void initVelocity( ServletConfig config )
throws ServletException
{
- // Try reading Velocity configuration
+ // Try reading Velocity configuration
try
{
Properties p = super.loadConfiguration(config);
--
To unsubscribe, e-mail: <mailto:velocity-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:velocity-dev-help@jakarta.apache.org>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic