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;
35
36 import info.magnolia.cms.core.ItemType;
37
38 import java.beans.PropertyDescriptor;
39 import java.util.Collections;
40 import java.util.HashMap;
41 import java.util.Map;
42
43 import org.apache.commons.beanutils.PropertyUtils;
44
45
46
47
48
49
50
51 public class TypeDescriptor {
52
53 private Class<?> type;
54
55 private ItemType itemType;
56
57 private Content2BeanTransformer transformer;
58
59 private boolean isMap;
60
61 private boolean isCollection;
62
63 private Map<String, PropertyTypeDescriptor> descriptors;
64
65 public ItemType getItemType() {
66 return this.itemType;
67 }
68
69 public void setItemType(ItemType itemType) {
70 this.itemType = itemType;
71 }
72
73 public Class<?> getType() {
74 return this.type;
75 }
76
77 public void setType(Class<?> type) {
78 this.type = type;
79 }
80
81
82 public boolean isCollection() {
83 return this.isCollection;
84 }
85
86
87 public void setCollection(boolean isCollection) {
88 this.isCollection = isCollection;
89 }
90
91
92 public boolean isMap() {
93 return this.isMap;
94 }
95
96
97 public void setMap(boolean isMap) {
98 this.isMap = isMap;
99 }
100
101 public PropertyTypeDescriptor getPropertyTypeDescriptor(String properyName) {
102 return getPropertyDescriptors().get(properyName);
103 }
104
105
106
107
108 public boolean needsDefaultMapping() {
109 return (isMap() || isCollection()) && (getType().isInterface() || getType().isArray());
110 }
111
112
113
114
115 public Map<String, PropertyTypeDescriptor> getPropertyDescriptors() {
116 if(this.descriptors == null){
117
118 TypeMapping mapping = TypeMapping.Factory.getDefaultMapping();
119
120
121
122 final Map<String, PropertyTypeDescriptor> tmpDescriptors = new HashMap<String, PropertyTypeDescriptor>();
123 PropertyDescriptor[] dscrs = PropertyUtils.getPropertyDescriptors(this.getType());
124 for (int i = 0; i < dscrs.length; i++) {
125 PropertyDescriptor descriptor = dscrs[i];
126 tmpDescriptors.put(descriptor.getName(), mapping.getPropertyTypeDescriptor(this.getType(), descriptor.getName()));
127 }
128
129 this.descriptors = Collections.unmodifiableMap(tmpDescriptors);
130 }
131 return this.descriptors;
132 }
133
134
135
136
137 public Content2BeanTransformer getTransformer() {
138 return transformer;
139 }
140
141 public void setTransformer(Content2BeanTransformer transformer) {
142 this.transformer = transformer;
143 }
144
145 }