remm        01/06/08 17:15:36

  Modified:    src/webdav/client/src/org/apache/webdav/lib/properties
                        AclProperty.java
  Log:
  - fix: ClassCastException
  - fix: pricipal typo
  - support for href and other principals
  - misc XML format changes
  
  Patch submitted by Dirk Verbeeck <dirk.verbeeck at the-ecorp.com>
  
  Revision  Changes    Path
  1.2       +54 -13    
jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/properties/AclProperty.java
  
  Index: AclProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/properties/AclProperty.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AclProperty.java  2001/05/17 18:30:57     1.1
  +++ AclProperty.java  2001/06/09 00:15:35     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/properties/AclProperty.java,v
 1.1 2001/05/17 18:30:57 remm Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/05/17 18:30:57 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/properties/AclProperty.java,v
 1.2 2001/06/09 00:15:35 remm Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/06/09 00:15:35 $
    *
    * ====================================================================
    *
  @@ -82,7 +82,8 @@
    * defined in the WebDAV Access Control Protocol specification.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.1 $
  + * @author Dirk Verbeeck
  + * @version $Revision: 1.2 $
    */
   public class AclProperty extends BaseProperty {
   
  @@ -133,7 +134,9 @@
               } catch (ClassCastException e) {
               }
           }
  -        return (Ace[]) aces.toArray();
  +        Ace[] tmp=new Ace[aces.size()];
  +        System.arraycopy(aces.toArray(),0,tmp,0,tmp.length);
  +        return tmp;
       }
   
   
  @@ -146,11 +149,36 @@
       protected Ace parseAce(Element element) {
   
           String principal = null;
  -        Element child = DOMUtils.getFirstElement(element, "DAV:", "pricipal");
  -        if (child != null) {
  -            principal = DOMUtils.getTextValue(child);
  +        Element child = DOMUtils.getFirstElement(element, "DAV:", "principal");
  +        if (child == null) {
  +            System.err.println("Error: mandatory element <principal> is missing !");
  +            System.err.println("element: " + element);
  +            return null;
  +        }
  +        
  +        Element href = DOMUtils.getFirstElement(child, "DAV:", "href");
  +        if (href!=null) 
  +        {
  +            principal = DOMUtils.getTextValue(href);
  +        }
  +
  +        String[] types={"all","authenticated","unauthenticated","property","self"};
  +        for (int i=0 ; i<types.length && principal==null ; i++)        
  +        {
  +            Element type = DOMUtils.getFirstElement(child, "DAV:", types[i]);
  +            if (type!=null) 
  +            {
  +                principal=types[i];
  +            }
           }
   
  +        if (principal==null) 
  +        {
  +            System.err.println("Error: unknown type of principal");
  +            System.err.println("element: " + element);
  +            return null;
  +        }
  +
           Ace ace = new Ace(principal);
   
           child = DOMUtils.getFirstElement(element, "DAV:", "grant");
  @@ -159,18 +187,31 @@
               ace.setNegative(true);
            }
           if (child != null) {
  -            NodeList privilegeElements = 
  -                child.getElementsByTagNameNS("DAV:", "privilege");
  +            NodeList privilegeElements = child.getElementsByTagNameNS("DAV:", 
"privilege");
               for (int i = 0; i < privilegeElements.getLength(); i++) {
                   Element privilegeElement = (Element) privilegeElements.item(i);
  -                ace.addPrivilege(parsePrivilege(privilegeElement));
  +                NodeList privileges = privilegeElement.getElementsByTagName("*");
  +                for (int j=0 ; j<privileges.getLength() ; j++)
  +                {
  +                    Element privilege = (Element) privileges.item(j);
  +                    ace.addPrivilege(parsePrivilege(privilege));
  +                }
               }
           }
   
           child = DOMUtils.getFirstElement(element, "DAV:", "inherited");
           if (child != null) {
  -            ace.setInherited(true);
  -            ace.setInheritedFrom(DOMUtils.getTextValue(child));
  +            href=DOMUtils.getFirstElement(child, "DAV:", "href");
  +            if (href!=null)
  +            {
  +                ace.setInherited(true);
  +                ace.setInheritedFrom(DOMUtils.getTextValue(href));
  +            }
  +            else 
  +            {
  +                System.err.println("Error: mandatory element <href> is missing !");
  +                return null;
  +            }
           }
           
           child = DOMUtils.getFirstElement(element, "DAV:", "protected");
  
  
  

Reply via email to