KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > ejb3 > Ejb3HandlerFactory


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.ejb3;
23
24 import java.net.URL JavaDoc;
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 JavaDoc;
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 JavaDoc
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 JavaDoc
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 JavaDoc
63       {
64          this.di = di;
65       }
66
67
68       public Ejb3Handler createHandler(ClassFile cf) throws Exception JavaDoc
69       {
70          return new Ejb3AnnotationHandler(di, cf);
71       }
72    }
73
74    public static Ejb3HandlerFactory getInstance(Ejb3Deployment di) throws Exception JavaDoc
75    {
76       URL JavaDoc ddResource = di.getDeploymentUnit().getEjbJarXml();
77       
78       URL JavaDoc 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