[jboss-cvs] JBossAS SVN: r67682 - trunk/ejb3/src/main/org/jboss/ejb3.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Dec 1 02:25:39 EST 2007


Author: anil.saldhana at jboss.com
Date: 2007-12-01 02:25:39 -0500 (Sat, 01 Dec 2007)
New Revision: 67682

Modified:
   trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java
Log:
EJBTHREE-1140: introduce a bean principal for the call

Modified: trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java	2007-12-01 01:35:13 UTC (rev 67681)
+++ trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java	2007-12-01 07:25:39 UTC (rev 67682)
@@ -67,6 +67,9 @@
    protected transient T container;
    protected transient RealmMapping rm;
    protected B beanContext;
+   
+   /** Principal for the bean associated with the call **/
+   private Principal beanPrincipal;
 
    protected EJBContextImpl(B beanContext)
    {
@@ -145,38 +148,42 @@
    
    public Principal getCallerPrincipal()
    {
-      Principal principal = null;
-      
-      RealmMapping rm = container.getSecurityManager(RealmMapping.class); 
-      
-      SecurityContext sc = SecurityContextAssociation.getSecurityContext();
-      EJBAuthorizationHelper helper = new EJBAuthorizationHelper(sc);
-      
-      principal = helper.getCallerPrincipal(rm);
-      
-      if(principal == null)
+      if(beanPrincipal == null)
       {
-         //try the incoming principal
-         principal = sc.getUtil().getUserPrincipal();
-         if(rm != null)
-            principal = rm.getPrincipal(principal);
-      } 
-      
-      if(principal == null)
-      {
-         EJBContainer ec = (EJBContainer) container;
-         SecurityDomain domain =(SecurityDomain)ec.resolveAnnotation(SecurityDomain.class);
-         String unauth = domain.unauthenticatedPrincipal();
-         if(unauth != null && unauth.length() > 0)
-         if(domain.unauthenticatedPrincipal() != null)
-           principal = new SimplePrincipal(unauth);
-      }
-      
-      // This method never returns null.
-      if (principal == null)
-         throw new java.lang.IllegalStateException("No valid security context for the caller identity");
-
-      return principal;
+         Principal callerPrincipal = null;
+         
+         RealmMapping rm = container.getSecurityManager(RealmMapping.class); 
+         
+         SecurityContext sc = SecurityContextAssociation.getSecurityContext();
+         EJBAuthorizationHelper helper = new EJBAuthorizationHelper(sc);
+         
+         callerPrincipal = helper.getCallerPrincipal(rm);
+         
+         if(callerPrincipal == null)
+         {
+            //try the incoming principal
+            callerPrincipal = sc.getUtil().getUserPrincipal();
+            if(rm != null)
+               callerPrincipal = rm.getPrincipal(callerPrincipal);
+         } 
+         
+         if(callerPrincipal == null)
+         {
+            EJBContainer ec = (EJBContainer) container;
+            SecurityDomain domain =(SecurityDomain)ec.resolveAnnotation(SecurityDomain.class);
+            String unauth = domain.unauthenticatedPrincipal();
+            if(unauth != null && unauth.length() > 0)
+            if(domain.unauthenticatedPrincipal() != null)
+              callerPrincipal = new SimplePrincipal(unauth);
+         }
+         
+         // This method never returns null.
+         if (callerPrincipal == null)
+            throw new java.lang.IllegalStateException("No valid security context for the caller identity");
+  
+         beanPrincipal = callerPrincipal;
+      }      
+      return beanPrincipal;
    }
 
    




More information about the jboss-cvs-commits mailing list