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,6 +73,8 @@ public class ACLTest extends TestCase
fCapabilityRegistry = (AuthorityCapabilityRegistry)fContext.getBean("authorityCapabilityRegistry");
}
// Set up sample users groups and roles.
try
{
fAuthenticationService.createAuthentication("Buffy", "Buffy".toCharArray());
fPersonService.getPerson("Buffy");
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "Scoobies");
@@ -92,6 +94,12 @@ public class ACLTest extends TestCase
fAuthorityService.createAuthority(AuthorityType.GROUP, null, "soulless");
fAuthorityService.addAuthority("GROUP_soulless", "Spike");
}
catch (Exception e)
{
tearDown();
setUp();
}
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()

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);