[jboss-cvs] JBossAS SVN: r57839 - branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 26 03:58:04 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-10-26 03:58:01 -0400 (Thu, 26 Oct 2006)
New Revision: 57839

Modified:
   branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorFactory.java
Log:
Prevent NPE on missing @SecurityDomain

Modified: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorFactory.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorFactory.java	2006-10-25 23:44:13 UTC (rev 57838)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorFactory.java	2006-10-26 07:58:01 UTC (rev 57839)
@@ -21,25 +21,26 @@
   */
 package org.jboss.ejb3.security;
 
+import java.util.HashSet;
+
+import javax.annotation.security.RunAs;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-import javax.annotation.security.RunAs;
 
+import org.jboss.annotation.security.RunAsPrincipal;
 import org.jboss.aop.Advisor;
 import org.jboss.aop.InstanceAdvisor;
 import org.jboss.aop.advice.AspectFactory;
-import org.jboss.aop.joinpoint.Joinpoint; 
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Joinpoint;
+import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.metamodel.AssemblyDescriptor;
+import org.jboss.ejb3.tx.NullInterceptor;
 import org.jboss.logging.Logger;
 import org.jboss.security.AuthenticationManager;
 import org.jboss.security.RealmMapping;
-import org.jboss.security.RunAsIdentity; 
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.metamodel.AssemblyDescriptor;
-import org.jboss.ejb3.tx.NullInterceptor;
-import org.jboss.annotation.security.RunAsPrincipal;
+import org.jboss.security.RunAsIdentity;
 
-import java.util.HashSet;
-
 public class RunAsSecurityInterceptorFactory implements AspectFactory
 {
    private static final Logger log = Logger.getLogger(RunAsSecurityInterceptorFactory.class);
@@ -78,27 +79,37 @@
 
    public Object createPerClass(Advisor advisor)
    {
-      Object domain = null;
       EJBContainer container = (EJBContainer)advisor;
       RunAsIdentity runAsIdentity = getRunAsIdentity(container);
       /*if (runAsIdentity == null)
       {
          return new NullInterceptor();
       }*/
+
+      Object domain = null;
       try
       {
          InitialContext ctx = container.getInitialContext();
-         org.jboss.annotation.security.SecurityDomain securityAnnotation = (org.jboss.annotation.security.SecurityDomain) advisor.resolveAnnotation(org.jboss.annotation.security.SecurityDomain.class);
-         domain = SecurityDomainManager.getSecurityManager(securityAnnotation.value(), ctx);
+         org.jboss.annotation.security.SecurityDomain anSecurityDomain = (org.jboss.annotation.security.SecurityDomain) advisor.resolveAnnotation(org.jboss.annotation.security.SecurityDomain.class);
+         if (anSecurityDomain != null)
+         {
+            String domainName = anSecurityDomain.value();
+            domain = SecurityDomainManager.getSecurityManager(domainName, ctx);
+         }
       }
       catch (NamingException e)
       {
          throw new RuntimeException(e);
       }
-      AuthenticationManager manager = (AuthenticationManager) domain;
-      RealmMapping mapping = (RealmMapping) domain;
-      if (manager == null) throw new RuntimeException("Unable to find Security Domain");
-      return new RunAsSecurityInterceptor(manager, mapping, getRunAsIdentity(container));
+      
+      Interceptor interceptor = new NullInterceptor();
+      if (domain != null)
+      {
+         AuthenticationManager manager = (AuthenticationManager) domain;
+         RealmMapping mapping = (RealmMapping) domain;
+         interceptor = new RunAsSecurityInterceptor(manager, mapping, getRunAsIdentity(container));
+      }
+      return interceptor;
    }
 
    public Object createPerInstance(Advisor advisor, InstanceAdvisor instanceAdvisor)




More information about the jboss-cvs-commits mailing list