Merge branch 'develop' of wp5.e-taxonomy.eu:/var/git/taxeditor into remoting-4.0
authorCherian Mathew <c.mathew@bgbm.org>
Wed, 24 Jun 2015 07:40:31 +0000 (09:40 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Wed, 24 Jun 2015 07:40:31 +0000 (09:40 +0200)
Conflicts:
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties

1  2 
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/AbstractLazyInitializerTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/RemoteLazyLoadingTest.java
pom.xml

index 48de1b1356fa0600b60df224b2fae0fab13e2669,cd1058349ad3c212bebc4bf12b7d992fd731ca8e..b0f53bf550380eafb5bb45083871b98ac914328d
@@@ -1,10 -1,18 +1,18 @@@
  <?xml version="1.0" encoding="UTF-8"?>
  <classpath>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.6.3-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.6.3-SNAPSHOT.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 -      <classpathentry kind="src" path="src/main/java"/>
 -      <classpathentry kind="src" path="src/main/resources"/>
 -      <classpathentry kind="src" path="src/test/java/"/>
 +      <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
 +      <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
 +      <classpathentry kind="src" path="src/test/java"/>
        <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.1.3.RELEASE.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.3.jar"/>
 -      <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.3.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/validation-api-1.0.0.GA.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-security-remoting-3.1.3.RELEASE.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/jena-core-2.11.2.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.0.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.6.1-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.6.1-SNAPSHOT.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/poi-3.10-FINAL.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.10-FINAL.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.3.0.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.10-FINAL.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/swagger-annotations-1.3.5.jar"/>
 -      <classpathentry kind="output" path="bin"/>
 +      <classpathentry kind="output" path="target/classes"/>
  </classpath>
index 9f9e05f42cfc4d847dc561f71e077f908393e621,879087a8b1a1cd314fe813a5d07a5812bee0be83..09147a89584603ee64c703573fd8ba928a95e3df
@@@ -7,11 -7,10 +7,11 @@@ Eclipse-BundleShape: di
  Export-Package: com.google.api,
   com.google.api.detect,
   com.google.api.translate,
 + eu.etaxonomy.cdm,
   eu.etaxonomy.cdm.api.application,
 + eu.etaxonomy.cdm.api.cache,
   eu.etaxonomy.cdm.api.conversation,
   eu.etaxonomy.cdm.api.facade,
 - eu.etaxonomy.cdm.api.lazyloading,
   eu.etaxonomy.cdm.api.service,
   eu.etaxonomy.cdm.api.service.config,
   eu.etaxonomy.cdm.api.service.description,
   eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence,
   eu.etaxonomy.cdm.persistence.dao.hibernate.reference,
   eu.etaxonomy.cdm.persistence.dao.hibernate.taxon,
 - eu.etaxonomy.cdm.persistence.dao.hibernate.validation,
   eu.etaxonomy.cdm.persistence.dao.hibernate.view,
   eu.etaxonomy.cdm.persistence.dao.media,
   eu.etaxonomy.cdm.persistence.dao.name,
   eu.etaxonomy.cdm.print.out.pdf,
   eu.etaxonomy.cdm.print.out.taxpub,
   eu.etaxonomy.cdm.print.out.xml,
 - eu.etaxonomy.cdm.remote,
   eu.etaxonomy.cdm.remote.config,
   eu.etaxonomy.cdm.remote.controller,
   eu.etaxonomy.cdm.remote.controller.dto,
   eu.etaxonomy.cdm.validation.annotation,
   eu.etaxonomy.cdm.validation.constraint,
   eu.etaxonomy.remote.dto.rdf,
 + eu.etaxonomy.taxeditor.remoting,
 + eu.etaxonomy.taxeditor.remoting.cache,
 + eu.etaxonomy.taxeditor.remoting.server,
 + eu.etaxonomy.taxeditor.remoting.source,
 + eu.etaxonomy.taxeditor.service,
 + eu.etaxonomy.taxeditor.session,
 + eu.etaxonomy.taxeditor.session.mock,
 + javassist.util.proxy,
   javax.persistence,
   junit.framework;uses:="org.junit.runner.manipulation,org.junit.runner,org.junit.runner.notification",
 + net.sf.ehcache,
 + net.sf.ehcache.config,
 + net.sf.ehcache.statistics,
 + net.sf.ehcache.store,
   net.sf.json;uses:="net.sf.json.processors,net.sf.json.util,org.apache.commons.lang.exception",
 + org.aopalliance.aop,
   org.apache.commons.collections;uses:="org.apache.commons.collections.keyvalue,new org.apache.commons.collections",
 + org.apache.commons.collections.buffer,
 + org.apache.commons.dbcp,
   org.apache.commons.io;uses:="org.apache.commons.io.filefilter",
   org.apache.commons.lang;uses:="org.apache.commons.lang.exception",
   org.apache.commons.lang.exception,
 + org.apache.commons.lang.text,
 + org.apache.commons.logging,
   org.apache.fop.apps,
   org.apache.http,
   org.apache.http.client,
 + org.apache.http.util,
   org.apache.log4j;uses:="org.apache.log4j.helpers,org.apache.log4j.or,org.apache.log4j.spi",
   org.apache.log4j.chainsaw;
    uses:="org.apache.log4j,
   org.hibernate,
   org.hibernate.annotations.common.reflection,
   org.hibernate.cache.internal,
 + org.hibernate.cfg,
   org.hibernate.classic,
   org.hibernate.collection.internal,
 + org.hibernate.collection.spi,
   org.hibernate.criterion,
 + org.hibernate.engine.internal,
 + org.hibernate.engine.spi,
 + org.hibernate.engine.transaction.spi,
   org.hibernate.envers.query.criteria,
 + org.hibernate.internal,
 + org.hibernate.internal.util,
 + org.hibernate.internal.util.collections,
 + org.hibernate.mapping,
 + org.hibernate.persister.collection,
 + org.hibernate.persister.entity,
 + org.hibernate.pretty,
 + org.hibernate.property,
   org.hibernate.proxy,
 + org.hibernate.proxy.pojo.javassist,
   org.hibernate.search,
   org.hibernate.search.spatial.impl,
 + org.hibernate.type,
   org.jadira.usertype.dateandtime.joda,
   org.jadira.usertype.dateandtime.shared.spi,
   org.jboss.logging,
   org.odftoolkit.odfdom.dom.element,
   org.odftoolkit.odfdom.dom.element.style,
   org.odftoolkit.odfdom.dom.style,
 + org.slf4j,
 + org.springframework.aop,
 + org.springframework.aop.framework,
 + org.springframework.beans,
   org.springframework.beans.factory,
   org.springframework.beans.factory.annotation;
    uses:="org.apache.commons.logging,
     org.springframework.beans.factory.wiring,
     org.springframework.core.type,
     org.springframework.beans.factory",
 + org.springframework.beans.factory.config,
 + org.springframework.beans.factory.support,
 + org.springframework.beans.factory.xml,
   org.springframework.cache.ehcache,
   org.springframework.context;
    uses:="org.springframework.core.io,
     org.springframework.core.io.support,
     org.springframework.beans.factory.config,
     org.springframework.beans.factory",
 + org.springframework.context.config,
   org.springframework.context.event;
    uses:="org.springframework.core,
     org.aopalliance.intercept,
     org.springframework.context,
     org.springframework.beans.factory",
 + org.springframework.context.support,
   org.springframework.core;uses:="org.springframework.util",
 + org.springframework.core.env,
   org.springframework.core.io;uses:="org.jboss.virtual",
 + org.springframework.core.io.support,
   org.springframework.core.type.classreading,
 + org.springframework.jdbc.datasource,
   org.springframework.orm.hibernate3;
    uses:="org.apache.commons.logging,
     org.aopalliance.intercept,
     org.springframework.dao,
     org.springframework.transaction.support",
   org.springframework.orm.hibernate4,
 + org.springframework.remoting,
 + org.springframework.remoting.httpinvoker,
 + org.springframework.remoting.support,
   org.springframework.security.access,
   org.springframework.security.authentication,
 + org.springframework.security.authentication.dao,
 + org.springframework.security.authentication.encoding,
   org.springframework.security.authentication.event,
 + org.springframework.security.config,
   org.springframework.security.core,
   org.springframework.security.core.context,
   org.springframework.security.core.userdetails,
     org.springframework.transaction,
     org.apache.commons.logging,
     org.springframework.beans.factory",
 + org.springframework.util,
   org.springframework.web.servlet;
    uses:="org.springframework.web.multipart,
     org.apache.commons.logging,
  Bundle-Vendor: EDIT
  Bundle-RequiredExecutionEnvironment: JavaSE-1.6
  Require-Bundle: org.eclipse.osgi,
 - org.eclipse.equinox.common
 + org.eclipse.equinox.common,
 + org.apache.commons.httpclient;bundle-version="3.1.0"
  Bundle-ClassPath: .,
   lib/activation-1.1.1.jar,
   lib/antlr-2.7.7.jar,
   lib/spring-security-core-3.1.3.RELEASE.jar,
   lib/stax-1.2.0.jar,
   lib/stax-api-1.0.1.jar,
 - lib/unitils-core-3.3.jar,
 - lib/unitils-database-3.3.jar,
 - lib/unitils-dbmaintainer-3.3.jar,
 - lib/unitils-dbunit-3.3.jar,
 - lib/unitils-easymock-3.3.jar,
 - lib/unitils-inject-3.3.jar,
 - lib/unitils-mock-3.3.jar,
 - lib/unitils-orm-3.3.jar,
 - lib/unitils-spring-3.3.jar,
   lib/usertype.jodatime-2.0.1.jar,
   lib/usertype.spi-2.0.1.jar,
   lib/validation-api-1.0.0.GA.jar,
   lib/spring-security-remoting-3.1.3.RELEASE.jar,
   lib/jena-core-2.11.2.jar,
   lib/jena-iri-1.0.2.jar,
-  lib/cdmlib-commons-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-commons-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-ext-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-ext-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-io-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-io-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-model-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-model-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-persistence-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-persistence-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-print-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-print-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-remote-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-remote-3.6.1-SNAPSHOT.jar,
-  lib/cdmlib-services-3.6.1-SNAPSHOT-sources.jar,
-  lib/cdmlib-services-3.6.1-SNAPSHOT.jar,
   lib/poi-3.10-FINAL.jar,
   lib/poi-ooxml-3.10-FINAL.jar,
   lib/xmlbeans-2.3.0.jar,
   lib/poi-ooxml-schemas-3.10-FINAL.jar,
-  lib/swagger-annotations-1.3.5.jar
- Import-Package: org.apache.commons.httpclient.methods
+  lib/swagger-annotations-1.3.5.jar,
+  lib/cdmlib-commons-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-ext-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-io-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-model-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-persistence-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-print-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-remote-3.6.3-SNAPSHOT.jar,
+  lib/cdmlib-services-3.6.3-SNAPSHOT.jar
+ Import-Package: eu.etaxonomy.cdm.api.application
index 78ed69c09c7d10aaec99663468f6e8f74688ac33,c73beec449393674a902c2ad298404ee885ee4d7..85f6c75fa57f0c5ee22f01ddcdf396aa967fb567
@@@ -155,6 -155,15 +155,6 @@@ bin.includes = META-INF/,
                 lib/spring-security-core-3.1.3.RELEASE.jar,\\r
                 lib/stax-1.2.0.jar,\\r
                 lib/stax-api-1.0.1.jar,\\r
 -               lib/unitils-core-3.3.jar,\\r
 -               lib/unitils-database-3.3.jar,\\r
 -               lib/unitils-dbmaintainer-3.3.jar,\\r
 -               lib/unitils-dbunit-3.3.jar,\\r
 -               lib/unitils-easymock-3.3.jar,\\r
 -               lib/unitils-inject-3.3.jar,\\r
 -               lib/unitils-mock-3.3.jar,\\r
 -               lib/unitils-orm-3.3.jar,\\r
 -               lib/unitils-spring-3.3.jar,\\r
                 lib/usertype.jodatime-2.0.1.jar,\\r
                 lib/usertype.spi-2.0.1.jar,\\r
                 lib/validation-api-1.0.0.GA.jar,\\r
                 lib/poi-ooxml-3.10-FINAL.jar,\\r
                 lib/poi-ooxml-schemas-3.10-FINAL.jar,\\r
                 lib/xmlbeans-2.3.0.jar,\\r
-                lib/cdmlib-commons-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-ext-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-io-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-model-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-persistence-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-print-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-remote-3.6.1-SNAPSHOT.jar,\\r
-                lib/cdmlib-services-3.6.1-SNAPSHOT.jar,\\r
-                lib/swagger-annotations-1.3.5.jar\r
+                lib/swagger-annotations-1.3.5.jar,\\r
+                lib/cdmlib-commons-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-ext-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-io-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-model-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-persistence-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-print-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-remote-3.6.3-SNAPSHOT.jar,\\r
+                lib/cdmlib-services-3.6.3-SNAPSHOT.jar\r
  \r
  jars.compile.order = .\r
  output.. = bin/\r
  source.. = src/main/java/,\\r
 -           src/main/resources/,\\r
 -           src/test/java/\r
 +           src/main/resources/\r
  src.includes = src/\r
  \r
index d3370b5602609de64bc3f368c3f5305a3a42d199,48a56f518ae00f2d6e96d95e8d6cbaba7fd8a303..31eda3f375d09ec1285c94ec48fab148e1bcc516
@@@ -14,7 -14,6 +14,7 @@@ import eu.etaxonomy.cdm.model.name.Taxo
  import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
  import eu.etaxonomy.cdm.model.reference.Reference;
  import eu.etaxonomy.cdm.strategy.match.MatchException;
 +import eu.etaxonomy.cdm.strategy.match.MatchStrategyConfigurator.MatchStrategy;
  import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
  import eu.etaxonomy.taxeditor.model.MessagingUtils;
  import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@@ -36,10 -35,10 +36,10 @@@ public class ParseHandler
                List<INomenclaturalReference> duplicateReferences = new ArrayList<INomenclaturalReference>();
                List<INomenclaturalReference> duplicateInReferences = new ArrayList<INomenclaturalReference>();
  
-               List<TeamOrPersonBase> duplicateCombinationAuthorTeams = new ArrayList<TeamOrPersonBase>();
-               List<TeamOrPersonBase> duplicateExCombinationAuthorTeams = new ArrayList<TeamOrPersonBase>();
-               List<TeamOrPersonBase> duplicateBasionymAuthorTeams = new ArrayList<TeamOrPersonBase>();
-               List<TeamOrPersonBase> duplicateExBasionymAuthorTeams = new ArrayList<TeamOrPersonBase>();
+               List<TeamOrPersonBase> duplicateCombinationAuthorships = new ArrayList<TeamOrPersonBase>();
+               List<TeamOrPersonBase> duplicateExCombinationAuthorships = new ArrayList<TeamOrPersonBase>();
+               List<TeamOrPersonBase> duplicateBasionymAuthorships = new ArrayList<TeamOrPersonBase>();
+               List<TeamOrPersonBase> duplicateExBasionymAuthorships = new ArrayList<TeamOrPersonBase>();
        }
  
        private static NonViralNameParserImpl nonViralNameParser = NonViralNameParserImpl.NewInstance();
