1 22 package org.jboss.ejb3; 23 24 import java.net.URL ; 25 import org.jboss.ejb3.metamodel.EjbJarDD; 26 import org.jboss.ejb3.metamodel.EjbJarDDObjectFactory; 27 import org.jboss.ejb3.metamodel.JBossDDObjectFactory; 28 import org.jboss.ejb3.interceptor.InterceptorInfoRepository; 29 30 import javassist.bytecode.ClassFile; 31 32 public abstract class Ejb3HandlerFactory 33 { 34 public abstract Ejb3Handler createHandler(ClassFile cf) throws Exception ; 35 36 private static class DDFactory extends Ejb3HandlerFactory 37 { 38 private EjbJarDD dd; 39 private Ejb3Deployment di; 40 41 public DDFactory(Ejb3Deployment di) throws Exception 42 { 43 this.di = di; 44 this.dd = EjbJarDDObjectFactory.parse(di.getDeploymentUnit().getEjbJarXml()); 45 this.dd = JBossDDObjectFactory.parse(di.getDeploymentUnit().getJbossXml(), dd); 46 47 InterceptorInfoRepository repository = this.di.getDeploymentUnit().getInterceptorInfoRepository(); 48 repository.initialise(dd); 49 } 50 51 52 public Ejb3Handler createHandler(ClassFile cf) throws Exception 53 { 54 return new Ejb3DescriptorHandler(di, cf, dd); 55 } 56 } 57 58 private static class AnnotationFactory extends Ejb3HandlerFactory 59 { 60 private Ejb3Deployment di; 61 62 public AnnotationFactory(Ejb3Deployment di) throws Exception 63 { 64 this.di = di; 65 } 66 67 68 public Ejb3Handler createHandler(ClassFile cf) throws Exception 69 { 70 return new Ejb3AnnotationHandler(di, cf); 71 } 72 } 73 74 public static Ejb3HandlerFactory getInstance(Ejb3Deployment di) throws Exception 75 { 76 URL ddResource = di.getDeploymentUnit().getEjbJarXml(); 77 78 URL jbossDdResource = di.getDeploymentUnit().getJbossXml(); 79 80 if (ddResource == null && jbossDdResource == null) 81 return new AnnotationFactory(di); 82 else 83 return new DDFactory(di); 84 } 85 } 86 | Popular Tags |