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");