Dave Polito wrote:
> 
> Here you go.

Much obliged :-)

> 
> Dave Polito
> 
> -----Original Message-----
> From: Jason van Zyl [mailto:[EMAIL PROTECTED]]
> Sent: Monday, May 21, 2001 10:11 AM
> To: Turbine Dev
> Subject: JspService and multiple template paths
> 
> Hi,
> 
> I think someone posted a patch for the JSP service that allowed multiple
> templates paths. I don't think we integrated it, whoever submitted the
> patch could you please do so again as I would  like to get it in
> if I can. Sorry this one slipped through. I don't remember it
> going multiple template paths don't appear to be working in
> the JspService.
> 
> I am also integrating a little JSP example into the TDK that
> was sent to me a while back. Sorry for the delay.
> 
> Thanks,
> 
> --
> jvz.
> 
> Jason van Zyl
> [EMAIL PROTECTED]
> 
> http://jakarta.apache.org/velocity
> http://jakarta.apache.org/turbine
> http://jakarta.apache.org/commons
> http://tambora.zenplex.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> -------------------------------------------
> [PATCH]
> 
> Fixed a problem in the handleRequest method, where getRequestDispatcher was
> being called with paths[0] + filename.  The paths[] was populated with
> absolute path names,  but servlet > 2.1 seems to need a relative pathname.
> So I changed String[] paths to String[] templatePaths. The array
> templatePaths is still needed for templateExists.  I also added an array for
> relativeTemplatePaths, and a method that will return the
> relativeTemplateName if it exists.  This will allow multiple template.paths
> to be used for jsp.
> 
> Dave Polito
> 
> Index: TurbineJspService.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-turbine/src/java/org/apache/turbine/services/jsp/Tur
> bineJspService.java,v
> retrieving revision 1.13
> diff -u -r1.13 TurbineJspService.java
> --- TurbineJspService.java      2001/04/02 05:49:36     1.13
> +++ TurbineJspService.java      2001/04/10 19:41:09
> @@ -88,8 +88,11 @@
>  public class TurbineJspService extends BaseTemplateEngineService
>      implements JspService
>  {
> -    /** The base path prepended to filenames given in arguments */
> -    private String[] paths;
> +    /** The base path[s] prepended to filenames given in arguments */
> +    private String[] templatePaths;
> +
> +    /** The relative path[s] prepended to filenames */
> +    private String[] relativeTemplatePaths;
> 
>      /** The buffer size for the output stream. */
>      private int bufferSize;
> @@ -165,9 +168,18 @@
>      public void handleRequest(RunData data, String filename, boolean
> isForward)
>          throws TurbineException
>      {
> +        /** template name with relative path */
> +        String relativeTemplateName = getRelativeTemplateName(filename);
> +
> +        if (relativeTemplateName == null)
> +        {
> +            throw new TurbineException(
> +            "Template " + filename + " not found in template paths");
> +        }
> +
>          // get the RequestDispatcher for the JSP
>          RequestDispatcher dispatcher = data.getServletContext()
> -            .getRequestDispatcher(paths[0] + filename);
> +        .getRequestDispatcher(relativeTemplateName);
> 
>          try
>          {
> @@ -215,19 +227,25 @@
>           * Use the turbine template service to translate
>           * the template paths.
>           */
> -        paths = TurbineTemplate.translateTemplatePaths(
> -            config.getStringArray("templates"));
> +        templatePaths = TurbineTemplate.translateTemplatePaths(
> +        config.getStringArray("templates"));
> 
> -        /* not working properly - removing until I can investigate (jdm)
> -        if (path.startsWith("/"))
> -        {
> -            path = path.substring(1);
> -        }
> -        if (path.length() > 0 && !path.endsWith("/"))
> +        /*
> +         * Set relative paths from config.
> +         * Needed for javax.servlet.RequestDispatcher
> +         */
> +        relativeTemplatePaths = config.getStringArray("templates");
> +
> +        /*
> +         * Make sure that the relative paths begin with /
> +         */
> +        for (int i = 0; i < relativeTemplatePaths.length; i++)
>          {
> -            path += "/";
> +            if (!relativeTemplatePaths[i].startsWith("/"))
> +            {
> +                relativeTemplatePaths[i] = "/" + relativeTemplatePaths[i];
> +            }
>          }
> -        */
> 
>          bufferSize = config.getInt("buffer.size", 8192);
> 
> @@ -247,7 +265,36 @@
>       * @return boolean
>       */
>      public boolean templateExists(String template)
> +    {
> +        return TurbineTemplate.templateExists(template, templatePaths);
> +    }
> +    /**
> +     * Searchs for a template in the default.template path[s] and
> +     * returns the template name with a relative path which is
> +     * required by <a
> href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/Servlet
> Context.html#getRequestDispatcher(java.lang.String)">
> +     * javax.servlet.RequestDispatcher</a>
> +     *
> +     * @param String template
> +     * @return String
> +     */
> +
> +    public String getRelativeTemplateName(String template)
>      {
> -        return TurbineTemplate.templateExists(template, paths);
> -    }
> +        /* A dummy String[] object used to pass a String to
> +           TurbineTemplate.templateExists
> +         */
> +        String[] testTemplatePath = new String[1];
> +
> +        /** Find which template path the template is in */
> +        for (int i = 0; i < relativeTemplatePaths.length; i++)
> +        {
> +            testTemplatePath[0] =
> TurbineServlet.getRealPath(relativeTemplatePaths[i]);
> +            if (TurbineTemplate.templateExists(template, testTemplatePath))
> +            {
> +                return relativeTemplatePaths[i] + template;
> +            }
> +        }
> +
> +        return null;
> +    }
>  }

-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]

http://jakarta.apache.org/velocity
http://jakarta.apache.org/turbine
http://jakarta.apache.org/commons
http://tambora.zenplex.org

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to