mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Improvements to hashing and hash set/map sizing
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5079 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -53,7 +53,7 @@ public abstract class AbstractPermissionReference implements PermissionReference
|
||||
{
|
||||
if (hashcode == 0)
|
||||
{
|
||||
hashcode = getQName().hashCode() * 37 + getName().hashCode();
|
||||
hashcode = (getName().hashCode() * 1000003) + getQName().hashCode();
|
||||
}
|
||||
return hashcode;
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ public final class PermissionGroup extends AbstractPermissionReference implement
|
||||
|
||||
private QName container;
|
||||
|
||||
private Set<PermissionReference> includedPermissionGroups = new HashSet<PermissionReference>();
|
||||
private Set<PermissionReference> includedPermissionGroups = new HashSet<PermissionReference>(4, 1.0f);
|
||||
|
||||
private boolean requiresType;
|
||||
|
||||
|
@@ -87,20 +87,23 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
|
||||
private String model;
|
||||
|
||||
|
||||
// Aprrox 6 - default size OK
|
||||
private Map<QName, PermissionSet> permissionSets = new HashMap<QName, PermissionSet>();
|
||||
|
||||
// Global permissions - default size OK
|
||||
private Set<GlobalPermissionEntry> globalPermissions = new HashSet<GlobalPermissionEntry>();
|
||||
|
||||
private AccessStatus defaultPermission;
|
||||
|
||||
// Cache granting permissions
|
||||
private HashMap<PermissionReference, Set<PermissionReference>> grantingPermissions = new HashMap<PermissionReference, Set<PermissionReference>>();
|
||||
private HashMap<PermissionReference, Set<PermissionReference>> grantingPermissions = new HashMap<PermissionReference, Set<PermissionReference>>(128, 1.0f);
|
||||
|
||||
// Cache grantees
|
||||
private HashMap<PermissionReference, Set<PermissionReference>> granteePermissions = new HashMap<PermissionReference, Set<PermissionReference>>();
|
||||
private HashMap<PermissionReference, Set<PermissionReference>> granteePermissions = new HashMap<PermissionReference, Set<PermissionReference>>(128, 1.0f);
|
||||
|
||||
// Cache the mapping of extended groups to the base
|
||||
private HashMap<PermissionGroup, PermissionGroup> groupsToBaseGroup = new HashMap<PermissionGroup, PermissionGroup>();
|
||||
private HashMap<PermissionGroup, PermissionGroup> groupsToBaseGroup = new HashMap<PermissionGroup, PermissionGroup>(128, 1.0f);
|
||||
|
||||
private HashMap<String, PermissionReference> uniqueMap;
|
||||
|
||||
@@ -291,7 +294,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
LinkedHashSet<PermissionReference> permissions = cache.get(type);
|
||||
if (permissions == null)
|
||||
{
|
||||
permissions = new LinkedHashSet<PermissionReference>();
|
||||
permissions = new LinkedHashSet<PermissionReference>(128, 1.0f);
|
||||
ClassDefinition cd = dictionaryService.getClass(type);
|
||||
if (cd != null)
|
||||
{
|
||||
@@ -467,7 +470,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
private Set<PermissionReference> getGrantingPermissionsImpl(PermissionReference permissionReference)
|
||||
{
|
||||
// Query the model
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
|
||||
permissions.add(permissionReference);
|
||||
for (PermissionSet ps : permissionSets.values())
|
||||
{
|
||||
@@ -539,7 +542,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
private Set<PermissionReference> getGranteePermissionsImpl(PermissionReference permissionReference)
|
||||
{
|
||||
// Query the model
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
|
||||
permissions.add(permissionReference);
|
||||
for (PermissionSet ps : permissionSets.values())
|
||||
{
|
||||
@@ -604,7 +607,7 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
|
||||
private Set<PermissionReference> getAllPermissions()
|
||||
{
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>();
|
||||
HashSet<PermissionReference> permissions = new HashSet<PermissionReference>(128, 1.0f);
|
||||
for (PermissionSet ps : permissionSets.values())
|
||||
{
|
||||
for (PermissionGroup pg : ps.getPermissionGroups())
|
||||
@@ -914,11 +917,11 @@ public class PermissionModel implements ModelDAO, InitializingBean
|
||||
|
||||
private void buildUniquePermissionMap()
|
||||
{
|
||||
Set<String> excluded = new HashSet<String>();
|
||||
uniqueMap = new HashMap<String, PermissionReference>();
|
||||
permissionReferenceMap = new HashMap<String, PermissionReference>();
|
||||
permissionGroupMap = new HashMap<PermissionReference, PermissionGroup>();
|
||||
permissionMap = new HashMap<PermissionReference, Permission>();
|
||||
Set<String> excluded = new HashSet<String>(64, 1.0f);
|
||||
uniqueMap = new HashMap<String, PermissionReference>(128, 1.0f);
|
||||
permissionReferenceMap = new HashMap<String, PermissionReference>(128, 1.0f);
|
||||
permissionGroupMap = new HashMap<PermissionReference, PermissionGroup>(64, 1.0f);
|
||||
permissionMap = new HashMap<PermissionReference, Permission>(32, 1.0f);
|
||||
for (PermissionSet ps : permissionSets.values())
|
||||
{
|
||||
for (PermissionGroup pg : ps.getPermissionGroups())
|
||||
|
@@ -45,9 +45,9 @@ public final class PermissionSet implements XMLModelInitialisable
|
||||
|
||||
private boolean exposeAll;
|
||||
|
||||
private Set<PermissionGroup> permissionGroups = new LinkedHashSet<PermissionGroup>();
|
||||
private Set<PermissionGroup> permissionGroups = new LinkedHashSet<PermissionGroup>(32, 1.0f);
|
||||
|
||||
private Set<Permission> permissions = new HashSet<Permission>();
|
||||
private Set<Permission> permissions = new HashSet<Permission>(32, 1.0f);
|
||||
|
||||
public PermissionSet()
|
||||
{
|
||||
|
Reference in New Issue
Block a user