1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.content2bean.impl;
35
36 import info.magnolia.cms.core.SystemProperty;
37 import info.magnolia.content2bean.Content2BeanTransformer;
38
39 import java.util.Iterator;
40 import java.util.Properties;
41
42 import info.magnolia.objectfactory.ClassFactory;
43 import info.magnolia.objectfactory.Classes;
44 import org.apache.commons.lang.StringUtils;
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48
49
50
51
52
53
54 public class PropertiesBasedTypeMapping extends TypeMappingImpl {
55
56 private static Logger log = LoggerFactory.getLogger(PropertiesBasedTypeMapping.class);
57
58 public PropertiesBasedTypeMapping() {
59 Properties properties = SystemProperty.getProperties();
60 for (Iterator<Object> iterator = properties.keySet().iterator(); iterator.hasNext();) {
61 String key = (String) iterator.next();
62 if(key.endsWith(".transformer")){
63 String className = StringUtils.removeEnd(key, ".transformer");
64 String transformerClassName = properties.getProperty(key);
65 try {
66 final ClassFactory cl = Classes.getClassFactory();
67 final Class<?> beanClass = cl.forName(className);
68 final Class<Content2BeanTransformer> transformerClass = cl.forName(transformerClassName);
69 final Content2BeanTransformer transformer = cl.newInstance(transformerClass);
70
71 getTypeDescriptor(beanClass).setTransformer(transformer);
72 log.debug("Registered custom transformer [{}] for [{}]", className, transformerClassName);
73 } catch (Exception e) {
74 log.error("Can't register custom transformer for [" + className + "]", e);
75 }
76 }
77 }
78
79 }
80 }