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]