KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jdon > model > factory > ModelHandlerClassFactoryXmlImp


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.model.factory;
17
18 import java.beans.BeanInfo JavaDoc;
19 import java.beans.Introspector JavaDoc;
20 import java.beans.PropertyDescriptor JavaDoc;
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 JavaDoc module = ModelHandlerClassFactoryXmlImp.class.getName();
31
32     private ModelHandler modelHandler;
33
34     public ModelHandlerClassFactoryXmlImp(ModelHandler modelHandler) {
35         this.modelHandler = modelHandler;
36     }
37
38     public Class JavaDoc createModel(ModelMapping modelMapping) {
39         Debug
40                 .logVerbose(
41                         "[JdonFramework] create Model :", module);
42         String JavaDoc formName = modelMapping.getFormName();
43         String JavaDoc className = modelMapping.getClassName();
44         Class JavaDoc 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 JavaDoc(" classLoader problem: "
52                         + " please check your config xml or check your pakcage");
53             }
54         } catch (Exception JavaDoc ex) {
55             className = className.replaceAll(" ", "[ ]");
56             Debug.logError("[JdonFramework] className=" + className + " error:"
57                     + ex, module);
58         }
59         return newClass;
60     }
61
62     public Class JavaDoc createModelKeyClassType(ModelMapping modelMapping,
63             Class JavaDoc modelClass) {
64         String JavaDoc keyName = modelMapping.getKeyName();
65         Debug.logVerbose("[JdonFramework] createModelKeyClassType the keyName is " + keyName, module);
66         return getKeyClassType(modelClass, keyName);
67     }
68
69     private Class JavaDoc getKeyClassType(Class JavaDoc beanClasses, String JavaDoc propertyName) {
70         try {
71             BeanInfo JavaDoc beanInfo = Introspector.getBeanInfo(beanClasses);
72             PropertyDescriptor JavaDoc[] pds = beanInfo.getPropertyDescriptors();
73             for (int i = 0; i < pds.length; i++) {
74                 PropertyDescriptor JavaDoc 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 JavaDoc e) {
82             Debug.logError(e);
83         }
84         Debug.logVerbose("[JdonFramework]not found the key Class Type, propertyName="+ propertyName, module);
85         return Object JavaDoc.class;
86     }
87
88     public Class JavaDoc createHandler(ModelMapping modelMapping) {
89         Debug.logVerbose(
90                 "[JdonFramework] create Handler :", module);
91         String JavaDoc formName = modelMapping.getFormName();
92         String JavaDoc handlerClassName = modelMapping.getHandler();
93         HandlerMetaDef handlerMetaDef = modelMapping.getHandlerMetaDef();
94         Class JavaDoc newClass = null;
95         try {
96             if (handlerMetaDef != null) { // there is handler/service configure
97
if (handlerClassName == null) {// there is no handler ClassName configure
98
//使用框架中�置的modelHandler,如XmlModelHandler
99
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 JavaDoc(" classLoader problem: "
112                         + " please check your config xml or check your pakcage");
113             }
114         } catch (Exception JavaDoc ex) {
115             Debug.logError("[JdonFramework] error:" + ex, module);
116         }
117         return newClass;
118     }
119
120 }
121
Popular Tags