KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jdon > container > builder > DefaultContainerBuilder


1 /**
2  * Copyright 2003-2006 the original author or authors.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6
7        http://www.apache.org/licenses/LICENSE-2.0
8
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */

15
16 package com.jdon.container.builder;
17
18 import java.util.Iterator JavaDoc;
19 import java.util.Map JavaDoc;
20
21 import org.aopalliance.intercept.MethodInterceptor;
22
23 import com.jdon.aop.interceptor.InterceptorsChain;
24 import com.jdon.bussinessproxy.TargetMetaDef;
25 import com.jdon.bussinessproxy.config.TargetMetaDefLoader;
26 import com.jdon.bussinessproxy.meta.POJOTargetMetaDef;
27 import com.jdon.container.ContainerWrapper;
28 import com.jdon.container.config.ComponentMetaDef;
29 import com.jdon.container.config.ContainerComponents;
30 import com.jdon.container.config.app.AppConfigureCollection;
31 import com.jdon.container.config.aspect.AspectComponentsMetaDef;
32 import com.jdon.container.finder.ComponentKeys;
33 import com.jdon.util.Debug;
34
35
36 /**
37  * the container builder
38  * the methods invoke order is decided by containerDirector.
39  *
40  * @author <a HREF="mailto:banqiao@jdon.com">banq</a>
41  *
42  */

43 public class DefaultContainerBuilder implements ContainerBuilder {
44   public final static String JavaDoc module = DefaultContainerBuilder.class.getName();
45   
46   private ContainerComponents basicComponents;
47   private ContainerComponents aspectConfigComponents;
48   private ContainerRegistry containerRegistry;
49   private ContainerWrapper containerWrapper;
50   private boolean startup;
51
52   /**
53    * construtor
54    * @param containerWrapper
55    * @param basicComponents got from configure file
56    * @param interceptorsChain got from configure file
57    */

58   public DefaultContainerBuilder(ContainerWrapper containerWrapper,
59                                  ContainerComponents basicComponents,
60                                  ContainerComponents aspectConfigComponents) {
61     this.basicComponents = basicComponents;
62     this.aspectConfigComponents = aspectConfigComponents;
63     this.containerRegistry = new ContainerRegistry(containerWrapper);
64     this.containerWrapper = containerWrapper;
65
66   }
67
68   
69   public ContainerWrapper getContainerWrapper() {
70       return containerWrapper;
71   }
72
73   /**
74    * if there are xml configure then add new ones;
75    * if not, register it;
76    *
77    * @param configList Collection the configure collection for jdonframework.xml
78    */

79   public void addAppConfigureFile(String JavaDoc configureFileName) throws Exception JavaDoc {
80     try{
81         AppConfigureCollection existedAppConfigureFiles = (AppConfigureCollection) containerWrapper.lookup(AppConfigureCollection.NAME);
82         if (existedAppConfigureFiles == null){
83             containerRegistry.registerAppConfigureFiles();
84             existedAppConfigureFiles = (AppConfigureCollection) containerWrapper.lookup(AppConfigureCollection.NAME);
85         }
86         if (!existedAppConfigureFiles.getConfigList().contains(configureFileName)){
87             Debug.logInfo("[JdonFramework]found jdonframework configuration=" + configureFileName, module);
88             existedAppConfigureFiles.addConfigList(configureFileName);
89         }
90     }catch(Exception JavaDoc ex){
91         Debug.logError("[JdonFramework] addAppConfigureFiles error:" + ex, module);
92         throw new Exception JavaDoc(ex);
93     }
94   }
95
96   /**
97    * register all basic components in container.xml
98    */

99   public void registerComponents() throws Exception JavaDoc {
100     Debug.logVerbose("[JdonFramework] note: registe all basic components in container.xml size=" + basicComponents.size(), module);
101     try{
102         Iterator JavaDoc iter = basicComponents.iterator();
103         while(iter.hasNext()){
104             String JavaDoc name = (String JavaDoc)iter.next();
105             ComponentMetaDef componentMetaDef = basicComponents.getComponentMetaDef(name);
106             containerRegistry.registerComponentMetaDef(componentMetaDef);
107         }
108     }catch(Exception JavaDoc ex){
109         Debug.logError("[JdonFramework] register basiceComponents error:" + ex, module);
110         throw new Exception JavaDoc(ex);
111     }
112     
113   }
114   
115   /**
116    * register all apsect components in aspect.xml
117    */

118   public void registerAspectComponents() throws Exception JavaDoc{
119       Debug.logVerbose("[JdonFramework] note: registe aspect components ", module);
120       try{
121           InterceptorsChain existedInterceptorsChain = (InterceptorsChain)containerWrapper.lookup(ComponentKeys.INTERCEPTOR_CHAIN);
122           
123           Iterator JavaDoc iter = aspectConfigComponents.iterator();
124           Debug.logVerbose("[JdonFramework] 3 aspectConfigComponents size:" + aspectConfigComponents.size(), module);
125           while(iter.hasNext()){
126               String JavaDoc name = (String JavaDoc)iter.next();
127               AspectComponentsMetaDef componentMetaDef = (AspectComponentsMetaDef)aspectConfigComponents.getComponentMetaDef(name);
128               //registe into container
129
containerRegistry.registerAspectComponentMetaDef(componentMetaDef);
130               //got the interceptor instance;
131
MethodInterceptor interceptor = (MethodInterceptor)containerWrapper.lookup(name);
132               //add interceptor instance into InterceptorsChain object
133
existedInterceptorsChain.addInterceptor(componentMetaDef.getPointcut(), interceptor);
134           }
135       }catch(Exception JavaDoc ex){
136           Debug.logError("[JdonFramework] registerAspectComponents error:" + ex, module);
137           throw new Exception JavaDoc(ex);
138       }
139          
140   }
141
142   /**
143    * register user services in jdonframework.xml
144    */

145   public void registerUserService() throws Exception JavaDoc{
146       Debug.logVerbose("[JdonFramework] note: registe user pojoservice ", module);
147       try{
148           TargetMetaDefLoader targetMetaDefLoader = (TargetMetaDefLoader)containerWrapper.lookup(ComponentKeys.SERVICE_METALOADER_NAME);
149           if (targetMetaDefLoader == null) return;
150           Map JavaDoc metaDefs = targetMetaDefLoader.getMetaDefs();
151           Iterator JavaDoc iter = metaDefs.keySet().iterator();
152           while (iter.hasNext()) {
153               String JavaDoc name = (String JavaDoc) iter.next();
154               TargetMetaDef tgm = (TargetMetaDef)metaDefs.get(name);
155               if (!tgm.isEJB()){
156                   containerRegistry.registerPOJOTargetMetaDef((POJOTargetMetaDef)tgm);
157               }
158           }
159       }catch(Exception JavaDoc ex){
160           Debug.logError("[JdonFramework] registerUserService error:" + ex, module);
161           throw new Exception JavaDoc(ex);
162       }
163   }
164
165   public synchronized void setStartup(boolean startup) {
166     this.startup = startup;
167   }
168
169   public boolean isStartup() {
170     return startup;
171   }
172
173 }
174
Popular Tags