1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.castor.mapping;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20 import org.exolab.castor.mapping.MappingException;
21 import org.exolab.castor.mapping.MappingLoader;
22
23
24
25
26
27
28
29 public abstract class AbstractMappingLoaderFactory implements
30 MappingLoaderFactory {
31
32
33
34
35
36 public static final Log LOG = LogFactory
37 .getLog(AbstractMappingLoaderFactory.class);
38
39
40
41
42 private static final String SOURCE_TYPE = "CastorXmlMapping";
43
44
45
46
47
48 public final String getSourceType() {
49 return SOURCE_TYPE;
50 }
51
52
53
54
55
56
57 public abstract String getClassname();
58
59
60
61
62
63 public final MappingLoader getMappingLoader() throws MappingException {
64 MappingLoader mappingLoader = null;
65 try {
66 ClassLoader loader = getClass().getClassLoader();
67 Class cls = loader.loadClass(getClassname());
68 Class[] types = new Class[] {ClassLoader.class};
69 Object[] args = new Object[] {loader};
70 mappingLoader = (MappingLoader) cls.getConstructor(types).newInstance(args);
71 } catch (Exception ex) {
72 LOG.error(
73 "Problem instantiating mapping loader factory implementation: "
74 + getClassname(), ex);
75 }
76 return mappingLoader;
77 }
78
79 }