You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Joerg Heinicke <jh...@virbus.de> on 2003/10/15 01:33:30 UTC

Re: JspGenerator.java

On 14.10.2003 20:39, Costas Matrozos wrote:

> The following patch relates to two issues.
> 
> A. (possibly a bug)
>     When a jsp is beeing called from within an agreegation, 'sitemapURI' is not 
> part of the servletPath. It results to a null pointer.
>     I believe it is safer to extract the 'servletPath'  by locating the last 
> occurance of '/'.
>     (has been tested and works fine)

working on it.

> B. (suggestion. A beter way may already exists)
>     My aim is to make 'manager' and more specifically the DB pool object availbe 
> to JSP so that it can use it to make access DB.
>     It works just fine.

I don't like the idea. You leave the Cocoon world, but want to provide a 
Cocoon object to the outside? Can somebody else comment?

Joerg

> rgrds
> costas
> 
> Index: JspGenerator.java
> ===================================================================
> RCS file: 
> /home/cvspublic/cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/generation/JspGenerator.java,v
> retrieving revision 1.7
> diff -u -r1.7 JspGenerator.java
> --- JspGenerator.java   5 Sep 2003 07:04:35 -0000       1.7
> +++ JspGenerator.java   14 Oct 2003 18:19:38 -0000
> @@ -104,13 +104,21 @@
>                  String servletPath = httpRequest.getServletPath();
>                  // remove sitemap URI part
>                  String sitemapURI = 
> ObjectModelHelper.getRequest(objectModel).getSitemapURI();
> -                servletPath = servletPath.substring(0, 
> servletPath.indexOf(sitemapURI));
> +                try {
> +                  servletPath = servletPath.substring(0, 
> servletPath.indexOf(sitemapURI));
> +                } catch (Exception e) {
> +                  // the above statement throws an error when called in 
> aggregation with
> +                  // different name than expected
> +                  servletPath = servletPath.substring(0, 
> servletPath.lastIndexOf("/") + 1);
> +                }
>                  url = servletPath + url;
>              }
>                                                                                                                 
>  
>              engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
>                                                                                                                 
>  
>              getLogger().debug("JspGenerator executing JSP:" + url);
> +           // pass manager down to jsp. Provides handle to DB pool
> +           httpContext.setAttribute("manager", manager);
>              byte[] bytes = engine.executeJSP(url, httpRequest, httpResponse, 
> httpContext);
>                                                                                                                 
>  
>              InputSource input = new InputSource(new ByteArrayInputStream(bytes));
>