4f2fc5affe7306731dda3f8b714aea786d95c4b6
[cdmlib.git] / cdmlib-remote / src / main / resources / eu / etaxonomy / cdm / remote / json / jsonConfigurations.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:tx="http://www.springframework.org/schema/tx"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
8 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
9 ">
10
11 <bean id="genericApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">
12 <property name="includeToOneRelations" value="false" />
13 <property name="includeToManyRelations" value="false" />
14 <property name="exceptions">
15 <set>
16 <value>FeatureTree.root</value>
17 <value>FeatureNode.children</value>
18 <value>FeatureNode.feature</value>
19
20 <value>TreeNode.data</value>
21 <value>TreeNode.data</value>
22
23 <value>PolytomousKey.root</value>
24 <value>PolytomousKeyNode.children</value>
25 <value>PolytomousKeyNode.question</value>
26 <value>PolytomousKeyNode.statement</value>
27 <value>PolytomousKeyNode.modifyingText</value>
28
29 <value>Media.representations</value>
30 <value>MediaRepresentation.parts</value>
31
32 <!-- CardinalityPropertyFilter should allow defining exceptions for abstract super classes : -->
33 <!-- <value>eu.etaxonomy.cdm.model.description.DescriptionElementBase.feature</value> -->
34
35 <value>TextData.feature</value>
36 <value>CategoricalData.feature</value>
37 <value>CommonTaxonName.feature</value>
38 <value>Distribution.feature</value>
39 <value>IndividualsAssociation.feature</value>
40 <value>QuantitativeData.feature</value>
41 <value>TaxonInteraction.feature</value>
42 <value>TextData.feature</value>
43 <value>IdentifiableSource.citation</value>
44 </set>
45 </property>
46 </bean>
47
48 <!--
49 =================================================
50 default configuration for RESTful read(/write) service
51 =================================================
52 -->
53 <bean name="jsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
54 init-method="init">
55 <property name="jsonBeanProcessorMatcher">
56 <bean
57 class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
58 </property>
59 <property name="jsonBeanProcessors">
60 <map>
61 <entry key="org.hibernate.proxy.HibernateProxy">
62 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
63 </entry>
64 <entry key="eu.etaxonomy.cdm.model.common.TermBase">
65 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
66 <property name="excludes">
67 <set value-type="java.lang.String">
68 <value>partOf</value><!-- FIXME exclude partOf to avoid lazy loading exceptions -->
69 <value>kindOf</value><!-- FIXME exclude kindOf to avoid lazy loading exceptions -->
70 <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded -->
71 </set>
72 </property>
73 </bean>
74 </entry>
75 <entry key="eu.etaxonomy.cdm.model.description.TextData">
76 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TextDataBeanProcessor" />
77 </entry>
78 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
79 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />
80 </entry>
81 <entry key="eu.etaxonomy.cdm.model.reference.Reference">
82 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
83 </entry>
84 <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">
85 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor"/>
86 </entry>
87 <entry key="eu.etaxonomy.cdm.model.description.KeyStatement">
88 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.KeyStatementBeanProcessor" />
89 </entry>
90 </map>
91 </property>
92 <property name="jsonPropertyFilter">
93 <bean class="net.sf.json.filters.OrPropertyFilter">
94 <constructor-arg>
95 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
96 </constructor-arg>
97 <constructor-arg ref="genericApiCardinalityPropertyFilter">
98 </constructor-arg>
99 </bean>
100 </property>
101 <property name="jsonValueProcessors">
102 <map>
103 <entry key="org.hibernate.proxy.HibernateProxy">
104 <bean
105 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
106 </entry>
107 <entry key="java.util.UUID">
108 <bean
109 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
110 </entry>
111 <entry key="org.joda.time.DateTime">
112 <bean
113 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
114 </entry>
115 <entry key="java.util.Calendar">
116 <bean
117 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
118 </entry>
119 <entry key="org.joda.time.Partial">
120 <bean
121 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
122 </entry>
123 <entry key="java.lang.Class">
124 <bean
125 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
126 </entry>
127 <entry key="java.util.Map">
128 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
129 </entry>
130 <entry key="java.net.URI">
131 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
132 </entry>
133 </map>
134 </property>
135 <property name="ignoreDefaultExcludes" value="true" />
136 <property name="excludes">
137 <list value-type="java.lang.String">
138 <value>declaringClass</value><!-- DefaultExclude -->
139 <value>metaClass</value><!-- DefaultExclude -->
140 <value>id</value>
141 <value>cacheStrategy</value>
142 <value>createdBy</value>
143 <value>updatedBy</value>
144 </list>
145 </property>
146 </bean>
147
148 <!--
149 =================================================
150 configuration for RESTful classification service
151 =================================================
152 -->
153 <bean name="jsonConfigClassification" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
154 init-method="init">
155 <property name="jsonBeanProcessorMatcher">
156 <bean
157 class="eu.etaxonomy.cdm.remote.json.processor.matcher.HibernateProxyBeanProcessorMatcher" />
158 </property>
159 <property name="jsonBeanProcessors">
160 <map>
161 <entry key="org.hibernate.proxy.HibernateProxy">
162 <bean
163 class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
164 </entry>
165 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
166 <bean
167 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDaoBeanProcessor" />
168 </entry>
169 </map>
170 </property>
171 <property name="jsonPropertyFilter">
172 <bean class="net.sf.json.filters.OrPropertyFilter">
173 <constructor-arg>
174 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
175 </constructor-arg>
176 <constructor-arg ref="genericApiCardinalityPropertyFilter">
177 </constructor-arg>
178 </bean>
179 </property>
180 <property name="jsonValueProcessors">
181 <map>
182 <entry key="org.hibernate.proxy.HibernateProxy">
183 <bean
184 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
185 </entry>
186 <entry key="java.util.UUID">
187 <bean
188 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
189 </entry>
190 <entry key="org.joda.time.DateTime">
191 <bean
192 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
193 </entry>
194 <entry key="java.util.Calendar">
195 <bean
196 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
197 </entry>
198 <entry key="org.joda.time.Partial">
199 <bean
200 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
201 </entry>
202 <entry key="java.lang.Class">
203 <bean
204 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
205 </entry>
206 <entry key="java.util.Map">
207 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
208 </entry>
209 <entry key="java.net.URI">
210 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
211 </entry>
212 </map>
213 </property>
214 <property name="ignoreDefaultExcludes" value="true" />
215 <property name="excludes">
216 <list value-type="java.lang.String">
217 <value>declaringClass</value><!-- DefaultExclude -->
218 <value>metaClass</value><!-- DefaultExclude -->
219 <value>id</value>
220 <value>cacheStrategy</value>
221 <value>createdBy</value>
222 <value>updatedBy</value>
223 </list>
224 </property>
225 </bean>
226
227 <!--
228 =================================================
229 configuration for RESTful portal service
230 =================================================
231 -->
232
233 <bean name="jsonConfigPortal" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
234 init-method="init">
235 <property name="jsonBeanProcessorMatcher">
236 <bean
237 class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
238 </property>
239 <property name="jsonBeanProcessors">
240 <map>
241 <entry key="org.hibernate.proxy.HibernateProxy">
242 <bean
243 class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
244 </entry>
245 <entry key="eu.etaxonomy.cdm.model.taxon.Taxon">
246 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonBeanProcessor" />
247 </entry>
248 <entry key="eu.etaxonomy.cdm.model.name.TaxonNameBase">
249 <bean
250 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBaseBeanProcessor" />
251 </entry>
252 <entry key="eu.etaxonomy.cdm.model.name.NameRelationship">
253 <bean
254 class="eu.etaxonomy.cdm.remote.json.processor.bean.NameRelationshipBeanProcessor" />
255 </entry>
256 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonRelationship">
257 <bean
258 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonRelationshipBeanProcessor" />
259 </entry>
260 <entry key="eu.etaxonomy.cdm.model.common.TermBase">
261 <bean
262 class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
263 <property name="replaceRepresentations" value="true" />
264 <property name="excludes">
265 <set value-type="java.lang.String">
266 <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded -->
267 <value>partOf</value><!-- DefinedTermBase -->
268 <value>kindOf</value><!-- DefinedTermBase -->
269 <value>includes</value><!-- DefinedTermBase -->
270 <value>generalizationOf</value><!-- DefinedTermBase -->
271 <value>vocabulary</value><!-- DefinedTermBase -->
272 <!--
273 FIXME must exclude partOf, kindOf, includes, generalizationOf .. to
274 avoid class cast or lazy loading exceptions in TDWG Areas
275 -->
276 </set>
277 </property>
278 </bean>
279 </entry>
280 <entry key="eu.etaxonomy.cdm.model.description.TextData">
281 <bean
282 class="eu.etaxonomy.cdm.remote.json.processor.bean.TextDataBeanProcessor">
283 <property name="replaceMultilanguageText" value="true" />
284 </bean>
285 </entry>
286 <entry key="eu.etaxonomy.cdm.model.media.Media">
287 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.MediaBeanProcessor">
288 <property name="replaceTitle" value="true" />
289 <property name="replaceDescription" value="true" />
290 </bean>
291 </entry>
292 <entry key="eu.etaxonomy.cdm.model.reference.Reference">
293 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
294 </entry>
295 <entry key="eu.etaxonomy.cdm.model.description.TaxonNameDescription">
296 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameDescriptionBeanProcessor">
297 <property name="excludes">
298 <set value-type="java.lang.String">
299 <value>taxonName</value>
300 </set>
301 </property>
302 </bean>
303 </entry>
304 <entry key="eu.etaxonomy.cdm.api.facade.DerivedUnitFacade">
305 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DerivedUnitFacadeBeanProcessor"/>
306 </entry>
307 <entry key="eu.etaxonomy.cdm.model.location.Point">
308 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>
309 </entry>
310 </map>
311 </property>
312 <property name="jsonPropertyFilter">
313 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
314 </property>
315 <property name="jsonValueProcessors">
316 <map>
317 <entry key="org.hibernate.proxy.HibernateProxy">
318 <bean
319 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
320 </entry>
321 <entry key="java.util.UUID">
322 <bean
323 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
324 </entry>
325 <entry key="org.joda.time.DateTime">
326 <bean
327 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
328 </entry>
329 <entry key="java.util.Calendar">
330 <bean
331 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
332 </entry>
333 <entry key="org.joda.time.Partial">
334 <bean
335 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
336 </entry>
337 <entry key="java.lang.Class">
338 <bean
339 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
340 </entry>
341 <entry key="java.util.Map">
342 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
343 </entry>
344 <entry key="java.net.URI">
345 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
346 </entry>
347 </map>
348 </property>
349 <property name="ignoreDefaultExcludes" value="true" />
350 <property name="excludes">
351 <list value-type="java.lang.String">
352 <value>declaringClass</value><!-- DefaultExclude -->
353 <value>metaClass</value><!-- DefaultExclude -->
354 <value>id</value>
355 <value>annotations</value>
356 <value>cacheStrategy</value>
357 <value>markers</value>
358 <value>createdBy</value>
359 <value>updatedBy</value>
360 <value>inDescription</value>
361 </list>
362 </property>
363 </bean>
364 </beans>