[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