cmlenz      02/03/06 06:30:41

  Modified:    src/webdav/server/org/apache/slide/webdav WebdavServlet.java
  Log:
  - Add the option to set a template resource that should handle the
    generation of HTML index pages
  - Removed catch(Throwable) for init-parameter retrieval, what does that
    help but hide real problems??
  
  Revision  Changes    Path
  1.34      +52 -35    
jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java
  
  Index: WebdavServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- WebdavServlet.java        22 Feb 2002 17:13:25 -0000      1.33
  +++ WebdavServlet.java        6 Mar 2002 14:30:41 -0000       1.34
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java,v 
1.33 2002/02/22 17:13:25 pnever Exp $
  - * $Revision: 1.33 $
  - * $Date: 2002/02/22 17:13:25 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java,v 
1.34 2002/03/06 14:30:41 cmlenz Exp $
  + * $Revision: 1.34 $
  + * $Date: 2002/03/06 14:30:41 $
    *
    * ====================================================================
    *
  @@ -110,7 +110,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Remy Maucherat</a>
    * @author Dirk Verbeeck
  - * @version $Revision: 1.33 $
  + * @version $Revision: 1.34 $
    */
   public class WebdavServlet extends HttpServlet {
       
  @@ -153,6 +153,12 @@
       
       
       /**
  +     * RequestDispatcher to the directory browsing template, if specified.
  +     */
  +    protected RequestDispatcher directoryBrowsingTemplate;
  +    
  +    
  +    /**
        * Set to true if the servlet is handling the lifecycle of the domain.
        */
       protected boolean handleLifecycle = true;
  @@ -401,27 +407,26 @@
           String domainConfigFile = null;
           
           String value = null;
  -        try {
  -            value = getInitParameter("namespace");
  -            if (value != null)
  -                namespaceName = value;
  -        } catch (Throwable t) {
  -            ;
  -        }
  -        try {
  -            value = getInitParameter("domain");
  -            if (value != null)
  -                domainConfigFile = value;
  -        } catch (Throwable t) {
  -            ;
  -        }
  -        try {
  -            value = getInitParameter("directory-browsing");
  -            if (value != null) {
  +        
  +        value = getInitParameter("namespace");
  +        if (value != null)
  +            namespaceName = value;
  +        
  +        value = getInitParameter("domain");
  +        if (value != null)
  +            domainConfigFile = value;
  +        
  +        value = getInitParameter("directory-browsing");
  +        if (value != null) {
  +            if (value.startsWith("/")) {
  +                directoryBrowsingTemplate =
  +                    getServletContext().getRequestDispatcher(value);
  +                if (directoryBrowsingTemplate == null) {
  +                    directoryBrowsing = false;
  +                }
  +            } else {
                   directoryBrowsing = new Boolean(value).booleanValue();
               }
  -        } catch (Throwable t) {
  -            ;
           }
           
           try {
  @@ -479,18 +484,30 @@
           throws ServletException, IOException {
           
           if (directoryBrowsing) {
  -            Writer writer = resp.getWriter();
  -            resp.setContentType("text/html");
  -            try {
  -                displayDirectoryBrowsing(req, writer);
  -            } catch (AccessDeniedException e) {
  -                resp.sendError(WebdavStatus.SC_FORBIDDEN);
  -            } catch (ObjectNotFoundException e) {
  -                resp.sendError(WebdavStatus.SC_NOT_FOUND);
  -            } catch (LinkedObjectNotFoundException e) {
  -                resp.sendError(WebdavStatus.SC_NOT_FOUND);
  -            } catch (SlideException e) {
  -                resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +            if (directoryBrowsingTemplate != null) {
  +                // attributes used by the tag library
  +                req.setAttribute("org.apache.slide.NamespaceName",
  +                                 token.getName());
  +                // attributes for general use
  +                req.setAttribute("slide_namespace", token.getName());
  +                req.setAttribute
  +                    ("slide_uri", WebdavUtils.getRelativePath
  +                        (req, (WebdavServletConfig)getServletConfig()));
  +                directoryBrowsingTemplate.forward(req, resp);
  +            } else {
  +                Writer writer = resp.getWriter();
  +                resp.setContentType("text/html");
  +                try {
  +                    displayDirectoryBrowsing(req, writer);
  +                } catch (AccessDeniedException e) {
  +                    resp.sendError(WebdavStatus.SC_FORBIDDEN);
  +                } catch (ObjectNotFoundException e) {
  +                    resp.sendError(WebdavStatus.SC_NOT_FOUND);
  +                } catch (LinkedObjectNotFoundException e) {
  +                    resp.sendError(WebdavStatus.SC_NOT_FOUND);
  +                } catch (SlideException e) {
  +                    resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +                }
               }
           } else {
               resp.sendError(WebdavStatus.SC_FORBIDDEN);
  
  
  

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

Reply via email to