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