mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-8968 - Change the prefered ScriptGroup constructor to include the ServiceRegistry, so it can be passed on to child ScriptUser objects
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28424 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -106,7 +106,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
{
|
||||
authorities = Collections.emptySet();
|
||||
}
|
||||
return makeScriptGroups(authorities, paging, sortBy, authorityService);
|
||||
return makeScriptGroups(authorities, paging, sortBy, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -118,6 +118,18 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
return searchRootGroupsInZone(displayNamePattern, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search the root groups, those without a parent group.
|
||||
*
|
||||
* @param paging Paging object with max number to return, and items to skip
|
||||
* @param sortBy What to sort on (authorityName, shortName or displayName)
|
||||
* @return The root groups (empty if there are no root groups)
|
||||
*/
|
||||
public ScriptGroup[] searchRootGroups(String displayNamePattern, ScriptPagingDetails paging, String sortBy)
|
||||
{
|
||||
return searchRootGroupsInZone(displayNamePattern, null, paging, sortBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search the root groups, those without a parent group. Searches in all zones.
|
||||
* @return The root groups (empty if there are no root groups)
|
||||
@@ -150,7 +162,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
{
|
||||
authorities = Collections.emptySet();
|
||||
}
|
||||
return makeScriptGroups(authorities, paging, authorityService);
|
||||
return makeScriptGroups(authorities, paging, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -182,7 +194,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
authorities = Collections.emptySet();
|
||||
}
|
||||
|
||||
return makeScriptGroups(authorities, new ScriptPagingDetails(maxItems, skipCount), null, authorityService);
|
||||
return makeScriptGroups(authorities, new ScriptPagingDetails(maxItems, skipCount), null, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -204,7 +216,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
authorities = Collections.emptySet();
|
||||
}
|
||||
|
||||
return makeScriptGroups(authorities, paging, sortBy, authorityService);
|
||||
return makeScriptGroups(authorities, paging, sortBy, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -218,7 +230,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
|
||||
if (authorityService.authorityExists(fullName))
|
||||
{
|
||||
ScriptGroup group = new ScriptGroup(fullName, authorityService);
|
||||
ScriptGroup group = new ScriptGroup(fullName, serviceRegistry);
|
||||
return group;
|
||||
}
|
||||
// group not found.
|
||||
@@ -234,7 +246,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
{
|
||||
if (authorityService.authorityExists(fullAuthorityName))
|
||||
{
|
||||
ScriptGroup group = new ScriptGroup(fullAuthorityName, authorityService);
|
||||
ScriptGroup group = new ScriptGroup(fullAuthorityName, serviceRegistry);
|
||||
return group;
|
||||
}
|
||||
// group not found.
|
||||
@@ -263,6 +275,19 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
return searchGroupsInZone(shortNameFilter, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for groups in all zones.
|
||||
*
|
||||
* @param shortNameFilter partial match on shortName (* and ?) work. If empty then matches everything.
|
||||
* @param paging Paging object with max number to return, and items to skip
|
||||
* @param sortBy What to sort on (authorityName, shortName or displayName)
|
||||
* @return the groups matching the query
|
||||
*/
|
||||
public ScriptGroup[] searchGroups(String shortNameFilter, ScriptPagingDetails paging, String sortBy)
|
||||
{
|
||||
return searchGroupsInZone(shortNameFilter, null, paging, sortBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for groups in a specific zone
|
||||
*
|
||||
@@ -321,7 +346,7 @@ public class ScriptAuthorityService extends BaseScopableProcessorExtension
|
||||
// Return an empty set if unrecognised authority.
|
||||
authorities = Collections.emptySet();
|
||||
}
|
||||
return makeScriptGroups(authorities, paging, sortBy, authorityService);
|
||||
return makeScriptGroups(authorities, paging, sortBy, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -219,12 +219,32 @@ public class ScriptAuthorityServiceTest extends TestCase
|
||||
|
||||
public void testFindGroups()
|
||||
{
|
||||
|
||||
// service.searchGroups(shortNameFilter, paging, sortBy);
|
||||
// service.searchGroupsInZone(shortNameFilter, zone, paging, sortBy);
|
||||
// service.searchRootGroups(displayNamePattern, paging, sortBy);
|
||||
// service.searchRootGroupsInZone(displayNamePattern, paging, sortBy);
|
||||
}
|
||||
|
||||
public void testGroupUsers()
|
||||
{
|
||||
ScriptGroup groupA = service.getGroup(GROUP_A);
|
||||
|
||||
// Check on a group with no users
|
||||
assertEquals(0, groupA.getUserCount());
|
||||
ScriptUser[] users = groupA.getAllUsers();
|
||||
assertEquals(0, users.length);
|
||||
|
||||
// Add some users to the group
|
||||
authorityService.addAuthority(GROUP_A_FULL, USER_A);
|
||||
authorityService.addAuthority(GROUP_A_FULL, USER_B);
|
||||
|
||||
// Now look for the users on that group
|
||||
groupA = service.getGroup(GROUP_A);
|
||||
assertEquals(2, groupA.getUserCount());
|
||||
|
||||
users = groupA.getAllUsers();
|
||||
assertEquals(2, users.length);
|
||||
// TODO check
|
||||
}
|
||||
|
||||
public void testUsers()
|
||||
|
@@ -31,6 +31,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.security.AuthorityService;
|
||||
import org.alfresco.service.cmr.security.AuthorityType;
|
||||
import org.alfresco.util.ModelUtil;
|
||||
@@ -45,6 +46,7 @@ import org.alfresco.util.ScriptPagingDetails;
|
||||
public class ScriptGroup implements Authority, Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 6073732221341647273L;
|
||||
private transient ServiceRegistry serviceRegistry;
|
||||
private transient AuthorityService authorityService;
|
||||
private ScriptAuthorityType authorityType = ScriptAuthorityType.GROUP;
|
||||
private String shortName;
|
||||
@@ -53,14 +55,36 @@ public class ScriptGroup implements Authority, Serializable
|
||||
private Set<String> childAuthorityNames;
|
||||
private Boolean isAdmin;
|
||||
|
||||
/**
|
||||
* New script group
|
||||
* @param fullName
|
||||
* @param serviceRegistry
|
||||
*/
|
||||
public ScriptGroup(String fullName, ServiceRegistry serviceRegistry)
|
||||
{
|
||||
this(fullName, serviceRegistry, serviceRegistry.getAuthorityService());
|
||||
}
|
||||
|
||||
/**
|
||||
* New script group
|
||||
* @param fullName
|
||||
* @param authorityService
|
||||
* @deprecated Use {@link #ScriptGroup(String, ServiceRegistry)} instead
|
||||
*/
|
||||
public ScriptGroup(String fullName, AuthorityService authorityService)
|
||||
{
|
||||
this(fullName, null, authorityService);
|
||||
}
|
||||
|
||||
/**
|
||||
* New script group
|
||||
* @param fullName
|
||||
* @param authorityService
|
||||
*/
|
||||
private ScriptGroup(String fullName, ServiceRegistry serviceRegistry, AuthorityService authorityService)
|
||||
{
|
||||
this.authorityService = authorityService;
|
||||
this.serviceRegistry = serviceRegistry;
|
||||
this.fullName = fullName;
|
||||
shortName = authorityService.getShortName(fullName);
|
||||
displayName = authorityService.getAuthorityDisplayName(fullName);
|
||||
@@ -131,7 +155,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
Set<ScriptUser> users = new LinkedHashSet<ScriptUser>();
|
||||
for (String authority : children)
|
||||
{
|
||||
ScriptUser user = new ScriptUser(authority, authorityService);
|
||||
ScriptUser user = new ScriptUser(authority, null, serviceRegistry);
|
||||
users.add(user);
|
||||
}
|
||||
return users.toArray(new ScriptUser[users.size()]);
|
||||
@@ -147,7 +171,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
Set<ScriptGroup> groups = new LinkedHashSet<ScriptGroup>();
|
||||
for (String authority : children)
|
||||
{
|
||||
ScriptGroup group = new ScriptGroup(authority, authorityService);
|
||||
ScriptGroup group = new ScriptGroup(authority, serviceRegistry, authorityService);
|
||||
groups.add(group);
|
||||
}
|
||||
return groups.toArray(new ScriptGroup[groups.size()]);
|
||||
@@ -202,7 +226,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
Set<ScriptUser> users = new LinkedHashSet<ScriptUser>();
|
||||
for (String authority : children)
|
||||
{
|
||||
ScriptUser user = new ScriptUser(authority, authorityService);
|
||||
ScriptUser user = new ScriptUser(authority, null, serviceRegistry);
|
||||
users.add(user);
|
||||
}
|
||||
childUsers = users.toArray(new ScriptUser[users.size()]);
|
||||
@@ -332,7 +356,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
LinkedHashSet<ScriptGroup> groups = new LinkedHashSet<ScriptGroup>();
|
||||
for (String authority : sortedParents)
|
||||
{
|
||||
ScriptGroup group = new ScriptGroup(authority, authorityService);
|
||||
ScriptGroup group = new ScriptGroup(authority, serviceRegistry, authorityService);
|
||||
groups.add(group);
|
||||
|
||||
}
|
||||
@@ -370,7 +394,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
public ScriptGroup[] getAllParentGroups(ScriptPagingDetails paging, String sortBy)
|
||||
{
|
||||
Set<String> parents = authorityService.getContainingAuthorities(AuthorityType.GROUP, fullName, false);
|
||||
return makeScriptGroups(parents, paging, sortBy, authorityService);
|
||||
return makeScriptGroups(parents, paging, sortBy, serviceRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -422,7 +446,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
{
|
||||
String authorityName = authorityService.createAuthority(AuthorityType.GROUP, newShortName, newDisplayName, authorityService.getDefaultZones());
|
||||
authorityService.addAuthority(fullName, authorityName);
|
||||
ScriptGroup childGroup = new ScriptGroup(authorityName, authorityService);
|
||||
ScriptGroup childGroup = new ScriptGroup(authorityName, serviceRegistry, authorityService);
|
||||
clearCaches();
|
||||
return childGroup;
|
||||
}
|
||||
@@ -482,12 +506,12 @@ public class ScriptGroup implements Authority, Serializable
|
||||
}
|
||||
|
||||
public static ScriptGroup[] makeScriptGroups(Collection<String> authorities,
|
||||
ScriptPagingDetails paging, AuthorityService authorityService)
|
||||
ScriptPagingDetails paging, ServiceRegistry serviceRegistry)
|
||||
{
|
||||
return makeScriptGroups(authorities, paging, null, authorityService);
|
||||
return makeScriptGroups(authorities, paging, null, serviceRegistry);
|
||||
}
|
||||
public static ScriptGroup[] makeScriptGroups(Collection<String> authorities,
|
||||
ScriptPagingDetails paging, final String sortBy, AuthorityService authorityService)
|
||||
ScriptPagingDetails paging, final String sortBy, ServiceRegistry serviceRegistry)
|
||||
{
|
||||
|
||||
final ArrayList<String> authList = new ArrayList<String>(authorities);
|
||||
@@ -499,7 +523,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
{
|
||||
for(String authority : authorities)
|
||||
{
|
||||
scriptGroupCache.put(authority, new ScriptGroup(authority, authorityService));
|
||||
scriptGroupCache.put(authority, new ScriptGroup(authority, serviceRegistry));
|
||||
}
|
||||
final AuthorityComparator c2 = new AuthorityComparator(sortBy);
|
||||
Collections.sort(authList, new Comparator<String>() {
|
||||
@@ -538,7 +562,7 @@ public class ScriptGroup implements Authority, Serializable
|
||||
}
|
||||
else
|
||||
{
|
||||
group = new ScriptGroup(authority, authorityService);
|
||||
group = new ScriptGroup(authority, serviceRegistry);
|
||||
}
|
||||
groups[i] = group;
|
||||
}
|
||||
|
Reference in New Issue
Block a user