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"); fCapabilityRegistry = (AuthorityCapabilityRegistry)fContext.getBean("authorityCapabilityRegistry");
} }
// Set up sample users groups and roles. // Set up sample users groups and roles.
fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray()); try
fPersonService.getPerson("Buffy"); {
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies"); fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray());
fAuthorityService.addAuthority("GROUP_Scoobies", "Buffy"); fPersonService.getPerson("Buffy");
fAuthenticationService.createAuthentication("Willow", "Willow".toCharArray()); fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies");
fPersonService.getPerson("Willow"); fAuthorityService.addAuthority("GROUP_Scoobies", "Buffy");
fAuthorityService.addAuthority("GROUP_Scoobies", "Willow"); fAuthenticationService.createAuthentication("Willow", "Willow".toCharArray());
fAuthenticationService.createAuthentication("Xander", "Xander".toCharArray()); fPersonService.getPerson("Willow");
fPersonService.getPerson("Xander"); fAuthorityService.addAuthority("GROUP_Scoobies", "Willow");
fAuthorityService.addAuthority("GROUP_Scoobies", "Xander"); fAuthenticationService.createAuthentication("Xander", "Xander".toCharArray());
fAuthenticationService.createAuthentication("Tara", "Tara".toCharArray()); fPersonService.getPerson("Xander");
fPersonService.getPerson("Tara"); fAuthorityService.addAuthority("GROUP_Scoobies", "Xander");
fAuthenticationService.createAuthentication("Spike", "Spike".toCharArray()); fAuthenticationService.createAuthentication("Tara", "Tara".toCharArray());
fPersonService.getPerson("Spike"); fPersonService.getPerson("Tara");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "vampires"); fAuthenticationService.createAuthentication("Spike", "Spike".toCharArray());
fAuthorityService.addAuthority("GROUP_vampires", "Spike"); fPersonService.getPerson("Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless"); fAuthorityService.createAuthority(AuthorityType.GROUP, null, "vampires");
fAuthorityService.addAuthority("GROUP_soulless", "Spike"); fAuthorityService.addAuthority("GROUP_vampires", "Spike");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless");
fAuthorityService.addAuthority("GROUP_soulless", "Spike");
}
catch (Exception e)
{
tearDown();
setUp();
}
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -195,15 +195,26 @@ public class AuthorityCapabilityRegistryImpl implements
{ {
continue; continue;
} }
auth = normalizeAuthority(auth);
Set<String> children = fAuthorityService.getContainedAuthorities(null, auth, true); Set<String> children = fAuthorityService.getContainedAuthorities(null, auth, true);
auth = normalizeAuthority(auth);
Set<String> found = fAuthorityToChild.get(auth); Set<String> found = fAuthorityToChild.get(auth);
if (found == null) if (found == null)
{ {
found = new HashSet<String>(); found = new HashSet<String>();
fAuthorityToChild.put(auth, found); 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) for (String child : children)
{ {
child = normalizeAuthority(child); child = normalizeAuthority(child);
@@ -211,7 +222,18 @@ public class AuthorityCapabilityRegistryImpl implements
{ {
continue; 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); entry.getChildren().add(childEntry);
found.add(child); found.add(child);
Set<String> parents = fChildToAuthority.get(child); Set<String> parents = fChildToAuthority.get(child);