Daniel Fagerstrom wrote:
The root servlet should be mounted at "" not "/". Alexander had the same problem. So even if I find the current behavior intuitive, no one else seem to agree ;). So we should probably have special handling of "/" as you suggest.
I just tested "" configuration and it does exactly what I was looking for, uh ! Although having special handling of "/", if found acceptable in term of coding, could be valuable for dummy users like I :O) or those who won't read the docs.
Talking about documentation, would this:
http://cocoon.zones.apache.org/daisy/cdocs-site-main/g2/1291.html
be the place where the block protocol and configurations like these could be best described ?

Patrick


/Daniel

Patrick Refondini skrev:
As of my tests a block configured to handle "root" sitemap does only strictly answer to / resource call. The rest of its context seems to be inaccessible.

Thus, for instance, if a block testblock1 is configured to handle "root" sitemap and should serve:
a welcome page at /
some content at /contact.html
some resources at /images/**

only the welcome page at / from this block testblock1 will be accessible (with all references to resources,... failing).

Looking at the org.apache.cocoon.blocks.DispatcherServlet source, this behaviour is due to the way the service() method chooses which block (Servlet) to dispatch to:

Added>>>>
// HARDCODED for root sitemap could be made configurable !?
private static final String DEFAULT_SERVLET = "/";
<<<<Added

protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

(...)

    while (servlet == null && index != -1) {
        path = path.substring(0, index);
        servlet = (Servlet)this.mountableServlets.get(path);
        index = path.lastIndexOf('/');
    }

Added>>>>
    // If no servlet were found try to delegate call to DEFAULT_SERVLET
    if (servlet == null) {
        servlet = (Servlet)this.mountableServlets.get(DEFAULT_SERVLET);
    }
<<<<Added

    if (servlet == null) {
        throw new ServletException("No block for " + req.getPathInfo());
    }

(...)

}


WDYT ? Any caveheat I overlook ?

Patrick



Reply via email to