Fixed authority related startup failures.

Authority caching was making a case mangling mistake.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6830 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2007-09-19 15:43:44 +00:00
parent a5cd8802de
commit c5aa838917
2 changed files with 51 additions and 21 deletions

View File

@@ -73,24 +73,32 @@ public class ACLTest extends TestCase
fCapabilityRegistry = (AuthorityCapabilityRegistry)fContext.getBean("authorityCapabilityRegistry");
}
// Set up sample users groups and roles.
fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray());
fPersonService.getPerson("Buffy");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies");
fAuthorityService.addAuthority("GROUP_Scoobies", "Buffy");
fAuthenticationService.createAuthentication("Willow", "Willow".toCharArray());
fPersonService.getPerson("Willow");
fAuthorityService.addAuthority("GROUP_Scoobies", "Willow");
fAuthenticationService.createAuthentication("Xander", "Xander".toCharArray());
fPersonService.getPerson("Xander");
fAuthorityService.addAuthority("GROUP_Scoobies", "Xander");
fAuthenticationService.createAuthentication("Tara", "Tara".toCharArray());
fPersonService.getPerson("Tara");
fAuthenticationService.createAuthentication("Spike", "Spike".toCharArray());
fPersonService.getPerson("Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "vampires");
fAuthorityService.addAuthority("GROUP_vampires", "Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless");
fAuthorityService.addAuthority("GROUP_soulless", "Spike");
try
{
fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray());
fPersonService.getPerson("Buffy");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies");
fAuthorityService.addAuthority("GROUP_Scoobies", "Buffy");
fAuthenticationService.createAuthentication("Willow", "Willow".toCharArray());
fPersonService.getPerson("Willow");
fAuthorityService.addAuthority("GROUP_Scoobies", "Willow");
fAuthenticationService.createAuthentication("Xander", "Xander".toCharArray());
fPersonService.getPerson("Xander");
fAuthorityService.addAuthority("GROUP_Scoobies", "Xander");
fAuthenticationService.createAuthentication("Tara", "Tara".toCharArray());
fPersonService.getPerson("Tara");
fAuthenticationService.createAuthentication("Spike", "Spike".toCharArray());
fPersonService.getPerson("Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "vampires");
fAuthorityService.addAuthority("GROUP_vampires", "Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless");
fAuthorityService.addAuthority("GROUP_soulless", "Spike");
}
catch (Exception e)
{
tearDown();
setUp();
}
}
/* (non-Javadoc)

View File

@@ -195,15 +195,26 @@ public class AuthorityCapabilityRegistryImpl implements
{
continue;
}
auth = normalizeAuthority(auth);
Set<String> children = fAuthorityService.getContainedAuthorities(null, auth, true);
auth = normalizeAuthority(auth);
Set<String> found = fAuthorityToChild.get(auth);
if (found == null)
{
found = new HashSet<String>();
fAuthorityToChild.put(auth, found);
}
AuthorityEntry entry = fAuthorityEntryDAO.get(fAuthorityToID.get(auth));
AuthorityEntry entry = null;
if (!fAuthorityToID.containsKey(auth))
{
entry = new AuthorityEntryImpl(auth);
fAuthorityEntryDAO.save(entry);
fAuthorityToID.put(auth, entry.getId());
fIDToAuthority.put(entry.getId(), auth);
}
else
{
entry = fAuthorityEntryDAO.get(fAuthorityToID.get(auth));
}
for (String child : children)
{
child = normalizeAuthority(child);
@@ -211,7 +222,18 @@ public class AuthorityCapabilityRegistryImpl implements
{
continue;
}
AuthorityEntry childEntry = fAuthorityEntryDAO.get(fAuthorityToID.get(child));
AuthorityEntry childEntry = null;
if (!fAuthorityToID.containsKey(child))
{
childEntry = new AuthorityEntryImpl(child);
fAuthorityEntryDAO.save(childEntry);
fAuthorityToID.put(child, childEntry.getId());
fIDToAuthority.put(childEntry.getId(), child);
}
else
{
childEntry = fAuthorityEntryDAO.get(fAuthorityToID.get(child));
}
entry.getChildren().add(childEntry);
found.add(child);
Set<String> parents = fChildToAuthority.get(child);