📄 defaultcontainerbuilder.java
字号:
/**
* Copyright 2003-2005 the original author or authors.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jdon.container.builder;
import java.util.Iterator;
import java.util.Map;
import org.aopalliance.intercept.MethodInterceptor;
import com.jdon.aop.interceptor.InterceptorsChain;
import com.jdon.bussinessproxy.TargetMetaDef;
import com.jdon.bussinessproxy.config.TargetMetaDefLoader;
import com.jdon.bussinessproxy.meta.POJOTargetMetaDef;
import com.jdon.container.ContainerWrapper;
import com.jdon.container.config.ComponentMetaDef;
import com.jdon.container.config.ContainerComponents;
import com.jdon.container.config.app.AppConfigureCollection;
import com.jdon.container.config.aspect.AspectComponentsMetaDef;
import com.jdon.container.finder.ComponentKeys;
import com.jdon.util.Debug;
/**
* the container builder
* the methods invoke order is decided by containerDirector.
*
* @author <a href="mailto:banqiao@jdon.com">banq</a>
*
*/
public class DefaultContainerBuilder implements ContainerBuilder {
public final static String module = DefaultContainerBuilder.class.getName();
private ContainerComponents basicComponents;
private ContainerComponents aspectConfigComponents;
private ContainerRegistry containerRegistry;
private ContainerWrapper containerWrapper;
private boolean startup;
/**
* construtor
* @param containerWrapper
* @param basicComponents got from configure file
* @param interceptorsChain got from configure file
*/
public DefaultContainerBuilder(ContainerWrapper containerWrapper,
ContainerComponents basicComponents,
ContainerComponents aspectConfigComponents) {
this.basicComponents = basicComponents;
this.aspectConfigComponents = aspectConfigComponents;
this.containerRegistry = new ContainerRegistry(containerWrapper);
this.containerWrapper = containerWrapper;
}
public ContainerWrapper getContainerWrapper() {
return containerWrapper;
}
/**
* if there are xml configure then add new ones;
* if not, register it;
*
* @param configList Collection the configure collection for jdonframework.xml
*/
public void addAppConfigureFiles(AppConfigureCollection appConfigureFiles) throws Exception {
Debug.logVerbose(" note: found the jdonframework.xml count: " + appConfigureFiles.getConfigList().size(), module);
try{
AppConfigureCollection existedAppConfigureFiles = (AppConfigureCollection) containerWrapper.lookup(AppConfigureCollection.NAME);
if (existedAppConfigureFiles == null){
containerRegistry.registerAppConfigureFiles();
existedAppConfigureFiles = (AppConfigureCollection) containerWrapper.lookup(AppConfigureCollection.NAME);
}
existedAppConfigureFiles.getConfigList().addAll(appConfigureFiles.getConfigList());
}catch(Exception ex){
Debug.logError(" addAppConfigureFiles error:" + ex, module);
throw new Exception(ex);
}
}
/**
* register all basic components in container.xml
*/
public void registerComponents() throws Exception {
Debug.logVerbose(" note: registe all basic components in container.xml size=" + basicComponents.size(), module);
try{
Iterator iter = basicComponents.iterator();
while(iter.hasNext()){
String name = (String)iter.next();
ComponentMetaDef componentMetaDef = basicComponents.getComponentMetaDef(name);
containerRegistry.registerComponentMetaDef(componentMetaDef);
}
}catch(Exception ex){
Debug.logError(" register basiceComponents error:" + ex, module);
throw new Exception(ex);
}
}
/**
* register all apsect components in aspect.xml
*/
public void registerAspectComponents() throws Exception{
Debug.logVerbose(" note: registe aspect components ", module);
try{
InterceptorsChain existedInterceptorsChain = (InterceptorsChain)containerWrapper.lookup(ComponentKeys.INTERCEPTOR_CHAIN);
Iterator iter = aspectConfigComponents.iterator();
Debug.logVerbose(" 3 aspectConfigComponents size:" + aspectConfigComponents.size(), module);
while(iter.hasNext()){
String name = (String)iter.next();
AspectComponentsMetaDef componentMetaDef = (AspectComponentsMetaDef)aspectConfigComponents.getComponentMetaDef(name);
//registe into container
containerRegistry.registerAspectComponentMetaDef(componentMetaDef);
//got the interceptor instance;
MethodInterceptor interceptor = (MethodInterceptor)containerWrapper.lookup(name);
//add interceptor instance into InterceptorsChain object
existedInterceptorsChain.addInterceptor(componentMetaDef.getPointcut(), interceptor);
}
}catch(Exception ex){
Debug.logError(" registerAspectComponents error:" + ex, module);
throw new Exception(ex);
}
}
/**
* register user services in jdonframework.xml
*/
public void registerUserService() throws Exception{
Debug.logVerbose(" note: registe user pojoservice ", module);
try{
TargetMetaDefLoader targetMetaDefLoader = (TargetMetaDefLoader)containerWrapper.lookup(ComponentKeys.SERVICE_METALOADER_NAME);
Map metaDefs = targetMetaDefLoader.getMetaDefs();
Iterator iter = metaDefs.keySet().iterator();
while (iter.hasNext()) {
String name = (String) iter.next();
TargetMetaDef tgm = (TargetMetaDef)metaDefs.get(name);
if (!tgm.isEJB()){
containerRegistry.registerPOJOTargetMetaDef((POJOTargetMetaDef)tgm);
}
}
}catch(Exception ex){
Debug.logError(" registerUserService error:" + ex, module);
throw new Exception(ex);
}
}
public synchronized void setStartup(boolean startup) {
this.startup = startup;
}
public boolean isStartup() {
return startup;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -