Hi Sven,
Thanks for the tip. Here's the sample program I did that might help someone
encountering the same issue.
Kai
-----------------------------
package JavaSource;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Enumeration;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpURL;
import org.apache.commons.lang.StringUtils;
import org.apache.webdav.lib.Ace;
import org.apache.webdav.lib.Privilege;
import org.apache.webdav.lib.WebdavResource;
import org.apache.webdav.lib.WebdavResources;
import org.apache.webdav.lib.properties.AclProperty;
import org.apache.webdav.lib.util.QName;
public class Permissions {
static final String URL = "
http://localhost:8080/jahia/webdav/site/myjahiasite/shared/files/";
static final String USR = "root";
//static final String USR = "iml";
//static final String USR = "intranet";
static final String PATH =
"/jahia/webdav/site/myjahiasite/shared/files/IML/";
static final String PRINCIPAL =
"/jahia/webdav/site/myjahiasite+/groups/intranetauthor/members";
static final String RESOURCE_NAME = "IML";
static final String PAS = "password";
static final String NAMESPACE = "DAV:";
static final String READ = "read";
static final String WRITE = "write";
static final String MANAGE = "manage";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WebdavResource wdr = null;
try {
// Print connection info
System.out.println("URL = " + URL);
System.out.println("USERNAME = " + USR);
System.out.println("PASSWORD = " + PAS);
// HttpURL hrl = new HttpURL(USR, PAS, URL);
HttpURL hrl = new HttpURL(URL);
hrl.setUserinfo(USR, PAS);
// Initialize connection to webdav resource using the define
HttpURL
// above.
wdr = new WebdavResource(hrl);
System.out.println("Path = " + wdr.getPath());
System.out.println("WebdavResource Name = " + wdr.getName());
// Get the child resources (folder/s or file/s) of the
// retrieved web dave resource.
WebdavResources resources = wdr.getChildResources();
WebdavResource[] resourceList = resources.listResources();
int counter = resourceList.length;
System.out.println("No. of Child Resouces = " + counter);
// Check if the resource RESOURCE_NAME is one of the child
resources
boolean hasResource = resources.isThereResourceName
(RESOURCE_NAME);
System.out.println("Has child resource " + RESOURCE_NAME + "? "
+ hasResource);
// Get all the child resources
for (int i = 0; i < counter; i++) {
WebdavResource resource = resourceList[i];
String resourceName = resource.getName();
System.out.println
("========================================");
System.out.println("Resource Name = " + resourceName);
System.out.println
("========================================");
AclProperty acl = resource.aclfindMethod(PATH);
Ace[] aces = acl.getAces();
int length = aces.length;
for (int j = 0; j < length; j++) {
Ace ace = aces[j];
showAceProperties(ace);
showAcePrivileges(ace.enumeratePrivileges());
System.out.println
("********************************************************");
}
// Adding the new Ace for the group IMLAUTHOR
if (StringUtils.equals(resourceName, RESOURCE_NAME)){
Ace ace = new
Ace("/jahia/webdav/site/myjahiasite+/groups/imlauthor/members");
// Do not deny access
ace.setNegative(false);
// Not Protected
ace.setProtected(false);
// Not Inherited
ace.setInherited(false);
ace.setInheritedFrom(null);
// Read, Write and Manage privileges
Privilege readPrivilege = new Privilege(NAMESPACE, READ,
null);
Privilege writePrivilege = new Privilege(NAMESPACE,
WRITE, null);
Privilege managePrivilege = new Privilege(NAMESPACE,
MANAGE, null);
ace.addPrivilege(readPrivilege);
ace.addPrivilege(writePrivilege);
ace.addPrivilege(managePrivilege);
// Display new Ace properties and privileges to be added
to the web dav resource
System.out.println("These are the new ace properties and
privileges: ");
showAceProperties(ace);
showAcePrivileges(ace.enumeratePrivileges());
// Update the web dav resource's aces
Ace[] oldAces=aces;
aces=new Ace[oldAces.length+1];
System.arraycopy(oldAces, 0, aces, 0, oldAces.length);
// Add new Ace
aces[oldAces.length] = ace;
System.out.println("Performing aclMethod(" + PATH + ",
aces) method...");
boolean updateAces = wdr.aclMethod(PATH, aces);
System.out.println("Update Aces successful? " +
updateAces);
}
}
} catch (MalformedURLException mue) {
System.out.println("MalformedURLException");
mue.printStackTrace();
} catch (HttpException he) {
System.out.println("HttpException");
he.printStackTrace();
} catch (IOException ioe) {
System.out.println("IOException");
ioe.printStackTrace();
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
} finally {
try {
// It is important to close the webdav resource connection
wdr.close();
} catch (IOException ioe){
System.out.println("IOException");
ioe.printStackTrace();
}
}
}
/**
* Display properties of the AclMethod's ace object
*
* @param ace
*/
private static void showAceProperties(Ace ace) {
System.out.println("Principal = " + ace.getPrincipal());
System.out.println("Property = " + ace.getProperty());
System.out.println("Is Negative? = " + ace.isNegative());
System.out.println("Is Protected? = " + ace.isProtected());
System.out.println("Is Inherited? = " + ace.isInherited());
if (ace.isInherited())
System.out.println("Inherited From = " + ace.getInheritedFrom
());
}
/**
* @param privileges
*/
private static void showAcePrivileges(Enumeration privileges) {
System.out.println("Privileges: ");
while (privileges != null && privileges.hasMoreElements()) {
Privilege privilege = (Privilege) privileges.nextElement();
System.out.println("Name = " + privilege.getName());
System.out.println("Namespace = " + privilege.getNamespace());
System.out.println("Parameter = " + privilege.getParameter());
}
}
}
On 4/4/06, Kai Rivera <[EMAIL PROTECTED]> wrote:
>
> Hi Sven,
>
> Cool, thanks! :-) I normally don't do this but due to the fact that we're
> sooo pressed for time to finish
> this project, I would be extremely grateful if you could post a code
> snippet for this.
>
> Thank you!
>
> --
>
> Cheers,
> Kai Rivera
>
> "Get things done."
>
> On 4/3/06, Sven Pfeiffer <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > you can use the WebdavResources aclMethod(java.lang.String path,Ace[]
> > aces)
> > - method.
> >
> > Thats what I am working with to let the users change the ACLs using a
> > gui.
> >
> > hth
> > SVen
> >
> >
> > >-----Original Message-----
> > >From: Kai Rivera [mailto:[EMAIL PROTECTED]
> > >Sent: Monday, April 03, 2006 12:28 PM
> > >To: [email protected]
> > >Subject: Programmatically set user permissions
> > >
> > >Hi,
> > >
> > >I'm a jakarta slide newbie and am working on a project where we have to
> > >synchronize a file repository in jahia with a proprietary file
> > >repository.
> > >In the source directory, all the user permissions have been set and our
> > >client would like us not only to synchronize the files, but to keep the
> > >user permissions too.
> > >
> > >How do we programmatically set user permissions with slide?
> > >
> > >Thanks in advance!
> > >
> > >--
> > >Cheers,
> > >Kai Rivera
> > >
> > >"Get things done."
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
>