@@@ -88,8 -87,8 +88,8 @@@
         * @param unparsedNameString a {@link java.lang.String} object.
         * @return a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase} object.
         */
 -      public static TaxonNameBase parseReferencedName(String unparsedNameString, Rank rank){
 -              TaxonNameBase name = nonViralNameParser.parseReferencedName(unparsedNameString,
 +      public static NonViralName parseReferencedName(String unparsedNameString, Rank rank){
 +          NonViralName name = nonViralNameParser.parseReferencedName(unparsedNameString,
                                PreferencesUtil.getPreferredNomenclaturalCode(), rank);
  
  //            if (name.hasProblem()) {
@@@ -99,8 -98,8 +99,8 @@@
                return name;
        }
  
 -      public static TaxonNameBase parseName(String unparsedNameString, Rank rank){
 -              TaxonNameBase name = nonViralNameParser.parseFullName(unparsedNameString,
 +      public static NonViralName parseName(String unparsedNameString, Rank rank){
 +              NonViralName name = nonViralNameParser.parseFullName(unparsedNameString,
                                PreferencesUtil.getPreferredNomenclaturalCode(), rank);
  
                return name;
         *
         * @return a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase} object.
         */
 -      public static TaxonNameBase createEmptyName(){
 +      public static NonViralName createEmptyName(){
                return nonViralNameParser.getNonViralNameInstance("", PreferencesUtil.getPreferredNomenclaturalCode());
        }
  
         */
        private void resolveAllDuplicateAuthors(NonViralName name, MatchMatrix matchMatrix) {
  
-               if(matchMatrix.duplicateCombinationAuthorTeams.size() > 0){
-                       name.setCombinationAuthorTeam(matchMatrix.duplicateCombinationAuthorTeams.iterator().next());
+               if(matchMatrix.duplicateCombinationAuthorships.size() > 0){
+                       name.setCombinationAuthorship(matchMatrix.duplicateCombinationAuthorships.iterator().next());
                        Reference reference = (Reference) name.getNomenclaturalReference();
                        if(reference != null){
-                               reference.setAuthorship(matchMatrix.duplicateCombinationAuthorTeams.iterator().next());
+                               reference.setAuthorship(matchMatrix.duplicateCombinationAuthorships.iterator().next());
                        }
                        // FIXME TODO resolve multiple duplications. We use first match for a start.
                }
  
-               if(matchMatrix.duplicateExCombinationAuthorTeams.size() > 0){
-                       name.setExCombinationAuthorTeam(matchMatrix.duplicateExCombinationAuthorTeams.iterator().next());
+               if(matchMatrix.duplicateExCombinationAuthorships.size() > 0){
+                       name.setExCombinationAuthorship(matchMatrix.duplicateExCombinationAuthorships.iterator().next());
                        // FIXME TODO resolve multiple duplications. We use first match for a start.
                }
  
-               if(matchMatrix.duplicateBasionymAuthorTeams.size() > 0){
-                       name.setBasionymAuthorTeam(matchMatrix.duplicateBasionymAuthorTeams.iterator().next());
+               if(matchMatrix.duplicateBasionymAuthorships.size() > 0){
+                       name.setBasionymAuthorship(matchMatrix.duplicateBasionymAuthorships.iterator().next());
                        // FIXME TODO resolve multiple duplications. We use first match for a start.
                }
  
-               if(matchMatrix.duplicateExBasionymAuthorTeams.size() > 0){
-                       name.setExBasionymAuthorTeam(matchMatrix.duplicateExBasionymAuthorTeams.iterator().next());
+               if(matchMatrix.duplicateExBasionymAuthorships.size() > 0){
+                       name.setExBasionymAuthorship(matchMatrix.duplicateExBasionymAuthorships.iterator().next());
                        // FIXME TODO resolve multiple duplications. We use first match for a start.
                }
        }
  
                matchMatrix.duplicateNames = findMatchingLatinNames(name);
  
-               matchMatrix.duplicateCombinationAuthorTeams = findMatchingAuthors(name.getCombinationAuthorTeam());
-               matchMatrix.duplicateExCombinationAuthorTeams = findMatchingAuthors(name.getExCombinationAuthorTeam());
-               matchMatrix.duplicateBasionymAuthorTeams = findMatchingAuthors(name.getBasionymAuthorTeam());
-               matchMatrix.duplicateExBasionymAuthorTeams = findMatchingAuthors(name.getExBasionymAuthorTeam());
+               matchMatrix.duplicateCombinationAuthorships = findMatchingAuthors(name.getCombinationAuthorship());
+               matchMatrix.duplicateExCombinationAuthorships = findMatchingAuthors(name.getExCombinationAuthorship());
+               matchMatrix.duplicateBasionymAuthorships = findMatchingAuthors(name.getBasionymAuthorship());
+               matchMatrix.duplicateExBasionymAuthorships = findMatchingAuthors(name.getExBasionymAuthorship());
  
                INomenclaturalReference nomenclaturalReference = name.getNomenclaturalReference();
  
              return new ArrayList<INomenclaturalReference>();
          }
                try{
 -                      return CdmStore.getCommonService().findMatching(nomenclaturalReference, MatchStrategyConfigurator.ReferenceMatchStrategy());
 +
 +                      return CdmStore.getCommonService().findMatching(nomenclaturalReference, MatchStrategy.Reference);
 +
                }catch (MatchException e) {
                        MessagingUtils.error(this.getClass(), "Error finding matching references", e);
                }
                }
  
                try{
 -                      return CdmStore.getCommonService().findMatching(authorTeam, MatchStrategyConfigurator.TeamOrPersonMatchStrategy());
 +
 +                      return CdmStore.getCommonService().findMatching(authorTeam, MatchStrategy.TeamOrPerson);
 +
                }catch (MatchException e) {
                        MessagingUtils.error(this.getClass(), "Error finding matching authors", e);
                }
        private List<TaxonNameBase> findMatchingLatinNames(TaxonNameBase taxonNameBase) {
  
                try {
 -                      return CdmStore.getCommonService().findMatching(taxonNameBase, MatchStrategyConfigurator.NonViralNameMatchStrategy());
 +
 +                      return CdmStore.getCommonService().findMatching(taxonNameBase, MatchStrategy.NonViralName);
 +
  
                } catch (MatchException e) {
                        MessagingUtils.error(this.getClass(), "Error finding matching names", e);
index 35abb014ad50b7dc7f9db9d1707ab032c7026975,0000000000000000000000000000000000000000..81afe0628ade3155b8b63fb1482ab383c6af9b31
mode 100644,000000..100644
--- /dev/null
@@@ -1,215 -1,0 +1,215 @@@
-             name.setCombinationAuthorTeam(combAuthor);
 +/**
 + * Copyright (C) 2014 EDIT
 + * European Distributed Institute of Taxonomy
 + * http://www.e-taxonomy.eu
 + *
 + * The contents of this file are subject to the Mozilla Public License Version 1.1
 + * See LICENSE.TXT at the top of this package for the full license terms.
 + */
 +package eu.etaxonomy.taxeditor.lazyloading;
 +
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.apache.log4j.Logger;
 +import org.junit.Assert;
 +import org.junit.BeforeClass;
 +import org.junit.Ignore;
 +import org.junit.Test;
 +import org.unitils.dbunit.annotation.DataSet;
 +
 +import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
 +import eu.etaxonomy.cdm.api.service.IClassificationService;
 +import eu.etaxonomy.cdm.api.service.ITaxonService;
 +import eu.etaxonomy.cdm.model.agent.Person;
 +import eu.etaxonomy.cdm.model.agent.Team;
 +import eu.etaxonomy.cdm.model.common.CdmBase;
 +import eu.etaxonomy.cdm.model.name.BotanicalName;
 +import eu.etaxonomy.cdm.model.name.NonViralName;
 +import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 +import eu.etaxonomy.cdm.model.taxon.Classification;
 +import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 +import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
 +
 +
 +
 +
 +/**
 + * Class to test the {@link CdmApplicationRemoteController}
 + *
 + */
 +// FIXME:Remoting need to create a proper dataset for this test
 +//       Could be combined with RemotePersistentCollectionTest
 +@Ignore
 +@DataSet
 +public class AbstractLazyInitializerTest extends BaseRemotingTest {
 +    private static final Logger logger = Logger.getLogger(AbstractLazyInitializerTest.class);
 +
 +    private static IClassificationService classificationService;
 +    private static ITaxonService taxonService;
 +
 +    private static List<TaxonNode> taxonNodes;
 +
 +    private final UUID taxonUuid1 = UUID.fromString("8217ef77-2ab1-4318-bd67-ccd0cdef07c4");
 +    private final UUID taxonUuid2 = UUID.fromString("ef96fafa-7750-4141-b31b-1ad1daab3e76");
 +
 +
 +    @BeforeClass
 +    public static void initializeRemoteLazyLoading() {
 +
 +        taxonService = getRemoteApplicationController().getTaxonService();
 +        classificationService= getRemoteApplicationController().getClassificationService();
 +        List<Classification> classifications = classificationService.listClassifications(1,0,null,null);
 +        Assert.assertFalse(classifications.isEmpty());
 +
 +        Classification classification = classifications.get(0);
 +        Assert.assertNotNull(classification);
 +        taxonNodes = classificationService.getAllNodes();
 +        Assert.assertFalse(taxonNodes.isEmpty());
 +
 +    }
 +
 +
 +
 +    @Test
 +    public void testCDMEntityGet() {
 +        //ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
 +        Iterator<TaxonNode> taxonNodeItr = taxonNodes.iterator();
 +        int maxcount = 30;
 +        int count = 0;
 +        while(taxonNodeItr.hasNext() && count <= maxcount) {
 +            TaxonNode taxonNode = taxonNodeItr.next();
 +            Assert.assertNotNull(taxonNode);
 +
 +            Taxon taxon = taxonNode.getTaxon();
 +            Assert.assertNotNull(taxon);
 +
 +            String taxonTitle = taxon.getTitleCache();
 +            logger.info("Taxon : " + taxonTitle);
 +
 +            TaxonNameBase name = taxon.getName();
 +            Assert.assertNotNull(name);
 +
 +            String nameTitle = name.getTitleCache();
 +            logger.info("Taxon Name : " + nameTitle);
 +
 +            count++;
 +        }
 +    }
 +
 +    @Test
 +    public void taxonReadTest() {
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +    }
 +
 +
 +    @Test
 +    public void testCDMEntitySave() {
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +        String oldTitleCache = taxon.getTitleCache();
 +
 +        System.out.println("Taxon title : " + oldTitleCache);
 +
 +        taxon.setTitleCache(oldTitleCache + ":updated", true);
 +        taxonService.merge(taxon);
 +
 +        Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +        System.out.println("New Taxon Title : " + taxonNew.getTitleCache());
 +
 +        Assert.assertTrue("Title caches should not be equal",oldTitleCache.equals(taxonNew.getTitleCache()));
 +
 +
 +        taxonNew.setTitleCache(oldTitleCache, true);
 +        taxonService.merge(taxonNew);
 +
 +        Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +        System.out.println("Old Taxon Title : " + taxonOld.getTitleCache());
 +
 +        Assert.assertEquals("Title caches should be equal",oldTitleCache,taxonOld.getTitleCache());
 +
 +    }
 +
 +
 +        @Test
 +        public void testCDMEntitySaveLazyNew() {
 +            Team combAuthor = Team.NewInstance();
 +            combAuthor.addTeamMember(Person.NewTitledInstance("test member"));
 +            BotanicalName name = BotanicalName.NewInstance(null, "Test1", null, null, null, null, null, null, null);
++            name.setCombinationAuthorship(combAuthor);
 +            Taxon tax1 = Taxon.NewInstance(name, null);
 +            UUID taxonUuid1 = taxonService.save(tax1);
 +
 +            Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +            NonViralName nvn = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +            String oldTitleCache = nvn.getTitleCache();
 +            logger.info("Taxon Name Title : " + oldTitleCache);
 +            nvn.setTitleCache(oldTitleCache + ":updated",false);
 +            taxonService.update(taxon);
 +
 +            Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +            NonViralName nvnNew = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +            logger.info("New Taxon Name Title : " + nvnNew.getTitleCache());
 +
 +            Assert.assertTrue("Title caches should not be equal",oldTitleCache.equals(nvnNew.getTitleCache()));
 +
 +            nvnNew.setTitleCache(oldTitleCache, true);
 +            taxonService.update(taxon);
 +
 +            Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +            NonViralName nvnOld = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +            logger.info("Old Taxon Name Title : " + nvnNew.getTitleCache());
 +
 +            Assert.assertEquals("Title caches should be equal",oldTitleCache,nvnOld.getTitleCache());
 +        }
 +
 +        @Ignore
 +        @Test
 +        public void testCDMEntitySaveCollection() {
 +            Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +            Set<SynonymRelationship> synRelations = taxon.getSynonymRelations();
 +            Set<String> relToTitles = new HashSet<String>();
 +            Iterator<SynonymRelationship> srItr = synRelations.iterator();
 +            while(srItr.hasNext()) {
 +                SynonymRelationship sr = srItr.next();
 +                System.out.println("Synonym Title Cache : " + sr.getSynonym().getTitleCache());
 +                relToTitles.add(sr.getSynonym().getTitleCache());
 +                sr.getSynonym().setTitleCache(sr.getSynonym().getTitleCache() + ":updated");
 +
 +            }
 +            taxonService.merge(taxon);
 +
 +            Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +            Set<SynonymRelationship> synRelationsNew = taxonNew.getSynonymRelations();
 +
 +            Iterator<SynonymRelationship> srItrNew = synRelationsNew.iterator();
 +            Iterator<String> relToTitlesItr = relToTitles.iterator();
 +            while(srItrNew.hasNext() && relToTitlesItr.hasNext()) {
 +                SynonymRelationship srNew = srItrNew.next();
 +                String relToTitle = relToTitlesItr.next();
 +                System.out.println("New Synonym Title Cache: " + srNew.getSynonym().getTitleCache());
 +                Assert.assertTrue("Synonym Title caches should not be equal", srNew.getSynonym().getTitleCache().equals(relToTitle));
 +                srNew.getSynonym().setTitleCache(relToTitle);
 +            }
 +
 +            Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +
 +            Set<SynonymRelationship> synRelationsOld = taxonNew.getSynonymRelations();
 +            Iterator<SynonymRelationship> srItrOld = synRelationsOld.iterator();
 +            relToTitlesItr = relToTitles.iterator();
 +            while(srItrOld.hasNext() && relToTitlesItr.hasNext()) {
 +                SynonymRelationship srOld = srItrOld.next();
 +                String relToTitle = relToTitlesItr.next();
 +                System.out.println("New Synonym Title Cache: " + srOld.getSynonym().getTitleCache());
 +                Assert.assertEquals("Synonym Title caches should be equal", srOld.getSynonym().getTitleCache(), relToTitle);
 +
 +            }
 +        }
 +}
index 706c4a37cbe3e38fcda48384d93e14550ef1f700,0000000000000000000000000000000000000000..b0e1c9bccad551815779b713f3919ab4fab4821c
mode 100644,000000..100644
--- /dev/null
@@@ -1,276 -1,0 +1,276 @@@
-         name.setCombinationAuthorTeam(combAuthor);
 +/**
 + * Copyright (C) 2014 EDIT
 + * European Distributed Institute of Taxonomy
 + * http://www.e-taxonomy.eu
 + *
 + * The contents of this file are subject to the Mozilla Public License Version 1.1
 + * See LICENSE.TXT at the top of this package for the full license terms.
 + */
 +
 +package eu.etaxonomy.taxeditor.lazyloading;
 +
 +import java.util.Arrays;
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.Set;
 +import java.util.UUID;
 +
 +import org.apache.log4j.Logger;
 +import org.junit.Assert;
 +import org.junit.BeforeClass;
 +import org.junit.Ignore;
 +import org.junit.Test;
 +
 +import eu.etaxonomy.cdm.api.service.IClassificationService;
 +import eu.etaxonomy.cdm.api.service.ITaxonService;
 +import eu.etaxonomy.cdm.model.agent.Person;
 +import eu.etaxonomy.cdm.model.agent.Team;
 +import eu.etaxonomy.cdm.model.common.CdmBase;
 +import eu.etaxonomy.cdm.model.name.BotanicalName;
 +import eu.etaxonomy.cdm.model.name.NonViralName;
 +import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 +import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 +import eu.etaxonomy.cdm.model.taxon.Taxon;
 +import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 +import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
 +
 +
 +
 +/**
 + * Test class which tests remoting for persistent cdm entities.
 + *
 + * FIXME:Remoting saving tests are ignored until the merge development is underway
 + * @author c.mathew
 + *
 + */
 +//FIXME:Remoting need to create a proper dataset for this test
 +//Could be combined with AbstractLazyInitializerTest
 +@Ignore
 +public class RemoteLazyLoadingTest extends BaseRemotingTest {
 +
 +    private static final Logger logger = Logger.getLogger(RemoteLazyLoadingTest.class);
 +
 +    private static IClassificationService classificationService;
 +    private static ITaxonService taxonService;
 +
 +    private static List<TaxonNode> taxonNodes;
 +
 +    private final UUID taxonUuid1 = UUID.fromString("8217ef77-2ab1-4318-bd67-ccd0cdef07c4");
 +    private final UUID taxonUuid2 = UUID.fromString("ef96fafa-7750-4141-b31b-1ad1daab3e76");
 +
 +
 +    @BeforeClass
 +    public static void initializeRemoteLazyLoading() {
 +        taxonService = getRemoteApplicationController().getTaxonService();
 +
 +        classificationService= getRemoteApplicationController().getClassificationService();
 +        //List<Classification> classifications = classificationService.listClassifications(1,0,null,null);
 +//        Assert.assertFalse(classifications.isEmpty());
 +//
 +//        Classification classification = classifications.get(0);
 +//        Assert.assertNotNull(classification);
 +        taxonNodes = classificationService.getAllNodes();
 +        Assert.assertFalse(taxonNodes.isEmpty());
 +
 +    }
 +
 +
 +
 +    @Test
 +    public void testCDMEntityGet() {
 +        Iterator<TaxonNode> taxonNodeItr = taxonNodes.iterator();
 +        int maxcount = 30;
 +        int count = 0;
 +        while(taxonNodeItr.hasNext() && count <= maxcount) {
 +            TaxonNode taxonNode = taxonNodeItr.next();
 +            Assert.assertNotNull(taxonNode);
 +
 +            Taxon taxon = taxonNode.getTaxon();
 +            Assert.assertNotNull(taxon);
 +
 +            String taxonTitle = taxon.getTitleCache();
 +            logger.info("Taxon : " + taxonTitle);
 +
 +            TaxonNameBase name = taxon.getName();
 +            Assert.assertNotNull(name);
 +
 +            String nameTitle = name.getTitleCache();
 +            logger.info("Taxon Name : " + nameTitle);
 +
 +            count++;
 +        }
 +
 +
 +    }
 +
 +    @Test
 +    public void test() {
 +
 +    }
 +
 +    @Test
 +    public void testCDMEntitySaveEager() {
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +        String oldTitleCache = taxon.getTitleCache();
 +
 +        System.out.println("Taxon title : " + oldTitleCache);
 +
 +        taxon.setTitleCache(oldTitleCache + ":updated");
 +        taxonService.merge(taxon);
 +
 +        Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +        System.out.println("New Taxon Title : " + taxonNew.getTitleCache());
 +
 +        Assert.assertTrue("Title caches should not be equal",oldTitleCache.equals(taxonNew.getTitleCache()));
 +
 +        taxonNew.setTitleCache(oldTitleCache);
 +        taxonService.merge(taxonNew);
 +
 +        Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +        System.out.println("Old Taxon Title : " + taxonOld.getTitleCache());
 +
 +        Assert.assertEquals("Title caches should be equal",oldTitleCache,taxonOld.getTitleCache());
 +
 +    }
 +
 +
 +    @Test
 +    public void testCDMEntityUpdate() {
 +
 +        Team combAuthor = Team.NewInstance();
 +        combAuthor.addTeamMember(Person.NewTitledInstance("test member"));
 +        BotanicalName name = BotanicalName.NewInstance(null, "Test1", null, null, null, null, null, null, null);
-         Team team = CdmBase.deproxy(nvn.getCombinationAuthorTeam(),Team.class);
++        name.setCombinationAuthorship(combAuthor);
 +        Taxon taxon = Taxon.NewInstance(name, null);
 +        UUID taxonUuid = taxonService.save(taxon);
 +
 +        //        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +        //        NonViralName nvn = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        //        String oldTitleCache = nvn.getTitleCache();
 +        //        System.out.println("Taxon Name Title : " + oldTitleCache);
 +        //        nvn.setTitleCache(oldTitleCache + ":updated", true);
 +        //
 +        //        taxon.setTitleCache(oldTitleCache + ":updated",true);
 +        //        try {
 +        //            taxonService.update(taxon);
 +        //        } catch (LazyInitializationException lie) {
 +        //            lie.printStackTrace();
 +        //        }
 +
 +        List<String> TAXON_INIT_STRATEGY = Arrays.asList(new String[] {
 +                "name"
 +        });
 +        Taxon taxonNew = (Taxon)taxonService.findTaxonByUuid(taxonUuid,TAXON_INIT_STRATEGY);
 +        NonViralName nvn = CdmBase.deproxy(taxonNew.getName(),NonViralName.class);
-         name.setCombinationAuthorTeam(combAuthor);
++        Team team = CdmBase.deproxy(nvn.getCombinationAuthorship(),Team.class);
 +        String oldTitleCache = nvn.getTitleCache();
 +        System.out.println("Taxon Name Title : " + oldTitleCache);
 +        nvn.setTitleCache(oldTitleCache + ":updated", true);
 +        taxonService.update(taxonNew);
 +
 +    }
 +
 +
 +    @Test
 +    public void testCDMEntitySaveLazy() {
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +        NonViralName nvn = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        String oldTitleCache = nvn.getTitleCache();
 +        System.out.println("Taxon Name Title : " + oldTitleCache);
 +        nvn.setTitleCache(oldTitleCache + ":updated", true);
 +        taxonService.update(taxon);
 +
 +        //            Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +        //            NonViralName nvnNew = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        //            System.out.println("New Taxon Name Title : " + nvnNew.getTitleCache());
 +        //
 +        //            Assert.assertNotEquals("Title caches should not be equal",oldTitleCache,nvnNew.getTitleCache());
 +        //
 +        //            nvnNew.setTitleCache(oldTitleCache, true);
 +        //            taxonService.update(taxon);
 +        //
 +        //            Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +        //            NonViralName nvnOld = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        //            System.out.println("Old Taxon Name Title : " + nvnNew.getTitleCache());
 +        //
 +        //            Assert.assertEquals("Title caches should be equal",oldTitleCache,nvnOld.getTitleCache());
 +    }
 +
 +    @Test
 +    public void testCDMEntitySaveLazyNew() {
 +        Team combAuthor = Team.NewInstance();
 +        combAuthor.addTeamMember(Person.NewTitledInstance("test member"));
 +        BotanicalName name = BotanicalName.NewInstance(null, "Test1", null, null, null, null, null, null, null);
++        name.setCombinationAuthorship(combAuthor);
 +        Taxon tax1 = Taxon.NewInstance(name, null);
 +        UUID taxonUuid1 = taxonService.save(tax1);
 +
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +        NonViralName nvn = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        String oldTitleCache = nvn.getTitleCache();
 +        logger.info("Taxon Name Title : " + oldTitleCache);
 +        nvn.setTitleCache(oldTitleCache + ":updated",false);
 +        taxonService.update(taxon);
 +
 +        Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +        NonViralName nvnNew = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        logger.info("New Taxon Name Title : " + nvnNew.getTitleCache());
 +
 +        Assert.assertTrue("Title caches should not be equal",oldTitleCache.equals(nvnNew.getTitleCache()));
 +
 +        nvnNew.setTitleCache(oldTitleCache, true);
 +        taxonService.update(taxon);
 +
 +        Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +        NonViralName nvnOld = CdmBase.deproxy(taxon.getName(),NonViralName.class);
 +        logger.info("Old Taxon Name Title : " + nvnNew.getTitleCache());
 +
 +        Assert.assertEquals("Title caches should be equal",oldTitleCache,nvnOld.getTitleCache());
 +    }
 +    @Ignore
 +    @Test
 +    public void testCDMEntitySaveCollection() {
 +        Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
 +
 +        Set<SynonymRelationship> synRelations = taxon.getSynonymRelations();
 +        Set<String> relToTitles = new HashSet<String>();
 +        Iterator<SynonymRelationship> srItr = synRelations.iterator();
 +        while(srItr.hasNext()) {
 +            SynonymRelationship sr = srItr.next();
 +            System.out.println("Synonym Title Cache : " + sr.getSynonym().getTitleCache());
 +            relToTitles.add(sr.getSynonym().getTitleCache());
 +            sr.getSynonym().setTitleCache(sr.getSynonym().getTitleCache() + ":updated");
 +
 +        }
 +        taxonService.merge(taxon);
 +
 +        Taxon taxonNew = (Taxon)taxonService.find(taxonUuid1);
 +        Set<SynonymRelationship> synRelationsNew = taxonNew.getSynonymRelations();
 +
 +        Iterator<SynonymRelationship> srItrNew = synRelationsNew.iterator();
 +        Iterator<String> relToTitlesItr = relToTitles.iterator();
 +        while(srItrNew.hasNext() && relToTitlesItr.hasNext()) {
 +            SynonymRelationship srNew = srItrNew.next();
 +            String relToTitle = relToTitlesItr.next();
 +            System.out.println("New Synonym Title Cache: " + srNew.getSynonym().getTitleCache());
 +            Assert.assertTrue("Synonym Title caches should not be equal", srNew.getSynonym().getTitleCache().equals(relToTitle));
 +            srNew.getSynonym().setTitleCache(relToTitle);
 +        }
 +
 +        Taxon taxonOld = (Taxon)taxonService.find(taxonUuid1);
 +
 +        Set<SynonymRelationship> synRelationsOld = taxonNew.getSynonymRelations();
 +        Iterator<SynonymRelationship> srItrOld = synRelationsOld.iterator();
 +        relToTitlesItr = relToTitles.iterator();
 +        while(srItrOld.hasNext() && relToTitlesItr.hasNext()) {
 +            SynonymRelationship srOld = srItrOld.next();
 +            String relToTitle = relToTitlesItr.next();
 +            System.out.println("New Synonym Title Cache: " + srOld.getSynonym().getTitleCache());
 +            Assert.assertEquals("Synonym Title caches should be equal", srOld.getSynonym().getTitleCache(), relToTitle);
 +
 +        }
 +    }
 +}
diff --combined pom.xml
index 596acbe4e5e916dae3f6140c2ffdd136b81e16d7,512e6c2984ec798e565434ca68344b7d049b0a9d..2e392d28741673ee101afea2a66e9cdb9c5eb95e
+++ b/pom.xml
    <properties>
      <java.codelevel>1.6</java.codelevel>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-     <cdmlib.version>3.6.1-SNAPSHOT</cdmlib.version>
+     <cdmlib.version>3.6.3-SNAPSHOT</cdmlib.version>
      <!-- TODO can we use project.version ????? -->
      <tycho.version>0.22.0</tycho.version>
      <taxeditor.version>3.6.1-SNAPSHOT</taxeditor.version>
      <update.dir>snapshot</update.dir>
 +    <unitils.version>3.4.2</unitils.version>
    </properties>
    <modules>
      <module>eu.etaxonomy.taxeditor.cdmlib</module>
        </url>
      </repository>
    </distributionManagement>
 +
  </project>