From c5aa838917410d1b146852fa3b69dc04cab1a996 Mon Sep 17 00:00:00 2001 From: Britt Park Date: Wed, 19 Sep 2007 15:43:44 +0000 Subject: [PATCH] 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 --- .../repo/simple/permission/ACLTest.java | 44 +++++++++++-------- .../AuthorityCapabilityRegistryImpl.java | 28 ++++++++++-- 2 files changed, 51 insertions(+), 21 deletions(-) diff --git a/source/java/org/alfresco/repo/simple/permission/ACLTest.java b/source/java/org/alfresco/repo/simple/permission/ACLTest.java index 944820bd69..4f0bfd2066 100644 --- a/source/java/org/alfresco/repo/simple/permission/ACLTest.java +++ b/source/java/org/alfresco/repo/simple/permission/ACLTest.java @@ -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) diff --git a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java b/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java index 6b7b1d8ebf..f0839628af 100644 --- a/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java +++ b/source/java/org/alfresco/repo/simple/permission/AuthorityCapabilityRegistryImpl.java @@ -195,15 +195,26 @@ public class AuthorityCapabilityRegistryImpl implements { continue; } - auth = normalizeAuthority(auth); Set children = fAuthorityService.getContainedAuthorities(null, auth, true); + auth = normalizeAuthority(auth); Set found = fAuthorityToChild.get(auth); if (found == null) { found = new HashSet(); 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 parents = fChildToAuthority.get(child);