1 package org
.argeo
.jackrabbit
;
3 import java
.security
.Principal
;
4 import java
.util
.ArrayList
;
7 import javax
.jcr
.RepositoryException
;
8 import javax
.jcr
.Session
;
10 import org
.apache
.commons
.logging
.Log
;
11 import org
.apache
.commons
.logging
.LogFactory
;
12 import org
.apache
.jackrabbit
.api
.JackrabbitSession
;
13 import org
.apache
.jackrabbit
.api
.security
.user
.Authorizable
;
14 import org
.apache
.jackrabbit
.api
.security
.user
.UserManager
;
15 import org
.argeo
.ArgeoException
;
16 import org
.argeo
.jcr
.security
.JcrAuthorizations
;
18 /** Apply authorizations to a Jackrabbit repository. */
19 public class JackrabbitAuthorizations
extends JcrAuthorizations
{
20 private final static Log log
= LogFactory
21 .getLog(JackrabbitAuthorizations
.class);
23 private List
<String
> groupPrefixes
= new ArrayList
<String
>();
26 protected Principal
getOrCreatePrincipal(Session session
,
27 String principalName
) throws RepositoryException
{
28 UserManager um
= ((JackrabbitSession
) session
).getUserManager();
29 Authorizable authorizable
= um
.getAuthorizable(principalName
);
30 if (authorizable
== null) {
31 groupPrefixes
: for (String groupPrefix
: groupPrefixes
) {
32 if (principalName
.startsWith(groupPrefix
)) {
33 authorizable
= um
.createGroup(principalName
);
34 log
.info("Created group " + principalName
);
38 if (authorizable
== null)
39 throw new ArgeoException("Authorizable " + principalName
42 return authorizable
.getPrincipal();
45 public void setGroupPrefixes(List
<String
> groupsToCreate
) {
46 this.groupPrefixes
= groupsToCreate
;