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:
Nick Burch
2011-06-16 11:51:22 +00:00
parent 5aacf7e84e
commit 2445f01771
3 changed files with 99 additions and 30 deletions

View File

@@ -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);
}
/**

View File

@@ -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()

View File

@@ -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;
}