You can't set a permission that is inherited. Inherited means the ACE
is really inherited (believe me) from a parent resource.

In fact you should filter the ACEs with the inherited flag set before
calling the aclMethod(). Luckily the client library does this for you.

Ingo

> Hi,
>       I have been trying for quiet some time to add a permission to a
> folder using webdav client-lib that does not inherit to the downstream
> folders. I have taken the code from client-lib that is shipped with slide
> and am using slide 2.1 B1. In my code I use the following fragment to create
> an ACE object and bind it to ACL. 
> 
> The code works perfectly if 4th parameter (isInherited) is set to false
> 
> // Create new ACE object bIsInherited = false
> aceNew = new Ace(sPrincipal, bDenyPrivilege, false, bIsInherited, null);
> 
> 
> The code does not work if 4th parameter (isInherited) is set to true. I am
> assuming that you set the 4th parameter to true if you are trying to make
> the permission non-inheritable (not allow it to percolate to the downstream
> folders).
> 
> With 4th parameter set to true, webdav client does not throw any error but
> does not add the permission. Later when I get the ACL for the resource I
> find that the ace has not been added.
> 
> Please let me know if I am missing something ... or if it is possible at all
> to create a permission(ace) in a ACL which does not percolate to downstream
> folders using webdav client lib.
> 
> I found that adding a inheritable(false) permission in domain.xml does the
> job as desired. I am wondering why it is not working from webdav client lib.
> 
> Any help is appreciated !!!!!!
> 
> /******************* code fragment *****************************/
> 
> // Fetch ACL from slide for a folder
> AclProperty acl = webDavResource.aclfindMethod(sResourcePath);
> 
> // Fetch the ACE's (access control entities) of the existing ACL
> Ace[] aces = acl.getAces();
> 
> // Create new ACE object none exists
> if (aces == null)
>    aces = new Ace[0];
> 
> Ace[] oldAces = aces;
> // Create a new ace array (larger then the earlier ace array by 1)
> aces = new Ace[oldAces.length + 1];
> 
> // Copy the old array into the new array
> System.arraycopy(oldAces,0,aces,0,oldAces.length);
> 
> // Create new ACE object bIsInherited = true
> aceNew = new Ace(sPrincipal, bDenyPrivilege, false, bIsInherited, null);
> 
> // Copy the new ace into the new ace array
> aces[oldAces.length] = aceMatchingPrincipal;
> 
> // Create a new privilege
> Privilege privilegeNew = new Privilege(qnPermission.getNamespaceURI(),
> qnPermission.getLocalName(), null);
> 
> // Update the ace object with the new privilege settings
> 
> aceNew.addPrivilege(privilegeNew);
>       
> // Update repository with new acl for the resource
> bSuccess = webDavResource.aclMethod(sResourcePath, aces);
> 
> 
> 
> Krishna
> (303) 274 3027

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to