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
55 public class PropertiesBasedTypeMapping extends TypeMappingImpl {
56
57 private static Logger log = LoggerFactory.getLogger(PropertiesBasedTypeMapping.class);
58
59 public PropertiesBasedTypeMapping() {
60 Properties properties = SystemProperty.getProperties();
61 for (Iterator<Object> iterator = properties.keySet().iterator(); iterator.hasNext();) {
62 String key = (String) iterator.next();
63 if(key.endsWith(".transformer")){
64 String className = StringUtils.removeEnd(key, ".transformer");
65 String transformerClassName = properties.getProperty(key);
66 try {
67 final ClassFactory cl = Classes.getClassFactory();
68 final Class<?> beanClass = cl.forName(className);
69 final Class<Content2BeanTransformer> transformerClass = cl.forName(transformerClassName);
70 final Content2BeanTransformer transformer = cl.newInstance(transformerClass);
71
72 getTypeDescriptor(beanClass).setTransformer(transformer);
73 log.debug("Registered custom transformer [{}] for [{}]", className, transformerClassName);
74 } catch (Exception e) {
75 log.error("Can't register custom transformer for [" + className + "]", e);
76 }
77 }
78 }
79
80 }
81 }