1 15 16 package com.jdon.model.factory; 17 18 import java.beans.BeanInfo ; 19 import java.beans.Introspector ; 20 import java.beans.PropertyDescriptor ; 21 22 import com.jdon.util.Debug; 23 24 import com.jdon.model.config.ModelMapping; 25 import com.jdon.model.handler.HandlerMetaDef; 26 import com.jdon.model.ModelHandler; 27 28 public class ModelHandlerClassFactoryXmlImp implements ModelHandlerClassFactory { 29 30 private final static String module = ModelHandlerClassFactoryXmlImp.class.getName(); 31 32 private ModelHandler modelHandler; 33 34 public ModelHandlerClassFactoryXmlImp(ModelHandler modelHandler) { 35 this.modelHandler = modelHandler; 36 } 37 38 public Class createModel(ModelMapping modelMapping) { 39 Debug 40 .logVerbose( 41 "[JdonFramework] create Model :", module); 42 String formName = modelMapping.getFormName(); 43 String className = modelMapping.getClassName(); 44 Class newClass = null; 45 try { 46 Debug.logVerbose("[JdonFramework]create model class, key=" 47 + formName + " value=" + className, module); 48 newClass = Thread.currentThread().getContextClassLoader() 49 .loadClass(className); 50 if (newClass == null) { 51 throw new Exception (" classLoader problem: " 52 + " please check your config xml or check your pakcage"); 53 } 54 } catch (Exception ex) { 55 className = className.replaceAll(" ", "[ ]"); 56 Debug.logError("[JdonFramework] className=" + className + " error:" 57 + ex, module); 58 } 59 return newClass; 60 } 61 62 public Class createModelKeyClassType(ModelMapping modelMapping, 63 Class modelClass) { 64 String keyName = modelMapping.getKeyName(); 65 Debug.logVerbose("[JdonFramework] createModelKeyClassType the keyName is " + keyName, module); 66 return getKeyClassType(modelClass, keyName); 67 } 68 69 private Class getKeyClassType(Class beanClasses, String propertyName) { 70 try { 71 BeanInfo beanInfo = Introspector.getBeanInfo(beanClasses); 72 PropertyDescriptor [] pds = beanInfo.getPropertyDescriptors(); 73 for (int i = 0; i < pds.length; i++) { 74 PropertyDescriptor pd = pds[i]; 75 if (pd.getName().equalsIgnoreCase(propertyName)){ 76 Debug.logVerbose("[JdonFramework]found the key Class Type==" 77 + pd.getPropertyType().getName(), module); 78 return pd.getPropertyType(); 79 } 80 } 81 } catch (Exception e) { 82 Debug.logError(e); 83 } 84 Debug.logVerbose("[JdonFramework]not found the key Class Type, propertyName="+ propertyName, module); 85 return Object .class; 86 } 87 88 public Class createHandler(ModelMapping modelMapping) { 89 Debug.logVerbose( 90 "[JdonFramework] create Handler :", module); 91 String formName = modelMapping.getFormName(); 92 String handlerClassName = modelMapping.getHandler(); 93 HandlerMetaDef handlerMetaDef = modelMapping.getHandlerMetaDef(); 94 Class newClass = null; 95 try { 96 if (handlerMetaDef != null) { if (handlerClassName == null) { handlerClassName = modelHandler.getClass().getName(); 100 modelMapping.setHandler(handlerClassName); 101 newClass = modelHandler.getClass(); 102 } 103 } 104 if (handlerClassName != null) { 105 newClass = Thread.currentThread().getContextClassLoader() 106 .loadClass(handlerClassName); 107 } 108 Debug.logVerbose("[JdonFramework]create Handler class, key=" 109 + formName + " value=" + handlerClassName, module); 110 if (newClass == null) { 111 throw new Exception (" classLoader problem: " 112 + " please check your config xml or check your pakcage"); 113 } 114 } catch (Exception ex) { 115 Debug.logError("[JdonFramework] error:" + ex, module); 116 } 117 return newClass; 118 } 119 120 } 121 | Popular Tags |