You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by re...@apache.org on 2001/06/09 02:14:53 UTC
cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/method AclMethod.java
remm 01/06/08 17:14:53
Modified: src/webdav/server/org/apache/slide/webdav/method
AclMethod.java
Log:
- new constant PRIVILEGE_REMOVE_REVISION_CONTENT
- ACL Element is the root element of request
- gant xor deny
- the privileges are inside grant/deny
- error msg improvements
Patch submitted by Dirk Verbeeck <dirk.verbeeck at the-ecorp.com>
Revision Changes Path
1.4 +40 -33 jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java
Index: AclMethod.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AclMethod.java 2001/05/16 12:07:50 1.3
+++ AclMethod.java 2001/06/09 00:14:53 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java,v 1.3 2001/05/16 12:07:50 juergen Exp $
- * $Revision: 1.3 $
- * $Date: 2001/05/16 12:07:50 $
+ * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java,v 1.4 2001/06/09 00:14:53 remm Exp $
+ * $Revision: 1.4 $
+ * $Date: 2001/06/09 00:14:53 $
*
* ====================================================================
*
@@ -88,6 +88,7 @@
* ACL method.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
+ * @author Dirk Verbeeck
*/
public class AclMethod extends WebdavMethod {
@@ -110,10 +111,11 @@
protected static final int PRIVILEGE_REMOVE_REVISION_METADATA = 12;
protected static final int PRIVILEGE_CREATE_REVISION_CONTENT = 13;
protected static final int PRIVILEGE_MODIFY_REVISION_CONTENT = 14;
- protected static final int PRIVILEGE_READ_ACL = 15;
- protected static final int PRIVILEGE_WRITE_ACL = 16;
- protected static final int PRIVILEGE_GRANT_PERMISSION = 17;
- protected static final int PRIVILEGE_REVOKE_PERMISSION = 18;
+ protected static final int PRIVILEGE_REMOVE_REVISION_CONTENT = 15;
+ protected static final int PRIVILEGE_READ_ACL = 16;
+ protected static final int PRIVILEGE_WRITE_ACL = 17;
+ protected static final int PRIVILEGE_GRANT_PERMISSION = 18;
+ protected static final int PRIVILEGE_REVOKE_PERMISSION = 19;
// ----------------------------------------------------- Instance Variables
@@ -178,20 +180,8 @@
(new StringReader(requestBody))));
// Get the root element of the document
- Element rootElement = document.getDocumentElement();
- //NodeList childList = rootElement.getChildNodes();
+ Element acl = document.getDocumentElement();
- NodeList aclList =
- rootElement.getElementsByTagNameNS
- (NodeProperty.DEFAULT_NAMESPACE, "acl");
-
- if (aclList.getLength() != 1) {
- resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
- throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
- }
-
- Element acl = (Element) aclList.item(0);
-
NodeList aceList = acl.getElementsByTagNameNS
(NodeProperty.DEFAULT_NAMESPACE, "ace");
@@ -236,13 +226,8 @@
NodeList denyList = ace.getElementsByTagNameNS
(NodeProperty.DEFAULT_NAMESPACE, "deny");
- if ((grantList.getLength() > 0) &&
- (denyList.getLength() > 0)) {
- resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
- throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
- }
- if ((grantList.getLength() == 0) &&
- (denyList.getLength() == 0)) {
+ // there must be only ONE grant or deny element
+ if ((grantList.getLength()+denyList.getLength())!=1) {
resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
}
@@ -252,15 +237,19 @@
NodeList privilegeList = null;
if (negative) {
- privilegeList = denyList;
+ Element denyElement=(Element) denyList.item(0);
+ privilegeList = denyElement.getElementsByTagNameNS
+ (NodeProperty.DEFAULT_NAMESPACE, "privilege");
} else {
- privilegeList = grantList;
+ Element grantElement=(Element) grantList.item(0);
+ privilegeList = grantElement.getElementsByTagNameNS
+ (NodeProperty.DEFAULT_NAMESPACE, "privilege");
}
boolean inheritable = true;
// FIXME : Use the very unofficial Advanced ACL spec here.
- for (int j = 0; i < privilegeList.getLength(); j++) {
+ for (int j = 0; j < privilegeList.getLength(); j++) {
Element privilegeElement =
(Element) privilegeList.item(j);
@@ -378,13 +367,27 @@
config.getRevokePermissionAction().getUri(),
negative, inheritable);
break;
+ default:
+ // FIXME: ignore the other permissions ???
+ // System.out.println("Error: Unknown internal privilege code !!!");
+ // resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
+ // throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
}
-
}
-
}
-
+ } catch (AbstractMethodError e) {
+ System.err.println("You are using using an incorrect older parser");
+ System.err.println("that doesn't provide Element::getElementsByTagNameNS");
+ System.err.println("consult the documentation for a list of valid parsers.");
+ System.err.println("You are currently using: ");
+ System.err.println(" " + documentBuilder.getClass().getName());
+ e.printStackTrace();
+ resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
+ throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
} catch (SAXException e) {
+ System.err.println("Error parsing requestBody:");
+ System.err.println(requestBody);
+ e.printStackTrace();
resp.setStatus(WebdavStatus.SC_BAD_REQUEST);
throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
} catch (IOException e) {
@@ -529,12 +532,16 @@
"modify-revision-content")) {
return PRIVILEGE_MODIFY_REVISION_CONTENT;
} else if (hasChild(privilege, SLIDE_NAMESPACE,
+ "remove-revision-content")) {
+ return PRIVILEGE_REMOVE_REVISION_CONTENT;
+ } else if (hasChild(privilege, SLIDE_NAMESPACE,
"grant-permission")) {
return PRIVILEGE_GRANT_PERMISSION;
} else if (hasChild(privilege, SLIDE_NAMESPACE,
"revoke-permission")) {
return PRIVILEGE_REVOKE_PERMISSION;
} else {
+ System.err.println("Error: Unknown privilege !!!");
throw new WebdavException(WebdavStatus.SC_BAD_REQUEST);
}