[jboss-cvs] JBossAS SVN: r68455 - projects/security/security-jboss-sx/trunk/jbosssx/src/main/org/jboss/security/plugins.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Dec 20 10:33:53 EST 2007
Author: anil.saldhana at jboss.com
Date: 2007-12-20 10:33:53 -0500 (Thu, 20 Dec 2007)
New Revision: 68455
Modified:
projects/security/security-jboss-sx/trunk/jbosssx/src/main/org/jboss/security/plugins/JBossAuthorizationManager.java
Log:
SECURITY-100: threadsafe JBossAuthzMgr
Modified: projects/security/security-jboss-sx/trunk/jbosssx/src/main/org/jboss/security/plugins/JBossAuthorizationManager.java
===================================================================
--- projects/security/security-jboss-sx/trunk/jbosssx/src/main/org/jboss/security/plugins/JBossAuthorizationManager.java 2007-12-20 15:32:05 UTC (rev 68454)
+++ projects/security/security-jboss-sx/trunk/jbosssx/src/main/org/jboss/security/plugins/JBossAuthorizationManager.java 2007-12-20 15:33:53 UTC (rev 68455)
@@ -32,6 +32,8 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
@@ -85,6 +87,9 @@
private AuthorizationContext authorizationContext = null;
+ //Lock deals with synchronization of authorizationContext usage
+ private Lock lock = new ReentrantLock();
+
public JBossAuthorizationManager(String securityDomainName)
{
this.securityDomain = securityDomainName;
@@ -111,10 +116,18 @@
{
log.error("Error obtaining AuthenticatedSubject:",e);
}
- if(this.authorizationContext == null)
- this.authorizationContext = new JBossAuthorizationContext(this.securityDomain,subject,
- this.callbackHandler );
- return this.authorizationContext.authorize(resource);
+ lock.lock();
+ try
+ {
+ if(this.authorizationContext == null)
+ this.authorizationContext = new JBossAuthorizationContext(this.securityDomain,subject,
+ this.callbackHandler );
+ return this.authorizationContext.authorize(resource);
+ }
+ finally
+ {
+ lock.unlock();
+ }
}
/** Does the current Subject have a role(a Principal) that equates to one
@@ -288,7 +301,15 @@
{
if(ac == null)
throw new IllegalArgumentException("AuthorizationContext is null");
- this.authorizationContext = ac;
+ lock.lock();
+ try
+ {
+ this.authorizationContext = ac;
+ }
+ finally
+ {
+ lock.unlock();
+ }
}
public String getSecurityDomain()
More information about the jboss-cvs-commits
mailing list