1 22 package org.jboss.ejb3.security; 23 24 import javax.naming.InitialContext ; 25 import javax.naming.NamingException ; 26 import org.jboss.annotation.security.SecurityDomain; 27 import org.jboss.aop.Advisor; 28 import org.jboss.aop.InstanceAdvisor; 29 import org.jboss.aop.advice.AspectFactory; 30 import org.jboss.aop.joinpoint.Joinpoint; 31 import org.jboss.security.AuthenticationManager; 32 import org.jboss.ejb3.Container; 33 34 public class AuthenticationInterceptorFactory implements AspectFactory 35 { 36 public Object createPerVM() 37 { 38 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 39 } 40 41 public Object createPerClass(Advisor advisor) 42 { 43 Object domain = null; 44 Container container = (Container)advisor; 45 try 46 { 47 InitialContext ctx = container.getInitialContext(); 48 SecurityDomain securityAnnotation = (SecurityDomain) advisor.resolveAnnotation(SecurityDomain.class); 49 if (securityAnnotation != null) 50 { 51 domain = ctx.lookup("java:/jaas/" + securityAnnotation.value()); 52 } 53 } 54 catch (NamingException e) 55 { 56 throw new RuntimeException (e); 57 } 58 AuthenticationManager manager = (AuthenticationManager) domain; 59 return new Ejb3AuthenticationInterceptor(manager, container); 60 } 61 62 public Object createPerInstance(Advisor advisor, InstanceAdvisor instanceAdvisor) 63 { 64 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 65 } 66 67 public Object createPerJoinpoint(Advisor advisor, Joinpoint jp) 68 { 69 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 70 } 71 72 public Object createPerJoinpoint(Advisor advisor, InstanceAdvisor instanceAdvisor, Joinpoint jp) 73 { 74 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 75 } 76 77 public String getName() 78 { 79 return getClass().getName(); 80 } 81 } 82 83 | Popular Tags |