[prev in list] [next in list] [prev in thread] [next in thread] 

List:       slide-dev
Subject:    cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/method OptionsMethod.java
From:       juergen () apache ! org
Date:       2002-01-30 13:20:01
[Download RAW message or body]

juergen     02/01/30 05:20:01

  Modified:    src/webdav/server/org/apache/slide/webdav/method
                        OptionsMethod.java
  Log:
  - Added "version-control" to DAV-header
  - Added VERSION-CONTROL, REPORT to Allow-Header
  - minor restructuring of the executeRequest() method
  (Peter)
  
  Revision  Changes    Path
  1.11      +55 -27    \
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/OptionsMethod.java  
  Index: OptionsMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/OptionsMethod.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- OptionsMethod.java	8 Jan 2002 14:31:37 -0000	1.10
  +++ OptionsMethod.java	30 Jan 2002 13:20:01 -0000	1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/OptionsMethod.java,v \
                1.10 2002/01/08 14:31:37 juergen Exp $
  - * $Revision: 1.10 $
  - * $Date: 2002/01/08 14:31:37 $
  + * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/OptionsMethod.java,v \
1.11 2002/01/30 13:20:01 juergen Exp $  + * $Revision: 1.11 $
  + * $Date: 2002/01/30 13:20:01 $
    *
    * ====================================================================
    *
  @@ -77,7 +77,7 @@
   import org.apache.slide.lock.*;
   import org.apache.slide.search.*;
   import org.apache.slide.content.*;
  -
  +import org.apache.slide.util.Configuration;
   
   /**
    * OPTIONS Method.
  @@ -100,55 +100,83 @@
           throws WebdavException {
       }
       
  -    protected void executeRequest()
  -        throws WebdavException {
  +    protected void executeRequest() throws WebdavException {
  +            
  +        StringBuffer davHeader = new StringBuffer( "1" );
  +        
  +        if( Configuration.useIntegratedLocking() )
  +            davHeader.append( ", 2" );
  +        
  +        davHeader.append( ", slide" );
  +        
  +        if( Configuration.useIntegratedSecurity() )
  +            davHeader.append( ", access-control" );
  +        
  +        if( Configuration.useVersionControl() )
  +            davHeader.append( ", version-control" );
  +        
  +        resp.addHeader( "DAV", davHeader.toString() );
           
  -        if( org.apache.slide.util.Configuration.useIntegratedSecurity() )
  -            resp.addHeader("DAV", "1, 2, slide, access-control");
  -        else
  -            resp.addHeader("DAV", "1, 2, slide");
           
           String resourceUri = requestUri;
           if (resourceUri == null) {
               resourceUri = "/";
           }
           
  -        String methodsAllowed = null;
  +        // prepare for allow-header
  +        boolean resourceExists = false;
  +        boolean resourceIsCollection = false;
  +        SearchLanguage[] languages =
  +            token.getSearchHelper().getSupportedLanguages (slideToken);
           
  -        SearchLanguage [] languages = null;
  -        
  -        Search search = token.getSearchHelper();
  -        
  -        languages = search.getSupportedLanguages (slideToken);
           try {
               NodeRevisionDescriptors revisionDescriptors =
                   content.retrieve(slideToken, resourceUri);
               NodeRevisionDescriptor revisionDescriptor =
                   content.retrieve(slideToken, revisionDescriptors);
  -            methodsAllowed = "OPTIONS, GET, HEAD, POST, DELETE, TRACE, "
  -                + "PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK, ACL";
  -            if (!WebdavUtils.isCollection(revisionDescriptor)) {
  -                methodsAllowed = methodsAllowed + ", PUT";
  -            }
  +            resourceExists = true;
  +            if( WebdavUtils.isCollection(revisionDescriptor) )
  +                resourceIsCollection = true;
           } catch (SlideException e) {
               if (resourceUri.equals("/")) {
  -                methodsAllowed = "OPTIONS, GET, HEAD, POST, DELETE, TRACE, "
  -                    + "PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK, ACL";
  +                resourceExists = true;
  +                resourceIsCollection = true;
               } else {
  -                methodsAllowed = "OPTIONS, MKCOL, PUT, LOCK";
  +                resourceExists = false;
               }
           }
           
  +        // build allow-header
  +        StringBuffer methodsAllowed = new StringBuffer();
  +        if( resourceExists ) {
  +            methodsAllowed.append( "OPTIONS, GET, HEAD, POST, DELETE, TRACE" );
  +            if( !resourceIsCollection )
  +                methodsAllowed.append( ", PUT" );
  +            methodsAllowed.append( ", PROPFIND, PROPPATCH, COPY, MOVE" );
  +            if( Configuration.useIntegratedLocking() )
  +                methodsAllowed.append( ", LOCK, UNLOCK" );
  +            if( Configuration.useIntegratedSecurity() )
  +                methodsAllowed.append( ", ACL" );
  +            if( Configuration.useVersionControl() )
  +                methodsAllowed.append( ", VERSION-CONTROL, REPORT" );
  +            if( languages != null )
  +                methodsAllowed.append( ", SEARCH" );
  +        }
  +        else {
  +            methodsAllowed.append( "OPTIONS, MKCOL, PUT" );
  +            if( Configuration.useIntegratedLocking() )
  +                methodsAllowed.append( ", LOCK" );
           if (languages != null)
  -            methodsAllowed = methodsAllowed + ", SEARCH";
  +                methodsAllowed.append( ", SEARCH" );
  +        }
           
  -        resp.addHeader("Allow", methodsAllowed);
  -        resp.addHeader("MS-Author-Via", "DAV");
  +        resp.addHeader("Allow", methodsAllowed.toString());
           
           if (languages != null)
               for (int i = 0; i < languages.length; i++)
                   resp.addHeader ("DASL", "<" + languages [i].getGrammarUri() + \
">");  
  +        resp.addHeader("MS-Author-Via", "DAV");
       }
       
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:slide-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:slide-dev-help@jakarta.apache.org>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic