working on multilanguage representations in REST services for DescriptionElements...
[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 <!--
17 the exceptions listed here should be covered by implementations of
18 eu.etaxonomy.cdm.persistence.dao.initializer.AutoPropertyInitializer.
19 The according configuration files are
20 - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence_security.xml
21 - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml
22 whereas persistence.xml will be removed in the near future.
23 -->
24 <value>FeatureTree.root</value>
25 <value>FeatureNode.children</value>
26 <value>FeatureNode.feature</value>
27
28 <value>TreeNode.data</value>
29 <value>TreeNode.data</value>
30
31 <value>PolytomousKey.root</value>
32 <value>PolytomousKeyNode.children</value>
33 <value>PolytomousKeyNode.question</value>
34 <value>PolytomousKeyNode.feature</value>
35 <value>PolytomousKeyNode.statement</value>
36 <value>PolytomousKeyNode.modifyingText</value>
37
38 <value>LinkedPolytomousKeyNodeRowDto.childStatement</value>
39 <value>LinkedPolytomousKeyNodeRowDto.rowQuestion</value>
40 <value>LinkedPolytomousKeyNodeRowDto.rowFeature</value>
41 <!-- value>LinkedPolytomousKeyNodeRowDto.keyNode</value-->
42
43 <value>Media.representations</value>
44 <value>MediaRepresentation.parts</value>
45
46 <value>Sequence.marker</value>
47 <value>Sequence.genBankAccessionNumber</value>
48 <value>Sequence.genBankUri</value>
49
50 <value>Annotation.annotationType</value>
51 <value>Marker.markerType</value>
52
53 <value>DerivationEvent.derivatives</value>
54 <value>DerivationEvent.originals</value>
55
56 <value>Point.referenceSystem</value>
57
58 <!-- CardinalityPropertyFilter should allow defining exceptions for abstract super classes : -->
59 <!-- <value>eu.etaxonomy.cdm.model.description.DescriptionElementBase.feature</value> -->
60
61 <value>Synonym.sec</value>
62 <value>Taxon.sec</value>
63
64 <value>StateData.state</value>
65 <value>StateData.modifiers</value>
66 <value>StateData.modifyingText</value>
67
68 <value>TextData.feature</value>
69 <value>CategoricalData.feature</value>
70 <value>CommonTaxonName.feature</value>
71 <value>Distribution.feature</value>
72 <value>IndividualsAssociation.feature</value>
73 <value>QuantitativeData.feature</value>
74 <value>TaxonInteraction.feature</value>
75 <value>TextData.feature</value>
76 <value>IdentifiableSource.citation</value>
77
78 <value>SearchResult.entity</value>
79 </set>
80 </property>
81 </bean>
82
83 <bean id="nameCatalogueApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">
84 <property name="includeToOneRelations" value="true" />
85 <property name="includeToManyRelations" value="true" />
86 <property name="exceptions">
87 <set>
88 </set>
89 </property>
90 </bean>
91
92 <!--
93 =================================================
94 default configuration for RESTful read(/write) service
95 =================================================
96 -->
97 <bean name="jsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
98 init-method="init">
99 <property name="jsonBeanProcessorMatcher">
100 <bean
101 class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
102 </property>
103 <property name="jsonBeanProcessors">
104 <map>
105 <entry key="org.hibernate.proxy.HibernateProxy">
106 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
107 </entry>
108 <entry key="eu.etaxonomy.cdm.model.common.TermBase">
109 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
110 <property name="excludes">
111 <set value-type="java.lang.String">
112 <value>partOf</value><!-- FIXME exclude partOf to avoid lazy loading exceptions -->
113 <value>kindOf</value><!-- FIXME exclude kindOf to avoid lazy loading exceptions -->
114 <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded -->
115 </set>
116 </property>
117 </bean>
118 </entry>
119 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
120 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />
121 </entry>
122 <entry key="eu.etaxonomy.cdm.model.reference.Reference">
123 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
124 </entry>
125 <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">
126 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor"/>
127 </entry>
128 <entry key="eu.etaxonomy.cdm.model.description.KeyStatement">
129 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.KeyStatementBeanProcessor" />
130 </entry>
131 <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">
132 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />
133 </entry>
134 <entry key="eu.etaxonomy.cdm.model.description.DescriptionElementBase">
135 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DescriptionElementBeanProcessor" />
136 </entry>
137 <entry key="eu.etaxonomy.cdm.model.description.StateData">
138 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.StateDataBeanProcessor" />
139 </entry>
140 <entry key="org.apache.lucene.document.Document">
141 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />
142 </entry>
143 </map>
144 </property>
145 <property name="jsonPropertyFilter">
146 <bean class="net.sf.json.filters.OrPropertyFilter">
147 <constructor-arg>
148 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
149 </constructor-arg>
150 <constructor-arg ref="genericApiCardinalityPropertyFilter">
151 </constructor-arg>
152 </bean>
153 </property>
154 <property name="jsonValueProcessors">
155 <map>
156 <entry key="org.hibernate.proxy.HibernateProxy">
157 <bean
158 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
159 </entry>
160 <entry key="java.util.UUID">
161 <bean
162 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
163 </entry>
164 <entry key="org.joda.time.DateTime">
165 <bean
166 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
167 </entry>
168 <entry key="java.util.Calendar">
169 <bean
170 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
171 </entry>
172 <entry key="org.joda.time.Partial">
173 <bean
174 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
175 </entry>
176 <entry key="java.lang.Class">
177 <bean
178 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
179 </entry>
180 <entry key="java.util.Map">
181 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
182 </entry>
183 <entry key="java.net.URI">
184 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
185 </entry>
186 </map>
187 </property>
188 <property name="ignoreDefaultExcludes" value="true" />
189 <property name="excludes">
190 <list value-type="java.lang.String">
191 <value>declaringClass</value><!-- DefaultExclude -->
192 <value>metaClass</value><!-- DefaultExclude -->
193 <value>id</value>
194 <value>cacheStrategy</value>
195 <value>createdBy</value>
196 <value>updatedBy</value>
197 </list>
198 </property>
199 </bean>
200
201 <!--
202 =================================================
203 configuration for RESTful classification service
204 =================================================
205 -->
206 <bean name="jsonConfigClassification" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
207 init-method="init">
208 <property name="jsonBeanProcessorMatcher">
209 <bean
210 class="eu.etaxonomy.cdm.remote.json.processor.matcher.HibernateProxyBeanProcessorMatcher" />
211 </property>
212 <property name="jsonBeanProcessors">
213 <map>
214 <entry key="org.hibernate.proxy.HibernateProxy">
215 <bean
216 class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
217 </entry>
218 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
219 <bean
220 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDaoBeanProcessor" />
221 </entry>
222 </map>
223 </property>
224 <property name="jsonPropertyFilter">
225 <bean class="net.sf.json.filters.OrPropertyFilter">
226 <constructor-arg>
227 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
228 </constructor-arg>
229 <constructor-arg ref="genericApiCardinalityPropertyFilter">
230 </constructor-arg>
231 </bean>
232 </property>
233 <property name="jsonValueProcessors">
234 <map>
235 <entry key="org.hibernate.proxy.HibernateProxy">
236 <bean
237 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
238 </entry>
239 <entry key="java.util.UUID">
240 <bean
241 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
242 </entry>
243 <entry key="org.joda.time.DateTime">
244 <bean
245 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
246 </entry>
247 <entry key="java.util.Calendar">
248 <bean
249 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
250 </entry>
251 <entry key="org.joda.time.Partial">
252 <bean
253 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
254 </entry>
255 <entry key="java.lang.Class">
256 <bean
257 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
258 </entry>
259 <entry key="java.util.Map">
260 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
261 </entry>
262 <entry key="java.net.URI">
263 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
264 </entry>
265 </map>
266 </property>
267 <property name="ignoreDefaultExcludes" value="true" />
268 <property name="excludes">
269 <list value-type="java.lang.String">
270 <value>declaringClass</value><!-- DefaultExclude -->
271 <value>metaClass</value><!-- DefaultExclude -->
272 <value>id</value>
273 <value>cacheStrategy</value>
274 <value>createdBy</value>
275 <value>updatedBy</value>
276 </list>
277 </property>
278 </bean>
279
280 <!--
281 =================================================
282 configuration for RESTful portal service
283 =================================================
284 -->
285
286 <bean name="jsonConfigPortal" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
287 init-method="init">
288 <property name="jsonBeanProcessorMatcher">
289 <bean
290 class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
291 </property>
292 <property name="jsonBeanProcessors">
293 <map>
294 <entry key="org.hibernate.proxy.HibernateProxy">
295 <bean
296 class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
297 </entry>
298 <entry key="eu.etaxonomy.cdm.model.taxon.Taxon">
299 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonBeanProcessor" />
300 </entry>
301 <entry key="eu.etaxonomy.cdm.model.name.TaxonNameBase">
302 <bean
303 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBaseBeanProcessor" />
304 </entry>
305 <entry key="eu.etaxonomy.cdm.model.name.NameRelationship">
306 <bean
307 class="eu.etaxonomy.cdm.remote.json.processor.bean.NameRelationshipBeanProcessor" />
308 </entry>
309 <entry key="eu.etaxonomy.cdm.model.taxon.TaxonRelationship">
310 <bean
311 class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonRelationshipBeanProcessor" />
312 </entry>
313 <entry key="eu.etaxonomy.cdm.model.common.TermBase">
314 <bean
315 class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
316 <property name="replaceRepresentations" value="true" />
317 <property name="excludes">
318 <set value-type="java.lang.String">
319 <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded -->
320 <value>partOf</value><!-- DefinedTermBase -->
321 <value>kindOf</value><!-- DefinedTermBase -->
322 <value>includes</value><!-- DefinedTermBase -->
323 <value>generalizationOf</value><!-- DefinedTermBase -->
324 <value>vocabulary</value><!-- DefinedTermBase -->
325 <!--
326 FIXME must exclude partOf, kindOf, includes, generalizationOf .. to
327 avoid class cast or lazy loading exceptions in TDWG Areas
328 -->
329 </set>
330 </property>
331 </bean>
332 </entry>
333 <entry key="eu.etaxonomy.cdm.model.media.Media">
334 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.MediaBeanProcessor">
335 <property name="replaceTitle" value="true" />
336 <property name="replaceDescription" value="true" />
337 </bean>
338 </entry>
339 <entry key="eu.etaxonomy.cdm.model.reference.Reference">
340 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
341 </entry>
342 <entry key="eu.etaxonomy.cdm.model.description.TaxonNameDescription">
343 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameDescriptionBeanProcessor">
344 <property name="excludes">
345 <set value-type="java.lang.String">
346 <value>taxonName</value>
347 </set>
348 </property>
349 </bean>
350 </entry>
351 <entry key="eu.etaxonomy.cdm.api.facade.DerivedUnitFacade">
352 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DerivedUnitFacadeBeanProcessor"/>
353 </entry>
354 <entry key="eu.etaxonomy.cdm.model.location.Point">
355 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>
356 </entry>
357 <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">
358 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />
359 </entry>
360 <entry key="org.apache.lucene.document.Document">
361 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />
362 </entry>
363 <entry key="eu.etaxonomy.cdm.common.TreeNode">
364 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TreeNodeBeanProcessor" />
365 </entry>
366 <entry key="eu.etaxonomy.cdm.model.description.DescriptionElementBase">
367 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DescriptionElementBeanProcessor">
368 <property name="replaceMultilanguageText" value="true" />
369 </bean>
370 </entry>
371 <entry key="eu.etaxonomy.cdm.model.description.StateData">
372 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.StateDataBeanProcessor">
373 <property name="replaceMultilanguageText" value="true" />
374 </bean>
375 </entry>
376 </map>
377 </property>
378 <property name="jsonPropertyFilter">
379 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
380 </property>
381 <property name="jsonValueProcessors">
382 <map>
383 <entry key="org.hibernate.proxy.HibernateProxy">
384 <bean
385 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
386 </entry>
387 <entry key="java.util.UUID">
388 <bean
389 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
390 </entry>
391 <entry key="org.joda.time.DateTime">
392 <bean
393 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
394 </entry>
395 <entry key="java.util.Calendar">
396 <bean
397 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
398 </entry>
399 <entry key="org.joda.time.Partial">
400 <bean
401 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
402 </entry>
403 <entry key="java.lang.Class">
404 <bean
405 class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
406 </entry>
407 <entry key="java.util.Map">
408 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
409 </entry>
410 <entry key="java.net.URI">
411 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
412 </entry>
413 </map>
414 </property>
415 <property name="ignoreDefaultExcludes" value="true" />
416 <property name="excludes">
417 <list value-type="java.lang.String">
418 <value>declaringClass</value><!-- DefaultExclude -->
419 <value>metaClass</value><!-- DefaultExclude -->
420 <value>id</value>
421 <!--
422 commented out,
423 see #3347 (services and REST service controller for molecular classes implemented)
424 <value>annotations</value>
425 <value>markers</value>
426 -->
427 <value>cacheStrategy</value>
428 <value>createdBy</value>
429 <value>updatedBy</value>
430 <value>inDescription</value>
431 </list>
432 </property>
433 </bean>
434
435 <!--
436 =================================================
437 default configuration name catalogue service
438 =================================================
439 -->
440 <bean name="nameCatalogueJsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
441 init-method="init">
442 <property name="jsonPropertyFilter">
443 <bean class="net.sf.json.filters.OrPropertyFilter">
444 <constructor-arg>
445 <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
446 </constructor-arg>
447 <constructor-arg ref="nameCatalogueApiCardinalityPropertyFilter">
448 </constructor-arg>
449 </bean>
450 </property>
451 <property name="jsonValueProcessors">
452 <map>
453 <entry key="org.hibernate.proxy.HibernateProxy">
454 <bean
455 class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
456 </entry>
457 <entry key="java.util.UUID">
458 <bean
459 class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
460 </entry>
461 <entry key="org.joda.time.DateTime">
462 <bean
463 class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
464 </entry>
465 <entry key="java.util.Calendar">
466 <bean
467 class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
468 </entry>
469 <entry key="org.joda.time.Partial">
470 <bean
471 class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
472 </entry>
473 <entry key="java.util.Map">
474 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
475 </entry>
476 <entry key="java.net.URI">
477 <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
478 </entry>
479
480 </map>
481 </property>
482 <property name="ignoreDefaultExcludes" value="true" />
483 <property name="excludes">
484 <list value-type="java.lang.String">
485 <value>class</value>
486 <value>declaringClass</value><!-- DefaultExclude -->
487 <value>metaClass</value><!-- DefaultExclude -->
488 <value>id</value>
489 <value>cacheStrategy</value>
490 <value>createdBy</value>
491 <value>updatedBy</value>
492 </list>
493 </property>
494 </bean>
495
496 </beans>