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 f90cb1c794b6312d56c4b629e907c2df06f77a6f..1bd7437b979628a8659e15d3796e2ed917a37a66 100644 (file)
@@ -3,9 +3,9 @@
     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-2.5.xsd
-    http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd
-    http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+    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">
               - /cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml
              whereas persistence.xml will be removed in the near future.
             -->
-             <value>FeatureTree.root</value>
-             <value>FeatureNode.children</value>
-             <value>FeatureNode.feature</value>
+             <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>
@@ -34,6 +37,7 @@
              <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>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
         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.common.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.taxon.TaxonNode">
-          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />
-        </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.TaxonNameBase">
-          <bean
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBaseBeanProcessor">
-            <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 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.description.StateData">
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.StateDataBeanProcessor" />
+        <entry key="eu.etaxonomy.cdm.model.location.Point">
+          <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.PointBeanProcessor"/>
         </entry>
-        <entry key="org.apache.lucene.document.Document">
-            <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.LuceneDocumentBeanProcessor" />
+         <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>
           </constructor-arg>
         </bean>
     </property>
-    <property name="jsonValueProcessors">
+    <property name="jsonValueProcessorsByClass">
       <map>
         <entry key="org.hibernate.proxy.HibernateProxy">
           <bean
         <entry key="java.util.Map">
             <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
         </entry>
-          <entry key="java.net.URI">
-              <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
-          </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" />
         <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>
             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>
         </constructor-arg>
       </bean>
     </property>
-    <property name="jsonValueProcessors">
+    <property name="jsonValueProcessorsByClass">
       <map>
         <entry key="org.hibernate.proxy.HibernateProxy">
           <bean
         <entry key="java.util.Map">
             <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
         </entry>
-        <entry key="java.net.URI">
+        <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" />
       <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">
             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" />
+          <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.TaxonNameBase">
-          <bean
-            class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNameBaseBeanProcessor" />
+        <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" />
           <bean
             class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonRelationshipBeanProcessor" />
         </entry>
-        <entry key="eu.etaxonomy.cdm.model.common.TermBase">
+        <entry key="eu.etaxonomy.cdm.model.term.TermBase">
           <bean
             class="eu.etaxonomy.cdm.remote.json.processor.bean.TermBaseBeanProcessor">
             <property name="replaceRepresentations" value="true" />
         <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>
                 <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="jsonValueProcessors">
+    <property name="jsonValueProcessorsByClass">
       <map>
         <entry key="org.hibernate.proxy.HibernateProxy">
           <bean
         <entry key="java.util.Map">
             <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
         </entry>
-        <entry key="java.net.URI">
+        <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" />
         <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>
           </constructor-arg>
         </bean>
     </property>
-    <property name="jsonValueProcessors">
+    <property name="jsonValueProcessorsByClass">
       <map>
         <entry key="org.hibernate.proxy.HibernateProxy">
           <bean
         <entry key="java.util.Map">
             <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
         </entry>
-          <entry key="java.net.URI">
+          <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" />
           </constructor-arg>
         </bean>
     </property>
-    <property name="jsonValueProcessors">
+    <property name="jsonValueProcessorsByClass">
       <map>
         <entry key="org.hibernate.proxy.HibernateProxy">
           <bean
         <entry key="java.util.Map">
             <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />
         </entry>
-          <entry key="java.net.URI">
+          <entry key="eu.etaxonomy.cdm.common.URI">
               <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>
           </entry>