KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > configuration > spring > CeltixXmlBeanFactory


1 package org.objectweb.celtix.bus.configuration.spring;
2
3 import java.beans.PropertyEditor JavaDoc;
4 import java.math.BigInteger JavaDoc;
5 import java.util.logging.Level JavaDoc;
6 import java.util.logging.Logger JavaDoc;
7
8 import javax.xml.namespace.QName JavaDoc;
9
10 import org.objectweb.celtix.common.i18n.Message;
11 import org.objectweb.celtix.common.logging.LogUtils;
12 import org.objectweb.celtix.configuration.Configuration;
13 import org.objectweb.celtix.configuration.ConfigurationException;
14 import org.objectweb.celtix.configuration.ConfigurationItemMetadata;
15 import org.objectweb.celtix.jaxb.JAXBUtils;
16 import org.objectweb.celtix.tools.generators.spring.BeanGenerator;
17 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
18 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
19 import org.springframework.core.io.Resource;
20
21 @SuppressWarnings JavaDoc("deprecation")
22 public class CeltixXmlBeanFactory extends DefaultListableBeanFactory {
23
24     private static final Logger JavaDoc LOG = LogUtils.getL7dLogger(CeltixXmlBeanFactory.class);
25     private static final Class JavaDoc DEFAULT_PARSER_CLASS = CeltixXmlBeanDefinitionParser.class;
26     
27     private final PropertyEditor JavaDoc editor;
28
29     CeltixXmlBeanFactory(Resource res) {
30         XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
31         reader.setParserClass(DEFAULT_PARSER_CLASS);
32         reader.setEntityResolver(new CeltixBeansDtdResolver());
33         reader.setValidating(false);
34         reader.setNamespaceAware(true);
35         reader.loadBeanDefinitions(res);
36               
37         editor = new JaxbPropertyEditor();
38         registerCustomEditor(String JavaDoc.class, editor);
39         
40         PropertyEditor JavaDoc pe = null;
41         
42         pe = new JaxbBigIntegerEditor();
43         registerCustomEditor(BigInteger JavaDoc.class, pe);
44         
45         pe = new JaxbBooleanEditor();
46         registerCustomEditor(boolean.class, pe);
47         registerCustomEditor(Boolean JavaDoc.class, pe);
48
49         pe = new JaxbNumberEditor(Byte JavaDoc.class);
50         registerCustomEditor(byte.class, pe);
51         registerCustomEditor(Byte JavaDoc.class, pe);
52
53         pe = new JaxbNumberEditor(Short JavaDoc.class);
54         registerCustomEditor(short.class, pe);
55         registerCustomEditor(Short JavaDoc.class, pe);
56
57         pe = new JaxbNumberEditor(Integer JavaDoc.class);
58         registerCustomEditor(int.class, pe);
59         registerCustomEditor(Integer JavaDoc.class, pe);
60
61         pe = new JaxbNumberEditor(Long JavaDoc.class);
62         registerCustomEditor(long.class, pe);
63         registerCustomEditor(Long JavaDoc.class, pe);
64
65         pe = new JaxbNumberEditor(Float JavaDoc.class);
66         registerCustomEditor(float.class, pe);
67         registerCustomEditor(Float JavaDoc.class, pe);
68
69         pe = new JaxbNumberEditor(Double JavaDoc.class);
70         registerCustomEditor(double.class, pe);
71         registerCustomEditor(Double JavaDoc.class, pe);
72
73     }
74
75     void registerCustomEditors(Configuration c) {
76
77         for (ConfigurationItemMetadata definition : c.getModel().getDefinitions()) {
78             QName JavaDoc qn = definition.getType();
79             String JavaDoc className = BeanGenerator.getClassName(qn, true);
80
81             Class JavaDoc cl = JAXBUtils.holderClass(className);
82             if (null != cl) {
83                 continue;
84             }
85
86             try {
87                 cl = Class.forName(className);
88             } catch (ClassCastException JavaDoc ex) {
89                 throw new ConfigurationException(new Message("COULD_NOT_REGISTER_PROPERTY_EDITOR_EXC", LOG,
90                                                              className), ex);
91             } catch (ClassNotFoundException JavaDoc ex) {
92                 throw new ConfigurationException(new Message("COULD_NOT_REGISTER_PROPERTY_EDITOR_EXC", LOG,
93                                                              className), ex);
94             }
95
96             if (cl == String JavaDoc.class) {
97                 continue;
98             }
99
100             if (null == getCustomEditors().get(cl)) {
101                 registerCustomEditor(cl, editor);
102                 if (LOG.isLoggable(Level.FINE)) {
103                     LOG.fine("Registered JaxbPropertyEditor for class: " + className);
104                 }
105             }
106         }
107     }
108
109 }
110
Popular Tags