pnever      02/04/29 06:21:22

  Modified:    src/webdav/server/org/apache/slide/webdav/method
                        CheckoutMethod.java
  Log:
  Implemented marshalling (parseRequest() method)
  
  Revision  Changes    Path
  1.6       +44 -29    
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CheckoutMethod.java
  
  Index: CheckoutMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CheckoutMethod.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CheckoutMethod.java       25 Apr 2002 21:12:25 -0000      1.5
  +++ CheckoutMethod.java       29 Apr 2002 13:21:22 -0000      1.6
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CheckoutMethod.java,v
 1.5 2002/04/25 21:12:25 jericho Exp $
  - * $Revision: 1.5 $
  - * $Date: 2002/04/25 21:12:25 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CheckoutMethod.java,v
 1.6 2002/04/29 13:21:22 pnever Exp $
  + * $Revision: 1.6 $
  + * $Date: 2002/04/29 13:21:22 $
    *
    * ====================================================================
    *
  @@ -62,7 +62,8 @@
    */
   package org.apache.slide.webdav.method;
   
  -import java.io.IOException;
  +import java.io.*;
  +import java.util.*;
   
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  @@ -75,6 +76,7 @@
   import org.jdom.JDOMException;
   import org.jdom.output.XMLOutputter;
   
  +import org.apache.slide.common.Domain;
   import org.apache.slide.common.NamespaceAccessToken;
   import org.apache.slide.webdav.WebdavServletConfig;
   import org.apache.slide.webdav.WebdavException;
  @@ -91,16 +93,13 @@
    */
   public class CheckoutMethod extends WebdavMethod implements DeltavConstants {
       
  -    /**
  -     * String constant for <code>no-cache</code>.
  -     */
  -    protected static final String NO_CACHE = "no-cache";
  -    
  -    /**
  -     * Resource to be written.
  -     */
  +    /** Resource to be written. */
       private String resourcePath;
  -        
  +    
  +    /** Marshalling variables */
  +    private boolean applyToVersion = false;
  +    private boolean forkOk = false;
  +    
       /**
        * CHECKOUT method constructor.
        *
  @@ -125,23 +124,39 @@
           if (resourcePath == null) {
               resourcePath = "/";
           }
  -        try{
  -            retrieveRequestContent();
  -        }
  -        catch (SAXException  e){
  -            resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
  -            throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
  -        }
  -        catch (IOException  e){
  -            resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  -            throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  -        }
  -        catch (ParserConfigurationException  e){
  -            resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  -            throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +        if( req.getContentLength() > 0 ) {
  +            try{
  +                retrieveRequestContent();
  +                Element coe = getRequestContent().getRootElement();
  +                if( coe == null || !coe.getName().equals(E_CHECKOUT) ) {
  +                    Domain.warn( "Root element must be "+E_CHECKOUT );
  +                    resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
  +                    throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
  +                }
  +                Iterator i = coe.getChildren().iterator();
  +                while( i.hasNext() ) {
  +                    Element e = (Element)i.next();
  +                    if( e.getName().equals(E_APPLY_TO_VERSION) )
  +                        applyToVersion = true;
  +                    if( e.getName().equals(E_FORK_OK) )
  +                        forkOk = true;
  +                }
  +            }
  +            catch (SAXException  e){
  +                resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
  +                throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
  +            }
  +            catch (IOException  e){
  +                resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +                throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +            }
  +            catch (ParserConfigurationException  e){
  +                resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +                throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
  +            }
           }
       }
  -
  +    
       /**
        * Execute the request.
        *
  @@ -156,7 +171,7 @@
           try {
               VersioningHelper vh = VersioningHelper.getVersioningHelper(
                   slideToken, token, req, resp, getConfig() );
  -            vh.checkout( resourcePath , false, false);
  +            vh.checkout( resourcePath, forkOk, applyToVersion );
           }
           catch (PreconditionViolationException e) {
               sendPreconditionViolation(e);
  
  
  

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

Reply via email to