modelhandlerclassfactoryxmlimp.java
来自「用jbuilder写的源程序」· Java 代码 · 共 121 行
JAVA
121 行
/**
* Copyright 2003-2006 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.model.factory;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import com.jdon.util.Debug;
import com.jdon.model.config.ModelMapping;
import com.jdon.model.handler.HandlerMetaDef;
import com.jdon.model.ModelHandler;
public class ModelHandlerClassFactoryXmlImp implements ModelHandlerClassFactory {
private final static String module = ModelHandlerClassFactoryXmlImp.class.getName();
private ModelHandler modelHandler;
public ModelHandlerClassFactoryXmlImp(ModelHandler modelHandler) {
this.modelHandler = modelHandler;
}
public Class createModel(ModelMapping modelMapping) {
Debug
.logVerbose(
"[JdonFramework] create Model :", module);
String formName = modelMapping.getFormName();
String className = modelMapping.getClassName();
Class newClass = null;
try {
Debug.logVerbose("[JdonFramework]create model class, key="
+ formName + " value=" + className, module);
newClass = Thread.currentThread().getContextClassLoader()
.loadClass(className);
if (newClass == null) {
throw new Exception(" classLoader problem: "
+ " please check your config xml or check your pakcage");
}
} catch (Exception ex) {
className = className.replaceAll(" ", "[ ]");
Debug.logError("[JdonFramework] className=" + className + " error:"
+ ex, module);
}
return newClass;
}
public Class createModelKeyClassType(ModelMapping modelMapping,
Class modelClass) {
String keyName = modelMapping.getKeyName();
Debug.logVerbose("[JdonFramework] createModelKeyClassType the keyName is " + keyName, module);
return getKeyClassType(modelClass, keyName);
}
private Class getKeyClassType(Class beanClasses, String propertyName) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(beanClasses);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (int i = 0; i < pds.length; i++) {
PropertyDescriptor pd = pds[i];
if (pd.getName().equalsIgnoreCase(propertyName)){
Debug.logVerbose("[JdonFramework]found the key Class Type=="
+ pd.getPropertyType().getName(), module);
return pd.getPropertyType();
}
}
} catch (Exception e) {
Debug.logError(e);
}
Debug.logVerbose("[JdonFramework]not found the key Class Type, propertyName="+ propertyName, module);
return Object.class;
}
public Class createHandler(ModelMapping modelMapping) {
Debug.logVerbose(
"[JdonFramework] create Handler :", module);
String formName = modelMapping.getFormName();
String handlerClassName = modelMapping.getHandler();
HandlerMetaDef handlerMetaDef = modelMapping.getHandlerMetaDef();
Class newClass = null;
try {
if (handlerMetaDef != null) { // there is handler/service configure
if (handlerClassName == null) {// there is no handler ClassName configure
//使用框架中配置的modelHandler,如XmlModelHandler
handlerClassName = modelHandler.getClass().getName();
modelMapping.setHandler(handlerClassName);
newClass = modelHandler.getClass();
}
}
if (handlerClassName != null) {
newClass = Thread.currentThread().getContextClassLoader()
.loadClass(handlerClassName);
}
Debug.logVerbose("[JdonFramework]create Handler class, key="
+ formName + " value=" + handlerClassName, module);
if (newClass == null) {
throw new Exception(" classLoader problem: "
+ " please check your config xml or check your pakcage");
}
} catch (Exception ex) {
Debug.logError("[JdonFramework] error:" + ex, module);
}
return newClass;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?