2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.remoting
;
12 import java
.util
.HashSet
;
13 import java
.util
.Iterator
;
15 import java
.util
.UUID
;
17 import org
.junit
.Assert
;
18 import org
.junit
.Test
;
19 import org
.unitils
.UnitilsJUnit4
;
20 import org
.unitils
.database
.annotations
.Transactional
;
21 import org
.unitils
.database
.util
.TransactionMode
;
22 import org
.unitils
.spring
.annotation
.SpringApplicationContext
;
23 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
25 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
26 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
27 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
28 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationship
;
29 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
33 * This test class is a testing ground for solving the hibernate lazy loading problem using aspects
38 @SpringApplicationContext("classpath:/eu/etaxonomy/cdm/remotingApplicationContext.xml")
39 @Transactional(TransactionMode
.DISABLED
)
40 public class RemoteLazyLoadingTest
extends UnitilsJUnit4
{
43 private ITaxonService taxonService
;
45 private UUID taxonUuid1
= UUID
.fromString("8217ef77-2ab1-4318-bd67-ccd0cdef07c4");
46 private UUID taxonUuid2
= UUID
.fromString("ef96fafa-7750-4141-b31b-1ad1daab3e76");
52 // public void testLazyLoading(){
54 // Taxon taxon = (Taxon)taxonService.find(taxonUuid1);
55 // System.out.println("Taxon title : " + taxon.getTitleCache());
56 // taxon.setTitleCache("Taxon Title Cache 1");
57 // taxonService.merge(taxon);
59 // NonViralName nvn = CdmBase.deproxy(taxon.getName(),NonViralName.class);
62 // System.out.println("name : " + nvn.getTitleCache());
63 // nvn.setTitleCache("Taxon Name Title Cache 1");
64 // taxonService.merge(taxon);
66 // Reference ref = taxon.getSec();
67 // System.out.println("Secundum : " + ref.getTitleCache());
69 // Rank rank = nvn.getRank();
70 // System.out.println("rank : " + rank.getTitleCache());
72 // Set<SynonymRelationship> synRelations = taxon.getSynonymRelations();
73 // Iterator<SynonymRelationship> srItr = synRelations.iterator();
74 // while(srItr.hasNext()) {
75 // SynonymRelationship sr = srItr.next();
76 // System.out.println("Synonym Relationship : " + sr.getType().getTitleCache());
77 // sr.getType().setTitleCache(sr.getType().getTitleCache() + "*");
79 // taxonService.merge(taxon);
81 // Set<TaxonRelationship> taxonRelationsFrom = taxon.getRelationsFromThisTaxon();
82 // Iterator<TaxonRelationship> trItrFrom = taxonRelationsFrom.iterator();
83 // while(trItrFrom.hasNext()) {
84 // TaxonRelationship tr = trItrFrom.next();
85 // System.out.println("Taxon From Relationship : " + tr.getType().getTitleCache());
86 // tr.getType().setTitleCache(tr.getType().getTitleCache() + "*");
88 // taxonService.merge(taxon);
89 // Set<TaxonRelationship> taxonRelationsTo = taxon.getRelationsToThisTaxon();
90 // Iterator<TaxonRelationship> trItrTo = taxonRelationsTo.iterator();
91 // while(trItrTo.hasNext()) {
92 // TaxonRelationship tr = trItrTo.next();
93 // System.out.println("Taxon To Relationship : " + tr.getType().getTitleCache());
94 // tr.getType().setTitleCache(tr.getType().getTitleCache() + "*");
96 // taxonService.merge(taxon);
100 public void testCDMEntityGet() {
101 Taxon taxon
= (Taxon
)taxonService
.find(taxonUuid1
);
102 System
.out
.println("Taxon title : " + taxon
.getTitleCache());
104 NonViralName nvn
= CdmBase
.deproxy(taxon
.getName(),NonViralName
.class);
105 System
.out
.println("name : " + nvn
.getTitleCache());
110 public void testCDMCollectionGet() {
111 Taxon taxon
= (Taxon
)taxonService
.find(taxonUuid1
);
112 System
.out
.println("Taxon title : " + taxon
.getTitleCache());
114 Set
<SynonymRelationship
> synRelations
= taxon
.getSynonymRelations();
115 Iterator
<SynonymRelationship
> srItr
= synRelations
.iterator();
116 while(srItr
.hasNext()) {
117 SynonymRelationship sr
= srItr
.next();
118 System
.out
.println("Synonym Relationship : " + sr
.getType().getTitleCache());
123 public void testCDMEntitySaveEager() {
124 Taxon taxon
= (Taxon
)taxonService
.find(taxonUuid1
);
125 String oldTitleCache
= taxon
.getTitleCache();
127 System
.out
.println("Taxon title : " + oldTitleCache
);
129 taxon
.setTitleCache(oldTitleCache
+ ":updated");
130 taxonService
.merge(taxon
);
132 Taxon taxonNew
= (Taxon
)taxonService
.find(taxonUuid1
);
133 System
.out
.println("New Taxon Title : " + taxonNew
.getTitleCache());
135 Assert
.assertNotEquals("Title caches should not be equal",oldTitleCache
,taxonNew
.getTitleCache());
137 taxonNew
.setTitleCache(oldTitleCache
);
138 taxonService
.merge(taxonNew
);
140 Taxon taxonOld
= (Taxon
)taxonService
.find(taxonUuid1
);
141 System
.out
.println("Old Taxon Title : " + taxonOld
.getTitleCache());
143 Assert
.assertEquals("Title caches should be equal",oldTitleCache
,taxonOld
.getTitleCache());
148 public void testCDMEntitySaveLazy() {
149 Taxon taxon
= (Taxon
)taxonService
.find(taxonUuid1
);
151 NonViralName nvn
= CdmBase
.deproxy(taxon
.getName(),NonViralName
.class);
152 String oldTitleCache
= nvn
.getTitleCache();
153 System
.out
.println("Taxon Name Title : " + oldTitleCache
);
154 nvn
.setTitleCache(oldTitleCache
+ ":updated");
155 taxonService
.merge(taxon
);
157 Taxon taxonNew
= (Taxon
)taxonService
.find(taxonUuid1
);
158 NonViralName nvnNew
= CdmBase
.deproxy(taxon
.getName(),NonViralName
.class);
159 System
.out
.println("New Taxon Name Title : " + nvnNew
.getTitleCache());
161 Assert
.assertNotEquals("Title caches should not be equal",oldTitleCache
,nvnNew
.getTitleCache());
163 nvnNew
.setTitleCache(oldTitleCache
);
164 taxonService
.merge(taxon
);
166 Taxon taxonOld
= (Taxon
)taxonService
.find(taxonUuid1
);
167 NonViralName nvnOld
= CdmBase
.deproxy(taxon
.getName(),NonViralName
.class);
168 System
.out
.println("Old Taxon Name Title : " + nvnNew
.getTitleCache());
170 Assert
.assertEquals("Title caches should be equal",oldTitleCache
,nvnOld
.getTitleCache());
174 public void testCDMEntitySaveCollection() {
175 Taxon taxon
= (Taxon
)taxonService
.find(taxonUuid1
);
177 Set
<SynonymRelationship
> synRelations
= taxon
.getSynonymRelations();
178 Set
<String
> relToTitles
= new HashSet
<String
>();
179 Iterator
<SynonymRelationship
> srItr
= synRelations
.iterator();
180 while(srItr
.hasNext()) {
181 SynonymRelationship sr
= srItr
.next();
182 System
.out
.println("Synonym Title Cache : " + sr
.getSynonym().getTitleCache());
183 relToTitles
.add(sr
.getSynonym().getTitleCache());
184 sr
.getSynonym().setTitleCache(sr
.getSynonym().getTitleCache() + ":updated");
187 taxonService
.merge(taxon
);
189 Taxon taxonNew
= (Taxon
)taxonService
.find(taxonUuid1
);
190 Set
<SynonymRelationship
> synRelationsNew
= taxonNew
.getSynonymRelations();
192 Iterator
<SynonymRelationship
> srItrNew
= synRelationsNew
.iterator();
193 Iterator
<String
> relToTitlesItr
= relToTitles
.iterator();
194 while(srItrNew
.hasNext() && relToTitlesItr
.hasNext()) {
195 SynonymRelationship srNew
= srItrNew
.next();
196 String relToTitle
= relToTitlesItr
.next();
197 System
.out
.println("New Synonym Title Cache: " + srNew
.getSynonym().getTitleCache());
198 Assert
.assertNotEquals("Synonym Title caches should not be equal", srNew
.getSynonym().getTitleCache(), relToTitle
);
199 srNew
.getSynonym().setTitleCache(relToTitle
);
202 Taxon taxonOld
= (Taxon
)taxonService
.find(taxonUuid1
);
204 Set
<SynonymRelationship
> synRelationsOld
= taxonNew
.getSynonymRelations();
205 Iterator
<SynonymRelationship
> srItrOld
= synRelationsOld
.iterator();
206 relToTitlesItr
= relToTitles
.iterator();
207 while(srItrOld
.hasNext() && relToTitlesItr
.hasNext()) {
208 SynonymRelationship srOld
= srItrOld
.next();
209 String relToTitle
= relToTitlesItr
.next();
210 System
.out
.println("New Synonym Title Cache: " + srOld
.getSynonym().getTitleCache());
211 Assert
.assertEquals("Synonym Title caches should be equal", srOld
.getSynonym().getTitleCache(), relToTitle
);