From af6dc02c9ebb8df85794a51ead91d491124f8e33 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Tue, 20 Dec 2005 14:45:50 +0000 Subject: [PATCH] . Performance improvements to authenticating users per screen refresh (5% improvement for basic screens) . Minor performance improvements to permissions in hot-spot areas (as identified from profiling) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2050 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../RepositoryAuthenticationDao.java | 36 ++++++++++++++----- .../impl/SimpleNodePermissionEntry.java | 2 +- .../impl/SimplePermissionEntry.java | 2 +- .../impl/SimplePermissionReference.java | 2 +- .../hibernate/HibernatePermissionsDAO.java | 13 +++---- 5 files changed, 38 insertions(+), 17 deletions(-) diff --git a/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java b/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java index 87a01b173d..ba5ca14671 100644 --- a/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java +++ b/source/java/org/alfresco/repo/security/authentication/RepositoryAuthenticationDao.java @@ -120,8 +120,8 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao GrantedAuthority[] gas = new GrantedAuthority[1]; gas[0] = new GrantedAuthorityImpl("ROLE_AUTHENTICATED"); - UserDetails ud = new User(userName, password, getEnabled(userName), !getAccountHasExpired(userName), - !getCredentialsHaveExpired(userName), !getAccountlocked(userName), gas); + UserDetails ud = new User(userName, password, getEnabled(userRef), !getAccountHasExpired(userRef), + !getCredentialsHaveExpired(userRef), !getAccountlocked(userRef), gas); return ud; } @@ -305,7 +305,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao public boolean getAccountHasExpired(String userName) { - NodeRef userNode = getUserOrNull(userName); + return getAccountHasExpired(getUserOrNull(userName)); + } + + private boolean getAccountHasExpired(NodeRef userNode) + { if (userNode == null) { return false; @@ -332,7 +336,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao public boolean getAccountlocked(String userName) { - NodeRef userNode = getUserOrNull(userName); + return getAccountlocked(getUserOrNull(userName)); + } + + private boolean getAccountlocked(NodeRef userNode) + { if (userNode == null) { return false; @@ -347,10 +355,14 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao return DefaultTypeConverter.INSTANCE.booleanValue(ser); } } - + public boolean getCredentialsExpire(String userName) { - NodeRef userNode = getUserOrNull(userName); + return getCredentialsExpired(getUserOrNull(userName)); + } + + private boolean getCredentialsExpired(NodeRef userNode) + { if (userNode == null) { return false; @@ -387,7 +399,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao public boolean getCredentialsHaveExpired(String userName) { - NodeRef userNode = getUserOrNull(userName); + return getCredentialsHaveExpired(getUserOrNull(userName)); + } + + private boolean getCredentialsHaveExpired(NodeRef userNode) + { if (userNode == null) { return false; @@ -414,7 +430,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao public boolean getEnabled(String userName) { - NodeRef userNode = getUserOrNull(userName); + return getEnabled(getUserOrNull(userName)); + } + + private boolean getEnabled(NodeRef userNode) + { if (userNode == null) { return false; diff --git a/source/java/org/alfresco/repo/security/permissions/impl/SimpleNodePermissionEntry.java b/source/java/org/alfresco/repo/security/permissions/impl/SimpleNodePermissionEntry.java index b06b2b8274..bde7f99659 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/SimpleNodePermissionEntry.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/SimpleNodePermissionEntry.java @@ -27,7 +27,7 @@ import org.alfresco.service.cmr.repository.NodeRef; * * @author andyh */ -public class SimpleNodePermissionEntry extends AbstractNodePermissionEntry implements Serializable +public final class SimpleNodePermissionEntry extends AbstractNodePermissionEntry implements Serializable { /** * Comment for serialVersionUID diff --git a/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionEntry.java b/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionEntry.java index 6534d7d210..5ab7ee8501 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionEntry.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionEntry.java @@ -25,7 +25,7 @@ import org.alfresco.service.cmr.security.AccessStatus; * * @author andyh */ -public class SimplePermissionEntry extends AbstractPermissionEntry +public final class SimplePermissionEntry extends AbstractPermissionEntry { /* diff --git a/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionReference.java b/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionReference.java index 4ee0855159..f9dd3296e4 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionReference.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/SimplePermissionReference.java @@ -23,7 +23,7 @@ import org.alfresco.service.namespace.QName; * * @author andyh */ -public class SimplePermissionReference extends AbstractPermissionReference +public final class SimplePermissionReference extends AbstractPermissionReference { /* * The type diff --git a/source/java/org/alfresco/repo/security/permissions/impl/hibernate/HibernatePermissionsDAO.java b/source/java/org/alfresco/repo/security/permissions/impl/hibernate/HibernatePermissionsDAO.java index de955ea7ae..1b6a2176b0 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/hibernate/HibernatePermissionsDAO.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/hibernate/HibernatePermissionsDAO.java @@ -347,7 +347,6 @@ public class HibernatePermissionsDAO extends HibernateDaoSupport implements Perm @SuppressWarnings("unchecked") public void deleteAllPermissionsForAuthority(final String authority) { - HibernateCallback callback = new HibernateCallback() { public Object doInHibernate(Session session) @@ -365,8 +364,7 @@ public class HibernatePermissionsDAO extends HibernateDaoSupport implements Perm } - // Utility methods to create simple detached objects for the outside - // // world + // Utility methods to create simple detached objects for the outside world // We do not pass out the hibernate objects private static SimpleNodePermissionEntry createSimpleNodePermissionEntry( @@ -388,10 +386,13 @@ public class HibernatePermissionsDAO extends HibernateDaoSupport implements Perm { return null; } - HashSet spes = new HashSet(); - for (org.alfresco.repo.security.permissions.impl.hibernate.PermissionEntry pe : nes) + HashSet spes = new HashSet(nes.size(), 1.0f); + if (nes.size() != 0) { - spes.add(createSimplePermissionEntry(pe)); + for (org.alfresco.repo.security.permissions.impl.hibernate.PermissionEntry pe : nes) + { + spes.add(createSimplePermissionEntry(pe)); + } } return spes; }