remm        01/03/18 21:10:39

  Modified:    src/webdav/server/org/apache/slide/webdav/method
                        PropFindMethod.java WebdavMethod.java
  Log:
  - Supports DAV:principal-collection-set property.
  - Fix path bug : the paths returned for ACL related things were Slide paths which
    had to be converted to absolute URLs.
  
  Revision  Changes    Path
  1.14      +37 -5     
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java
  
  Index: PropFindMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PropFindMethod.java       2001/03/19 00:55:50     1.13
  +++ PropFindMethod.java       2001/03/19 05:10:38     1.14
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java,v
 1.13 2001/03/19 00:55:50 remm Exp $
  - * $Revision: 1.13 $
  - * $Date: 2001/03/19 00:55:50 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java,v
 1.14 2001/03/19 05:10:38 remm Exp $
  + * $Revision: 1.14 $
  + * $Date: 2001/03/19 05:10:38 $
    *
    * ====================================================================
    *
  @@ -196,6 +196,13 @@
       
       
       /**
  +     * Principal collection set.
  +     */
  +    private static final String PRINCIPAL_COLLECTION_SET =
  +        "principal-collection-set";
  +    
  +    
  +    /**
        * ACL semantics.
        */
       private static final String ACL_SEMANTICS = "acl-semantics";
  @@ -632,6 +639,7 @@
               showCurrentUserPrivilegeSet(object, generatedXML);
               showAcl(object, generatedXML);
               showAclSemantics(generatedXML);
  +            showPrincipalCollectionSet(generatedXML);
               
               // Other properties
               Enumeration propertyList =
  @@ -701,6 +709,8 @@
                                         XMLPrinter.NO_CONTENT);
               generatedXML.writeElement(null, ACL_SEMANTICS,
                                         XMLPrinter.NO_CONTENT);
  +            generatedXML.writeElement(null, PRINCIPAL_COLLECTION_SET,
  +                                      XMLPrinter.NO_CONTENT);
               
               // Then, add this resource's custom properties
               propertyList = revisionDescriptor.enumerateProperties();
  @@ -780,6 +790,10 @@
                              (propertyNamespace.equals
                               (NodeProperty.DEFAULT_NAMESPACE))) {
                       showAclSemantics(generatedXML);
  +                } else if ((propertyName.equals(PRINCIPAL_COLLECTION_SET)) &&
  +                           (propertyNamespace.equals
  +                            (NodeProperty.DEFAULT_NAMESPACE))) {
  +                    showPrincipalCollectionSet(generatedXML);
                   } else {
                       
                       // Search in the custom properties
  @@ -1392,11 +1406,13 @@
                       }
                       
                       if (inheritedPermissions) {
  +                        generatedXML.writeElement(null, "protected", 
  +                                                  XMLPrinter.NO_CONTENT);
                           generatedXML.writeElement(null, INHERITED, 
                                                     XMLPrinter.OPENING);
                           generatedXML.writeElement(null, "href", 
                                                     XMLPrinter.OPENING);
  -                        generatedXML.writeText(URLEncode(current.getUri()));
  +                        generatedXML.writeText(getFullPath(current.getUri()));
                           generatedXML.writeElement(null, "href", 
                                                     XMLPrinter.CLOSING);
                           generatedXML.writeElement(null, INHERITED, 
  @@ -1410,6 +1426,7 @@
               }
               
               inheritedPermissions = true;
  +            
               try {
                   current = structure.getParent(slideToken, current);
               } catch (SlideException e) {
  @@ -1437,7 +1454,7 @@
                                         XMLPrinter.NO_CONTENT);
           } else {
               generatedXML.writeElement(null, "href", XMLPrinter.OPENING);
  -            generatedXML.writeText(URLEncode(principal));
  +            generatedXML.writeText(getFullPath(principal));
               generatedXML.writeElement(null, "href", XMLPrinter.CLOSING);
           }
           generatedXML.writeElement(null, PRINCIPAL, XMLPrinter.CLOSING);
  @@ -1467,6 +1484,21 @@
           generatedXML.writeElement(null, ACL_SEMANTICS, XMLPrinter.OPENING);
           generatedXML.writeText(SLIDE_ACL_SEMANTICS);
           generatedXML.writeElement(null, ACL_SEMANTICS, XMLPrinter.CLOSING);
  +    }
  +    
  +    
  +    /**
  +     * WebDAV ACL DAV:principal-collection-set property.
  +     */
  +    private void showPrincipalCollectionSet(XMLPrinter generatedXML) {
  +        NamespaceConfig config = token.getNamespaceConfig();
  +        generatedXML.writeElement(null, PRINCIPAL_COLLECTION_SET, 
  +                                  XMLPrinter.OPENING);
  +        generatedXML.writeElement(null, "href", XMLPrinter.OPENING);
  +        generatedXML.writeText(getFullPath(config.getUsersPath()));
  +        generatedXML.writeElement(null, "href", XMLPrinter.CLOSING);
  +        generatedXML.writeElement(null, PRINCIPAL_COLLECTION_SET, 
  +                                  XMLPrinter.CLOSING);
       }
       
       
  
  
  
  1.16      +15 -3     
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/WebdavMethod.java
  
  Index: WebdavMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/WebdavMethod.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- WebdavMethod.java 2001/03/18 21:50:58     1.15
  +++ WebdavMethod.java 2001/03/19 05:10:39     1.16
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/WebdavMethod.java,v
 1.15 2001/03/18 21:50:58 remm Exp $
  - * $Revision: 1.15 $
  - * $Date: 2001/03/18 21:50:58 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/WebdavMethod.java,v
 1.16 2001/03/19 05:10:39 remm Exp $
  + * $Revision: 1.16 $
  + * $Date: 2001/03/19 05:10:39 $
    *
    * ====================================================================
    *
  @@ -381,6 +381,18 @@
           }
           return URLDecode(result);
           
  +    }
  +    
  +    
  +    /**
  +     * Return an absolute URL (absolute in the HTTP sense) based on a Slide 
  +     * path.
  +     */
  +    public String getFullPath(String path) {
  +        if (path.startsWith("/"))
  +            return URLEncode(req.getContextPath() + path);
  +        else
  +            return URLEncode(req.getContextPath() + "/" + path);
       }
       
       
  
  
  

Reply via email to