01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19:
20: package de.schlund.pfixcore.beans;
21:
22: import java.net.URL;
23: import java.util.HashMap;
24: import java.util.Map;
25:
26: import de.schlund.pfixcore.beans.metadata.Beans;
27: import de.schlund.pfixcore.beans.metadata.DOMInit;
28: import de.schlund.pfixcore.beans.metadata.Locator;
29:
30: /**
31: * @author mleidig@schlund.de
32: */
33: public class BeanDescriptorFactory {
34:
35: Map<Class<?>, BeanDescriptor> descriptors;
36: Beans metadata;
37:
38: public BeanDescriptorFactory() {
39: descriptors = new HashMap<Class<?>, BeanDescriptor>();
40: }
41:
42: public BeanDescriptorFactory(Beans metadata) {
43: this ();
44: this .metadata = metadata;
45: }
46:
47: public BeanDescriptorFactory(Locator locator) throws InitException {
48: this ();
49: DOMInit domInit = new DOMInit();
50: for (URL url : locator.getMetadataResources()) {
51: domInit.update(url);
52: }
53: metadata = domInit.getBeans();
54: }
55:
56: public synchronized <T> BeanDescriptor getBeanDescriptor(
57: Class<T> clazz) {
58: BeanDescriptor desc = descriptors.get(clazz);
59: if (desc == null) {
60: desc = new BeanDescriptor(clazz, metadata);
61: descriptors.put(clazz, desc);
62: }
63: return desc;
64: }
65:
66: }
|