ref #9114 further adapt jsonConfigurations and add new constructor to URI wrapper
[cdmlib.git] / cdmlib-remote / src / main / resources / eu / etaxonomy / cdm / remote / json / jsonConfigurations.xml
index 425976a866a9ed8e4d6857fcb97544d0745a9aff..1bd7437b979628a8659e15d3796e2ed917a37a66 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-    xmlns:tx="http://www.springframework.org/schema/tx"\r
-    xmlns:context="http://www.springframework.org/schema/context"\r
-    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
-    http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd\r
-    http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd\r
-    ">\r
-\r
-    <bean id="genericApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">\r
-       <property name="includeToOneRelations" value="false" />\r
-       <property name="includeToManyRelations" value="false" />\r
-       <property name="exceptions">\r
-         <set>\r
-           <!--\r
-             the exceptions listed here should be covered by implementations of\r
-             eu.etaxonomy.cdm.persistence.dao.AutoPropertyInitializer.\r
-             The according configuration files are\r
-              - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence_security.xml\r
-              - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml\r
-             whereas persistence.xml will be removed in the near future.\r
-            -->\r
-             <value>FeatureTree.root</value>\r
-             <value>FeatureNode.children</value>\r
-             <value>FeatureNode.feature</value>\r
-\r
-             <value>TreeNode.data</value>\r
-             <value>TreeNode.data</value>\r
-\r
-             <value>PolytomousKey.root</value>\r
-             <value>PolytomousKeyNode.children</value>\r
-             <value>PolytomousKeyNode.question</value>\r
-             <value>PolytomousKeyNode.feature</value>\r
-             <value>PolytomousKeyNode.statement</value>\r
-             <value>PolytomousKeyNode.modifyingText</value>\r
-\r
-             <value>LinkedPolytomousKeyNodeRowDto.childStatement</value>\r
-             <value>LinkedPolytomousKeyNodeRowDto.rowQuestion</value>\r
-             <value>LinkedPolytomousKeyNodeRowDto.rowFeature</value>\r
-             <!-- value>LinkedPolytomousKeyNodeRowDto.keyNode</value-->\r
-\r
-             <value>Media.representations</value>\r
-             <value>MediaRepresentation.parts</value>\r
-\r
-             <value>Sequence.marker</value>\r
-             <value>Sequence.genBankAccessionNumber</value>\r
-             <value>Sequence.genBankUri</value>\r
-\r
-             <value>Annotation.annotationType</value>\r
-             <value>Marker.markerType</value>\r
-\r
-             <value>DerivationEvent.derivatives</value>\r
-             <value>DerivationEvent.originals</value>\r
-\r
-             <value>Point.referenceSystem</value>\r
-\r
-             <!-- CardinalityPropertyFilter should allow defining exceptions for abstract super classes : -->\r
-             <!-- <value>eu.etaxonomy.cdm.model.description.DescriptionElementBase.feature</value> -->\r
-\r
-             <value>Synonym.sec</value>\r
-             <value>Taxon.sec</value>\r
-\r
-             <value>StateData.state</value>\r
-             <value>StateData.modifiers</value>\r
-             <value>StateData.modifyingText</value>\r
-\r
-             <value>TextData.feature</value>\r
-             <value>CategoricalData.feature</value>\r
-             <value>CommonTaxonName.feature</value>\r
-             <value>Distribution.feature</value>\r
-             <value>IndividualsAssociation.feature</value>\r
-             <value>QuantitativeData.feature</value>\r
-             <value>TaxonInteraction.feature</value>\r
-             <value>TextData.feature</value>\r
-             <value>IdentifiableSource.citation</value>\r
-\r
-             <value>SearchResult.entity</value>\r
-         </set>\r
-       </property>\r
-     </bean>\r
-\r
-     <bean id="nameCatalogueApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">\r
-       <property name="includeToOneRelations" value="true" />\r
-       <property name="includeToManyRelations" value="true" />\r
-       <property name="exceptions">\r
-         <set>\r
-         </set>\r
-       </property>\r
-     </bean>\r
-\r
-  <!--\r
-         =================================================\r
-            default configuration for RESTful read(/write) service\r
-         =================================================\r
-    -->\r
-  <bean name="jsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"\r
-    init-method="init">\r
-    <property name="jsonBeanProcessorMatcher">\r
-      <bean\r
-        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />\r
-    </property>\r
-    <property name="jsonBeanProcessors">\r
-      <map>\r
-      <entry key="org.hibernate.proxy.HibernateProxy">\r
-        <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />\r
-      </entry>\r
-      <entry key="eu.etaxonomy.cdm.model.common.TermBase">\r
-        <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">\r
-           <property name="excludes">\r
-             <set value-type="java.lang.String">\r
-                 <value>partOf</value><!-- FIXME exclude partOf to avoid  lazy loading exceptions  -->\r
-                 <value>kindOf</value><!-- FIXME exclude kindOf to avoid  lazy loading exceptions  -->\r
-                 <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded  -->\r
-             </set>\r
-          </property>\r
-        </bean>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.description.TextData">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TextDataBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.reference.Reference">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor"/>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.description.KeyStatement">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.KeyStatementBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />\r
-        </entry>\r
-        <entry key="org.apache.lucene.document.Document">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />\r
-        </entry>\r
-      </map>\r
-    </property>\r
-    <property name="jsonPropertyFilter">\r
-        <bean class="net.sf.json.filters.OrPropertyFilter">\r
-          <constructor-arg>\r
-              <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />\r
-          </constructor-arg>\r
-          <constructor-arg ref="genericApiCardinalityPropertyFilter">\r
-          </constructor-arg>\r
-        </bean>\r
-    </property>\r
-    <property name="jsonValueProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.UUID">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.DateTime">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Calendar">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.Partial">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.lang.Class">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Map">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
-        </entry>\r
-          <entry key="java.net.URI">\r
-              <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
-          </entry>\r
-      </map>\r
-    </property>\r
-    <property name="ignoreDefaultExcludes" value="true" />\r
-    <property name="excludes">\r
-      <list value-type="java.lang.String">\r
-        <value>declaringClass</value><!-- DefaultExclude -->\r
-        <value>metaClass</value><!-- DefaultExclude -->\r
-        <value>id</value>\r
-        <value>cacheStrategy</value>\r
-        <value>createdBy</value>\r
-        <value>updatedBy</value>\r
-      </list>\r
-    </property>\r
-  </bean>\r
-\r
-  <!--\r
-         =================================================\r
-            configuration for RESTful classification service\r
-         =================================================\r
-    -->\r
-  <bean name="jsonConfigClassification" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"\r
-    init-method="init">\r
-    <property name="jsonBeanProcessorMatcher">\r
-      <bean\r
-        class="eu.etaxonomy.cdm.remote.json.processor.matcher.HibernateProxyBeanProcessorMatcher" />\r
-    </property>\r
-    <property name="jsonBeanProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDaoBeanProcessor" />\r
-        </entry>\r
-      </map>\r
-    </property>\r
-    <property name="jsonPropertyFilter">\r
-      <bean class="net.sf.json.filters.OrPropertyFilter">\r
-        <constructor-arg>\r
-            <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />\r
-        </constructor-arg>\r
-        <constructor-arg ref="genericApiCardinalityPropertyFilter">\r
-        </constructor-arg>\r
-      </bean>\r
-    </property>\r
-    <property name="jsonValueProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.UUID">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.DateTime">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Calendar">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.Partial">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.lang.Class">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Map">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.net.URI">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
-        </entry>\r
-      </map>\r
-    </property>\r
-    <property name="ignoreDefaultExcludes" value="true" />\r
-    <property name="excludes">\r
-      <list value-type="java.lang.String">\r
-        <value>declaringClass</value><!-- DefaultExclude -->\r
-        <value>metaClass</value><!-- DefaultExclude -->\r
-        <value>id</value>\r
-        <value>cacheStrategy</value>\r
-        <value>createdBy</value>\r
-        <value>updatedBy</value>\r
-      </list>\r
-    </property>\r
-  </bean>\r
-\r
-  <!--\r
-       =================================================\r
-         configuration for RESTful portal service\r
-       =================================================\r
-  -->\r
-\r
-  <bean name="jsonConfigPortal" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"\r
-    init-method="init">\r
-    <property name="jsonBeanProcessorMatcher">\r
-      <bean\r
-        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />\r
-    </property>\r
-    <property name="jsonBeanProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.taxon.Taxon">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.name.TaxonNameBase">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBaseBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.name.NameRelationship">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.NameRelationshipBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonRelationship">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonRelationshipBeanProcessor" />\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.common.TermBase">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">\r
-            <property name="replaceRepresentations" value="true" />\r
-            <property name="excludes">\r
-                <set value-type="java.lang.String">\r
-                  <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded  -->\r
-                  <value>partOf</value><!-- DefinedTermBase -->\r
-                  <value>kindOf</value><!-- DefinedTermBase -->\r
-                  <value>includes</value><!-- DefinedTermBase -->\r
-                  <value>generalizationOf</value><!-- DefinedTermBase -->\r
-                  <value>vocabulary</value><!-- DefinedTermBase -->\r
-                  <!--\r
-                      FIXME must exclude partOf, kindOf, includes, generalizationOf .. to\r
-                      avoid class cast or lazy loading exceptions in TDWG Areas\r
-                  -->\r
-                </set>\r
-            </property>\r
-          </bean>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.description.TextData">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TextDataBeanProcessor">\r
-            <property name="replaceMultilanguageText" value="true" />\r
-          </bean>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.media.Media">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.MediaBeanProcessor">\r
-            <property name="replaceTitle" value="true" />\r
-            <property name="replaceDescription" value="true" />\r
-          </bean>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.reference.Reference">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.description.TaxonNameDescription">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameDescriptionBeanProcessor">\r
-              <property name="excludes">\r
-                <set value-type="java.lang.String">\r
-                  <value>taxonName</value>\r
-                </set>\r
-              </property>\r
-          </bean>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.api.facade.DerivedUnitFacade">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DerivedUnitFacadeBeanProcessor"/>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.location.Point">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>\r
-        </entry>\r
-        <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">\r
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />\r
-        </entry>\r
-        <entry key="org.apache.lucene.document.Document">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />\r
-        </entry>\r
-      </map>\r
-    </property>\r
-        <property name="jsonPropertyFilter">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />\r
-        </property>\r
-    <property name="jsonValueProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.UUID">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.DateTime">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Calendar">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.Partial">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.lang.Class">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Map">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.net.URI">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
-        </entry>\r
-      </map>\r
-    </property>\r
-    <property name="ignoreDefaultExcludes" value="true" />\r
-    <property name="excludes">\r
-      <list value-type="java.lang.String">\r
-        <value>declaringClass</value><!-- DefaultExclude -->\r
-        <value>metaClass</value><!-- DefaultExclude -->\r
-        <value>id</value>\r
-        <!--\r
-            commented out,\r
-            see  #3347 (services and REST service controller for molecular classes implemented)\r
-        <value>annotations</value>\r
-        <value>markers</value>\r
-        -->\r
-        <value>cacheStrategy</value>\r
-        <value>createdBy</value>\r
-        <value>updatedBy</value>\r
-        <value>inDescription</value>\r
-      </list>\r
-    </property>\r
-  </bean>\r
-\r
-   <!--\r
-         =================================================\r
-            default configuration name catalogue service\r
-         =================================================\r
-    -->\r
-  <bean name="nameCatalogueJsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"\r
-    init-method="init">\r
-    <property name="jsonPropertyFilter">\r
-        <bean class="net.sf.json.filters.OrPropertyFilter">\r
-          <constructor-arg>\r
-              <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />\r
-          </constructor-arg>\r
-          <constructor-arg ref="nameCatalogueApiCardinalityPropertyFilter">\r
-          </constructor-arg>\r
-        </bean>\r
-    </property>\r
-    <property name="jsonValueProcessors">\r
-      <map>\r
-        <entry key="org.hibernate.proxy.HibernateProxy">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.UUID">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.DateTime">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Calendar">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="org.joda.time.Partial">\r
-          <bean\r
-            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />\r
-        </entry>\r
-        <entry key="java.util.Map">\r
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
-        </entry>\r
-          <entry key="java.net.URI">\r
-              <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
-          </entry>\r
-\r
-      </map>\r
-    </property>\r
-    <property name="ignoreDefaultExcludes" value="true" />\r
-    <property name="excludes">\r
-      <list value-type="java.lang.String">\r
-        <value>class</value>\r
-        <value>declaringClass</value><!-- DefaultExclude -->\r
-        <value>metaClass</value><!-- DefaultExclude -->\r
-        <value>id</value>\r
-        <value>cacheStrategy</value>\r
-        <value>createdBy</value>\r
-        <value>updatedBy</value>\r
-      </list>\r
-    </property>\r
-  </bean>\r
-\r
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:tx="http://www.springframework.org/schema/tx"
+    xmlns:context="http://www.springframework.org/schema/context"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
+    http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-4.3.xsd
+    http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
+    ">
+
+    <bean id="genericApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">
+       <property name="includeToOneRelations" value="false" />
+       <property name="includeToManyRelations" value="false" />
+       <property name="exceptions">
+         <set>
+           <!--
+             the exceptions listed here should be covered by implementations of
+             eu.etaxonomy.cdm.persistence.dao.initializer.AutoPropertyInitializer.
+             The according configuration files are
+              - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence_security.xml
+              - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml
+             whereas persistence.xml will be removed in the near future.
+            -->
+             <value>TermTree.root</value>
+             <value>TermNode.children</value>
+             <value>TermNode.feature</value>
+
+             <value>NomenclaturalStatus.source</value>
+             <value>DescriptionElementSource.citation</value>
+
+             <value>TreeNode.data</value>
+             <value>TreeNode.data</value>
+
+             <value>PolytomousKey.root</value>
+             <value>PolytomousKeyNode.children</value>
+             <value>PolytomousKeyNode.question</value>
+             <value>PolytomousKeyNode.feature</value>
+             <value>PolytomousKeyNode.statement</value>
+             <value>PolytomousKeyNode.modifyingText</value>
+             <value>PolytomousKeyNode.otherNode</value>
+
+             <value>LinkedPolytomousKeyNodeRowDto.childStatement</value>
+             <value>LinkedPolytomousKeyNodeRowDto.rowQuestion</value>
+             <value>LinkedPolytomousKeyNodeRowDto.rowFeature</value>
+             <!-- value>LinkedPolytomousKeyNodeRowDto.keyNode</value-->
+
+             <value>Media.representations</value>
+             <value>MediaRepresentation.parts</value>
+
+             <value>Sequence.marker</value>
+             <value>Sequence.genBankAccessionNumber</value>
+             <value>Sequence.genBankUri</value>
+
+             <value>Annotation.annotationType</value>
+             <value>Marker.markerType</value>
+
+             <value>DerivationEvent.derivatives</value>
+             <value>DerivationEvent.originals</value>
+
+             <value>Point.referenceSystem</value>
+
+             <!-- CardinalityPropertyFilter should allow defining exceptions for abstract super classes : -->
+             <!-- <value>eu.etaxonomy.cdm.model.description.DescriptionElementBase.feature</value> -->
+
+             <value>Synonym.sec</value>
+             <value>Taxon.sec</value>
+
+             <value>StateData.state</value>
+             <value>StateData.modifiers</value>
+             <value>StateData.modifyingText</value>
+
+             <value>TextData.feature</value>
+             <value>CategoricalData.feature</value>
+             <value>CommonTaxonName.feature</value>
+             <value>Distribution.feature</value>
+             <value>IndividualsAssociation.feature</value>
+             <value>QuantitativeData.feature</value>
+             <value>TaxonInteraction.feature</value>
+             <value>TextData.feature</value>
+             <value>IdentifiableSource.citation</value>
+             
+             <value>Registration.name</value>
+             <value>Registration.typeDesignations</value>
+             <value>Registration.institution</value>
+
+             <value>SearchResult.entity</value>
+             
+             <value>CdmEntity.entity</value>
+         </set>
+       </property>
+     </bean>
+
+     <bean id="nameCatalogueApiCardinalityPropertyFilter" class="eu.etaxonomy.cdm.remote.json.util.CardinalityPropertyFilter">
+       <property name="includeToOneRelations" value="true" />
+       <property name="includeToManyRelations" value="true" />
+       <property name="exceptions">
+         <set>
+         </set>
+       </property>
+     </bean>
+
+  <!--
+         =================================================
+            default configuration for RESTful read(/write) service
+         =================================================
+    -->
+  <bean name="jsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
+    init-method="init">
+    <property name="jsonBeanProcessorMatcher">
+      <bean
+        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
+    </property>
+    <property name="defaultValueProcessorMatcher">
+      <bean
+        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmDefaultValueProcessorMatcher" />
+    </property>
+    <property name="defaultValueProcessorMap">
+        <map>
+          <entry key="java.lang.Number">
+            <bean
+              class="eu.etaxonomy.cdm.remote.json.processor.value.CdmDefaultValueProcessor" />
+          </entry>
+        </map>
+    </property>
+    <property name="jsonBeanProcessors">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.term.TermBase">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
+             <property name="excludes">
+               <set value-type="java.lang.String">
+                   <value>partOf</value><!-- FIXME exclude partOf to avoid  lazy loading exceptions  -->
+                   <value>kindOf</value><!-- FIXME exclude kindOf to avoid  lazy loading exceptions  -->
+                   <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded  -->
+               </set>
+            </property>
+           </bean>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.term.Representation">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.RepresentationBeanProcessor"/>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.media.Media">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.MediaBeanProcessor">
+              <property name="replaceTitle" value="true" />
+              <property name="replaceDescription" value="true" />
+            </bean>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />
+         </entry>
+         <entry key="eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDtoBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.location.Point">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>
+        </entry>
+         <entry key="eu.etaxonomy.cdm.model.reference.Reference">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.name.TaxonName">
+            <bean
+              class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBeanProcessor">
+              <property name="skipTaggedName" value="true" />
+            </bean>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor"/>
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.description.KeyStatement">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.KeyStatementBeanProcessor" />
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />
+         </entry>
+         <entry key="eu.etaxonomy.cdm.model.description.DescriptionElementBase">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DescriptionElementBeanProcessor" />
+         </entry>
+         <!-- TODO this bean processor is unused but preserved for the time when the REST API will be revised (#8637)
+         <entry key="eu.etaxonomy.cdm.model.reference.CdmLinkSource">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.CdmLinkSourceBeanProcessor" />
+         </entry>
+         -->
+         <entry key="eu.etaxonomy.cdm.model.description.StateData">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.StateDataBeanProcessor" />
+         </entry>
+         <entry key="org.apache.lucene.document.Document">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />
+         </entry>
+         <entry key="eu.etaxonomy.cdm.api.service.dto.RegistrationDTO">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.RegistrationDtoBeanProcessor" />
+        </entry>
+      </map>
+    </property>
+    <property name="jsonPropertyFilter">
+        <bean class="net.sf.json.filters.OrPropertyFilter">
+          <constructor-arg>
+              <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
+          </constructor-arg>
+          <constructor-arg ref="genericApiCardinalityPropertyFilter">
+          </constructor-arg>
+        </bean>
+    </property>
+    <property name="jsonValueProcessorsByClass">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.UUID">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.DateTime">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Calendar">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.Partial">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
+        </entry>
+        <entry key="java.lang.Class">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Map">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.LinkedHashMap">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.api.service.name.TypeDesignationWorkingSet">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.common.URI">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor"/>
+        </entry>
+      </map>
+    </property>
+    <property name="ignoreDefaultExcludes" value="true" />
+    <property name="excludes">
+      <list value-type="java.lang.String">
+        <value>declaringClass</value><!-- DefaultExclude -->
+        <value>metaClass</value><!-- DefaultExclude -->
+        <value>id</value>
+        <value>cacheStrategy</value>
+        <value>createdBy</value>
+        <value>updatedBy</value>
+        <!-- TODO this bean processor is unused but preserved for the time when the REST API will be revised (#8637)
+        <value>cdmSourceTarget</value><! - - OriginalSourceBase.getCdmSourceTarget() -->
+      </list>
+    </property>
+  </bean>
+
+  <!--
+         =================================================
+            configuration for RESTful classification service
+         =================================================
+    -->
+  <bean name="jsonConfigClassification" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
+    init-method="init">
+    <property name="jsonBeanProcessorMatcher">
+      <bean
+        class="eu.etaxonomy.cdm.remote.json.processor.matcher.HibernateProxyBeanProcessorMatcher" />
+    </property>
+    <property name="jsonBeanProcessors">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNode2DtoBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDtoBeanProcessor" />
+        </entry>
+      </map>
+    </property>
+    <property name="jsonPropertyFilter">
+      <bean class="net.sf.json.filters.OrPropertyFilter">
+        <constructor-arg>
+            <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
+        </constructor-arg>
+        <constructor-arg ref="genericApiCardinalityPropertyFilter">
+        </constructor-arg>
+      </bean>
+    </property>
+    <property name="jsonValueProcessorsByClass">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.UUID">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.DateTime">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Calendar">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.Partial">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
+        </entry>
+        <entry key="java.lang.Class">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Map">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.common.URI">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor" />
+        </entry>        
+        <entry key="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor"/>
+        </entry>
+      </map>
+    </property>
+    <property name="ignoreDefaultExcludes" value="true" />
+    <property name="excludes">
+      <list value-type="java.lang.String">
+        <value>declaringClass</value><!-- DefaultExclude -->
+        <value>metaClass</value><!-- DefaultExclude -->
+        <value>id</value>
+        <value>cacheStrategy</value>
+        <value>createdBy</value>
+        <value>updatedBy</value>
+      </list>
+    </property>
+  </bean>
+
+  <!--
+       =================================================
+         configuration for RESTful portal service
+       =================================================
+  -->
+
+  <bean name="jsonConfigPortal" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
+    init-method="init">
+    <property name="jsonBeanProcessorMatcher">
+      <bean
+        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmProxyBeanProcessorMatcher" />
+    </property>
+    <property name="defaultValueProcessorMatcher">
+      <bean
+        class="eu.etaxonomy.cdm.remote.json.processor.matcher.CdmDefaultValueProcessorMatcher" />
+    </property>
+    <property name="defaultValueProcessorMap">
+        <map>
+          <entry key="java.lang.Number">
+            <bean
+              class="eu.etaxonomy.cdm.remote.json.processor.value.CdmDefaultValueProcessor" />
+          </entry>
+        </map>
+    </property>
+    <property name="jsonBeanProcessors">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.HibernateProxyBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonBase">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonBaseBeanProcessor">
+          <property name="excludes">
+             <set value-type="java.lang.String">
+                 <value>acceptedTaxon</value><!-- #6211 to avoid infinite loops in the synonymy -->
+             </set>
+          </property>
+         </bean>  
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.name.TaxonName">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBeanProcessor">
+            <property name="excludes">
+                <set value-type="java.lang.String">
+                    <value>homotypicalGroup</value>
+                </set>
+            </property>
+          </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor">
+                <property name="replaceMultilanguageText" value="true" />
+            </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeDtoBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor">
+                <property name="replaceMultilanguageText" value="true" />
+            </bean>
+         </entry>
+        <entry key="eu.etaxonomy.cdm.model.name.NameRelationship">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.NameRelationshipBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonRelationship">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonRelationshipBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.term.TermBase">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
+            <property name="replaceRepresentations" value="true" />
+            <property name="excludes">
+                <set value-type="java.lang.String">
+                  <value>infraGenericMarker</value><!-- FIXME leads to IllegalStateException if not excluded  -->
+                  <value>partOf</value><!-- DefinedTermBase -->
+                  <value>kindOf</value><!-- DefinedTermBase -->
+                  <value>includes</value><!-- DefinedTermBase -->
+                  <value>generalizationOf</value><!-- DefinedTermBase -->
+                  <value>vocabulary</value><!-- DefinedTermBase -->
+                  <!--
+                      FIXME must exclude partOf, kindOf, includes, generalizationOf .. to
+                      avoid class cast or lazy loading exceptions in TDWG Areas
+                  -->
+                </set>
+            </property>
+          </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.media.Media">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.MediaBeanProcessor">
+            <property name="replaceTitle" value="true" />
+            <property name="replaceDescription" value="true" />
+          </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.reference.Reference">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.description.TaxonNameDescription">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameDescriptionBeanProcessor">
+              <property name="excludes">
+                <set value-type="java.lang.String">
+                  <value>taxonName</value>
+                </set>
+              </property>
+          </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.api.facade.DerivedUnitFacade">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DerivedUnitFacadeBeanProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.location.Point">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TeamOrPersonBaseBeanProcessor" />
+        </entry>
+        <!-- TODO this bean processor is unused but preserved for the time when the REST API will be revised (#8637)
+        <entry key="eu.etaxonomy.cdm.model.reference.CdmLinkSource">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.CdmLinkSourceBeanProcessor" />
+         </entry>
+         -->
+        <entry key="org.apache.lucene.document.Document">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.common.TreeNode">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TreeNodeBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.description.DescriptionElementBase">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.DescriptionElementBeanProcessor">
+                <property name="replaceMultilanguageText" value="true" />
+            </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.description.StateData">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.StateDataBeanProcessor">
+                <property name="replaceMultilanguageText" value="true" />
+            </bean>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.description.KeyStatement">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.KeyStatementBeanProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.api.service.dto.RegistrationDTO">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.RegistrationDtoBeanProcessor" />
+        </entry>
+      </map>
+    </property>
+        <property name="jsonPropertyFilter">
+            <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
+        </property>
+    <property name="jsonValueProcessorsByClass">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.UUID">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.DateTime">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Calendar">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.Partial">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
+        </entry>
+        <entry key="java.lang.Class">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.ClassJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Map">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.LinkedHashMap">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.api.service.name.TypeDesignationWorkingSet">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.common.URI">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor" />
+        </entry>
+        <entry key="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.KeyTermValueProcessor"/>
+        </entry>
+      </map>
+    </property>
+    <property name="ignoreDefaultExcludes" value="true" />
+    <property name="excludes">
+      <list value-type="java.lang.String">
+        <value>declaringClass</value><!-- DefaultExclude -->
+        <value>metaClass</value><!-- DefaultExclude -->
+        <value>id</value>
+        <!--
+            commented out,
+            see  #3347 (services and REST service controller for molecular classes implemented)
+        <value>annotations</value>
+        <value>markers</value>
+        -->
+        <value>cacheStrategy</value>
+        <value>createdBy</value>
+        <value>updatedBy</value>
+        <value>inDescription</value>
+        <!-- TODO this bean processor is unused but preserved for the time when the REST API will be revised (#8637)
+        <value>cdmSourceTarget</value>< !- - OriginalSourceBase.getCdmSourceTarget() -->
+      </list>
+    </property>
+  </bean>
+
+   <!--
+         =================================================
+            default configuration name catalogue service
+         =================================================
+    -->
+  <bean name="nameCatalogueJsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
+    init-method="init">
+    <property name="jsonPropertyFilter">
+        <bean class="net.sf.json.filters.OrPropertyFilter">
+          <constructor-arg>
+              <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
+          </constructor-arg>
+          <constructor-arg ref="nameCatalogueApiCardinalityPropertyFilter">
+          </constructor-arg>
+        </bean>
+    </property>
+    <property name="jsonValueProcessorsByClass">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.UUID">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.DateTime">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Calendar">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.Partial">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Map">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+          <entry key="eu.etaxonomy.cdm.common.URI">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
+          </entry>
+      </map>
+    </property>
+    <property name="ignoreDefaultExcludes" value="true" />
+    <property name="excludes">
+      <list value-type="java.lang.String">
+        <value>class</value>
+        <value>declaringClass</value><!-- DefaultExclude -->
+        <value>metaClass</value><!-- DefaultExclude -->
+        <value>id</value>
+        <value>cacheStrategy</value>
+        <value>createdBy</value>
+        <value>updatedBy</value>
+      </list>
+    </property>
+  </bean>
+
+  <bean name="occurrenceCatalogueJsonConfig" class="eu.etaxonomy.cdm.remote.json.JsonConfigFactoryBean"
+    init-method="init">
+    <property name="jsonPropertyFilter">
+        <bean class="net.sf.json.filters.OrPropertyFilter">
+          <constructor-arg>
+              <bean class="eu.etaxonomy.cdm.remote.json.util.InitializedHibernatePropertyFilter" />
+          </constructor-arg>
+          <constructor-arg ref="nameCatalogueApiCardinalityPropertyFilter">
+          </constructor-arg>
+        </bean>
+    </property>
+    <property name="jsonValueProcessorsByClass">
+      <map>
+        <entry key="org.hibernate.proxy.HibernateProxy">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.HibernateJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.UUID">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.UUIDJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.DateTime">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.DateTimeJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Calendar">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.CalendarJSONValueProcessor" />
+        </entry>
+        <entry key="org.joda.time.Partial">
+          <bean
+            class="eu.etaxonomy.cdm.remote.json.processor.value.PartialJSONValueProcessor" />
+        </entry>
+        <entry key="java.util.Map">
+            <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
+        </entry>
+          <entry key="eu.etaxonomy.cdm.common.URI">
+              <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
+          </entry>
+
+      </map>
+    </property>
+    <property name="ignoreDefaultExcludes" value="true" />
+    <property name="excludes">
+      <list value-type="java.lang.String">
+        <value>class</value>
+        <value>declaringClass</value><!-- DefaultExclude -->
+        <value>metaClass</value><!-- DefaultExclude -->
+        <value>id</value>
+        <value>cacheStrategy</value>
+        <value>createdBy</value>
+        <value>updatedBy</value>
+      </list>
+    </property>
+  </bean>
+
+
 </beans>
\ No newline at end of file
 </beans>
\ No newline at end of file