Merge branch 'release/4.1.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / session / CdmEntitySessionAwareTest.java
1 // $Id$
2 /**
3 * Copyright (C) 2014 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.session;
11
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.Iterator;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Set;
18 import java.util.UUID;
19
20 import org.apache.log4j.Logger;
21 import org.junit.Assert;
22 import org.junit.BeforeClass;
23 import org.junit.Ignore;
24 import org.junit.Test;
25 import org.unitils.dbunit.annotation.DataSet;
26
27 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
28 import eu.etaxonomy.cdm.api.service.DeleteResult;
29 import eu.etaxonomy.cdm.api.service.ICommonService;
30 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
31 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
32 import eu.etaxonomy.cdm.api.service.ITaxonService;
33 import eu.etaxonomy.cdm.api.service.ITermService;
34 import eu.etaxonomy.cdm.api.service.IUserService;
35 import eu.etaxonomy.cdm.api.service.IVocabularyService;
36 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
37 import eu.etaxonomy.cdm.model.agent.AgentBase;
38 import eu.etaxonomy.cdm.model.agent.Person;
39 import eu.etaxonomy.cdm.model.common.CdmBase;
40 import eu.etaxonomy.cdm.model.common.Credit;
41 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
42 import eu.etaxonomy.cdm.model.common.Extension;
43 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
44 import eu.etaxonomy.cdm.model.common.Language;
45 import eu.etaxonomy.cdm.model.common.LanguageString;
46 import eu.etaxonomy.cdm.model.common.TermType;
47 import eu.etaxonomy.cdm.model.common.TermVocabulary;
48 import eu.etaxonomy.cdm.model.description.KeyStatement;
49 import eu.etaxonomy.cdm.model.description.PolytomousKey;
50 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
51 import eu.etaxonomy.cdm.model.media.Rights;
52 import eu.etaxonomy.cdm.model.taxon.Taxon;
53 import eu.etaxonomy.taxeditor.httpinvoker.RemotingSessionAwareTest;
54 import eu.etaxonomy.taxeditor.httpinvoker.TestThread;
55
56
57 /**
58 * @author cmathew
59 * @date 7 Oct 2014
60 *
61 */
62 @DataSet
63 public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
64
65 private static final Logger logger = Logger.getLogger(CdmEntitySessionAwareTest.class);
66
67 UUID polytomousKeyUuid = UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66");
68 UUID subKeyUuid = UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01");
69 //UUID polytomousKeyUuid = UUID.fromString("bab66772-2c83-428a-bb6d-655d12ac6097");
70 UUID taxon1Uuid = UUID.fromString("2b336df7-29e8-4f79-985f-66502739d22f");
71 UUID personUuid = UUID.fromString("945d08f2-eb92-45b6-9252-6275ea6d338b");
72
73
74
75 IPolytomousKeyService polytomousKeyService = getRemoteApplicationController().getPolytomousKeyService();
76 IPolytomousKeyNodeService polytomousKeyNodeService = getRemoteApplicationController().getPolytomousKeyNodeService();
77 ICommonService commonService = getRemoteApplicationController().getCommonService();
78 ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
79 IVocabularyService vocabularyService = getRemoteApplicationController().getVocabularyService();
80 ITermService termService = getRemoteApplicationController().getTermService();
81 IUserService userService = getRemoteApplicationController().getUserService();
82
83 //Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
84
85
86
87 @BeforeClass
88 public static void initializePolytomousKeyTest() {
89 }
90
91
92 @Test
93 @Ignore
94 public void readAllPolytomousKeys() {
95 List<PolytomousKey> pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
96 Iterator<PolytomousKey> pKeysItr = pKeys.iterator();
97 Assert.assertEquals(pKeysItr.next().getUuid(),UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01"));
98 Assert.assertEquals(pKeysItr.next().getUuid(),UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66"));
99 }
100
101
102 @Test
103 //@DataSet("PolytomousKeyTest.readPolytmousKeyData.xml")
104 public void readPolytmousKeyData() {
105 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
106 Set<Taxon> taxonomicScope = pKey.getTaxonomicScope();
107 Iterator<Taxon> tsItr = taxonomicScope.iterator();
108 Taxon taxon = tsItr.next();
109
110 Assert.assertEquals("Achillea sec. Cyprus", taxon.getTitleCache());
111 Assert.assertEquals(tsItr.hasNext(), false);
112
113 List<Credit> credits = pKey.getCredits();
114 AgentBase agent = credits.get(0).getAgent();
115 Assert.assertEquals(agent.getId(),4809);
116 Assert.assertEquals(agent.getTitleCache(),"R. A. Graham");
117 Assert.assertEquals(credits.get(0).getText(),"Credits Text Test");
118
119 Set<Extension> exts = pKey.getExtensions();
120 Iterator<Extension> extItr = exts.iterator();
121 Extension ext = extItr.next();
122 Assert.assertEquals(ext.getValue(), "http://test.com");
123
124 Set<Rights> rights = pKey.getRights();
125 Iterator<Rights> rightsItr = rights.iterator();
126 Rights right = rightsItr.next();
127 Assert.assertEquals(right.getText(),"Rights Text Test");
128
129 Set<IdentifiableSource> sources = pKey.getSources();
130 Iterator<IdentifiableSource> sourcesItr = sources.iterator();
131 IdentifiableSource source = sourcesItr.next();
132 Assert.assertEquals(source.getId(), 23710);
133 source = sourcesItr.next();
134 Assert.assertEquals(source.getId(), 23711);
135
136 // TO DO : Added tests for Annotations , Markers
137 }
138
139
140
141 @Test
142 public void readPolytomousKeyDataFromNodes() {
143 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
144 PolytomousKeyNode rootNode = pKey.getRoot();
145
146
147 Assert.assertEquals(rootNode.getId(), 2750);
148
149 Assert.assertEquals(rootNode.getChildAt(0).getId(), 2751);
150 Assert.assertEquals(rootNode.getChildAt(0).getParent().getId(), rootNode.getId());
151 Assert.assertEquals(rootNode.getKey().getId(), pKey.getId());
152 Integer sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(0), "sortIndex");
153 Assert.assertEquals(sortIndex, new Integer(0));
154 String statement = "Capitula without ligulate ray-florets; leaves entire or subentire";
155 Assert.assertEquals(rootNode.getChildAt(0).getStatement().getLabelText(Language.ENGLISH()), statement);
156
157 Assert.assertEquals(rootNode.getChildAt(1).getId(), 2753);
158 Assert.assertEquals(rootNode.getChildAt(1).getParent().getId(), rootNode.getId());
159 Assert.assertEquals(rootNode.getChildAt(1).getKey().getId(), pKey.getId());
160 sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(1), "sortIndex");
161 Assert.assertEquals(sortIndex, new Integer(1));
162 statement = "Capitula with ligulate ray-florets; leaves pinnatisect";
163 Assert.assertEquals(rootNode.getChildAt(1).getStatement().getLabelText(Language.ENGLISH()), statement);
164
165 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getId(), 2754);
166 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getParent().getId(), rootNode.getChildAt(1).getId());
167 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getKey().getId(), pKey.getId());
168 sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(1).getChildAt(0), "sortIndex");
169 Assert.assertEquals(sortIndex, new Integer(0));
170 statement = "Ray-florets yellow";
171 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getStatement().getLabelText(Language.ENGLISH()), statement);
172 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getChildAt(0).getTaxon().getTitleCache(), "Achillea arabica Kotschy sec. Cyprus");
173 }
174
175 @Test
176 public void addGrandChildPolytomousKeyNode() {
177
178 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
179 PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0);
180 PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
181 rootChildNode.addChild(grandChildNode);
182
183 polytomousKeyService.merge(pKey, true);
184 grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
185 Assert.assertTrue(0 != grandChildNode.getId());
186 KeyStatement ks = KeyStatement.NewInstance("test");
187 grandChildNode.setStatement(ks);
188 polytomousKeyService.merge(pKey, true);
189
190 //grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
191 //KeyStatement ks = grandChildNode.getStatement();
192 Assert.assertTrue(0 != ks.getId());
193
194 }
195
196 @Test
197 public void addGreatGrandChildPolytomousKeyNode() {
198
199 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
200 PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0);
201 PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
202 rootChildNode.addChild(grandChildNode);
203
204
205 polytomousKeyNodeService.merge(grandChildNode);
206
207
208 Assert.assertFalse(pKey.getRoot().getChildAt(0).getChildAt(0).getId() == 0);
209 }
210
211 @Test
212 public void savePolytomousKeyNodeData() {
213 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
214
215 PolytomousKeyNode pkeynode = pkey.getRoot();
216 String newQuestion = "New Question";
217 String newStatement = "New Statement";
218
219 Assert.assertEquals("Question 1",pkeynode.getQuestion().getLabel().get(Language.ENGLISH()).getText());
220 for(PolytomousKeyNode node : pkeynode.getChildren()) {
221
222 node.setQuestion(null);
223 node.setStatement(null);
224 }
225 //FIXME:Remoting Add tests for feature after fixing problem
226
227 //Feature feature = pkeynode.getFeature();
228 //Assert.assertEquals(feature.getTitleCache(),"Systematics");
229 //pkeynode.setFeature(null);
230
231 Assert.assertEquals(pkeynode.getChildAt(0).getModifyingText().get(Language.ENGLISH()).getText(),"Modifying Text 1a");
232 String modifyingText = "Modifying Text 1a updated";
233
234 //pkeynode.getChildAt(0).putModifyingText(Language.ENGLISH(), modifyingText);
235
236 Assert.assertEquals(pkeynode.getChildAt(0).getSubkey().getId(),751);
237 Assert.assertEquals("Asphodeline", pkeynode.getChildAt(0).getSubkey().getTitleCache());
238 Assert.assertNull(pkeynode.getChildAt(1).getTaxon());
239 Taxon taxon = CdmBase.deproxy(taxonService.find(taxon1Uuid),Taxon.class);
240 pkeynode.getChildAt(1).setTaxon(taxon);
241
242 polytomousKeyService.merge(pkey);
243
244 pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
245
246
247 pkeynode = pkey.getRoot();
248 for(PolytomousKeyNode node : pkeynode.getChildren()) {
249 Assert.assertNull(node.getQuestion());
250 node.setQuestion(KeyStatement.NewInstance(Language.ENGLISH(),newQuestion));
251 Assert.assertNull(node.getStatement());
252 node.setStatement(KeyStatement.NewInstance(Language.ENGLISH(),newStatement));
253 }
254
255 Assert.assertEquals(pkeynode.getChildAt(1).getTaxon(), taxon);
256
257 polytomousKeyService.merge(pkey);
258
259 pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
260
261 pkeynode = pkey.getRoot();
262 for(PolytomousKeyNode node : pkeynode.getChildren()) {
263 Assert.assertNotNull(node.getQuestion());
264 Map<Language, LanguageString> label = node.getQuestion().getLabel();
265 Assert.assertEquals(newQuestion, label.get(Language.ENGLISH()).getText());
266 Assert.assertNotNull(node.getStatement());
267 Assert.assertEquals(newStatement, node.getStatement().getLabel(Language.ENGLISH()).getText());
268 }
269 //Assert.assertEquals(pkeynode.getFeature().getId(), feature.getId());
270
271 }
272
273
274 @Test
275 public void savePolytomousKeyNodeDataWithSameSubKey() {
276
277 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
278
279
280 PolytomousKeyNode pkeynode = pkey.getRoot();
281
282 PolytomousKey subkey1 = CdmBase.deproxy(pkeynode.getChildAt(0).getSubkey(), PolytomousKey.class);
283 String subkey1title = subkey1.getTitleCache();
284 subkey1.setTitleCache(subkey1title + "test", true);
285
286
287 PolytomousKey subkey2 = CdmBase.deproxy(pkeynode.getChildAt(1).getChildAt(0).getSubkey(), PolytomousKey.class);
288 String subkey2title = subkey2.getTitleCache();
289 subkey2.setTitleCache(subkey2title + "test", true);
290
291 Assert.assertSame(subkey1, subkey2);
292
293 polytomousKeyService.merge(pkey);
294 }
295
296 @Test
297 public void savePolytomousKeyNodeDataWithSameSubKeyUsingService() {
298
299 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
300
301
302 PolytomousKeyNode pkeynode = pkey.getRoot();
303 //because of the check for null values in getChildren it isn't a persistent list anymore
304 // PersistentCollection children = (PersistentCollection) pkeynode.getChildren();
305 PolytomousKeyNode childNode0 = (PolytomousKeyNode)commonService.get(pkeynode.getUuid(), "children", 0);
306 PolytomousKey subkey1 = CdmBase.deproxy(childNode0.getSubkey(),PolytomousKey.class);
307 String subkey1title = subkey1.getTitleCache();
308 subkey1.setTitleCache(subkey1title + "test", true);
309
310 PolytomousKeyNode childNode1 = (PolytomousKeyNode)commonService.get(pkeynode.getUuid(), "children", 1);
311 PolytomousKey subkey2 = CdmBase.deproxy(childNode1.getSubkey(),PolytomousKey.class);
312 String subkey2title = subkey2.getTitleCache();
313 subkey2.setTitleCache(subkey2title + "test", true);
314
315 Assert.assertNotSame(childNode0, childNode1);
316
317 Assert.assertSame(subkey1, subkey2);
318
319 polytomousKeyService.merge(pkey);
320 }
321
322
323
324 @Test
325 public void savePolytomousKeyNodeDataWithSameLanguageInLabel() {
326
327 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
328 PolytomousKeyNode pkeynode = pkey.getRoot();
329
330 Map<Language, LanguageString> label1 = pkeynode.getQuestion().getLabel();
331 label1.size();
332
333
334 Map<Language, LanguageString> label2 = pkeynode.getChildAt(0).getStatement().getLabel();
335 label2.size();
336
337
338 polytomousKeyService.merge(pkey);
339 }
340
341 @Test
342 public void deleteSubKeyInPolytomousSubKeyWithoutInitializing() {
343 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
344
345
346 PolytomousKeyNode rootNode = pKey.getRoot();
347
348 PolytomousKeyNode childNode = rootNode.getChildAt(0);
349 PolytomousKey subKey = HibernateProxyHelper.deproxy( childNode.getSubkey(), PolytomousKey.class);;
350
351
352 DeleteResult result = polytomousKeyService.delete(subKey.getUuid());
353 //A used subKey can't be deleted
354 if (result.isOk()){
355 Assert.fail();
356 }
357
358
359 Set<Integer> ids = new HashSet<Integer>();
360 ids.add(2753);
361 ids.add(2754);
362 ids.add(2751);
363 List<PolytomousKeyNode> nodes = polytomousKeyNodeService.findById(ids);
364 for (PolytomousKeyNode child:nodes){
365 child.setSubkey(null);
366 // polytomousKeyNodeService.merge(child);
367 }
368 polytomousKeyNodeService.merge(nodes, true);
369 result = polytomousKeyService.delete(subKey.getUuid());
370 if (!result.isOk()){
371 Assert.fail();
372 }
373
374
375
376
377 // retrieving subkey shows its null
378 subKey = CdmBase.deproxy(polytomousKeyService.find(subKeyUuid),PolytomousKey.class);
379 Assert.assertNull(subKey);
380
381 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
382
383
384 }
385
386
387 @Test
388 public void deleteSubKeyInPolytomousNode() {
389 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
390
391
392 PolytomousKeyNode rootNode = pKey.getRoot();
393 List<PolytomousKeyNode> children = rootNode.getChildren();
394 PolytomousKeyNode child = rootNode.getChildAt(0);
395 polytomousKeyNodeService.delete(child.getUuid(), true);
396
397 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
398
399 rootNode = pKey.getRoot();
400 children = rootNode.getChildren();
401 Assert.assertFalse(children.contains(child));
402 }
403
404 @Test
405 public void deleteSubKeyInPolytomousSubKeyAfterInitializing() {
406 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
407
408
409 PolytomousKeyNode rootNode = pKey.getRoot();
410 PolytomousKeyNode child = rootNode.getChildAt(0);
411 PolytomousKey subKey = child.getSubkey();
412 // this call initializes the subkey
413 subKey.getRoot();
414
415 polytomousKeyService.delete(subKey);
416
417 // since subKey was initialized before the delete, it will be
418 // accesible even after the delete. This behaviour is similar
419 // to hibernate session delete where the deleted object is
420 // made transient, but not deleted from the object graph
421
422 PolytomousKeyNode subKeyRootNode = subKey.getRoot();
423 Assert.assertNotNull(subKey);
424 }
425
426 @Test
427 public void saveNewTermVocabulary() {
428 TermVocabulary termVocabulary =
429 TermVocabulary.NewInstance(TermType.Feature,
430 null,
431 "Untitled",
432 null,
433 null);
434 try {
435 List<TermVocabulary<DefinedTermBase>> vocabularies = vocabularyService.findByTermType(TermType.Feature);
436
437 for(TermVocabulary vocab : vocabularies) {
438 vocab.getTermsOrderedByLabels(Language.ENGLISH());
439 }
440
441 termVocabulary = vocabularyService.merge(termVocabulary);
442 vocabularies.add(termVocabulary);
443 termVocabulary.setLabel("Test");
444 vocabularyService.merge(new ArrayList<TermVocabulary>(vocabularies));
445 } finally {
446 vocabularyService.delete(termVocabulary);
447 }
448 }
449
450 @Test
451 public void saveNewTerm() {
452 UUID vocNameFeatureUuid = UUID.fromString("fa7ca3eef-4092-49e1-beec-ed5096193e5e");
453 UUID vocFeatureUuid = UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8");
454 DefinedTermBase newTerm = TermType.Feature.getEmptyDefinedTermBase();
455 newTerm.setLabel("CreateTest");
456
457 try {
458
459 Assert.assertNotNull(newTerm);
460 TermVocabulary vocNameFeature = vocabularyService.find(vocNameFeatureUuid);
461 TermVocabulary vocFeature = vocabularyService.find(vocFeatureUuid);
462
463 List<TermVocabulary> vocs = new ArrayList<TermVocabulary>();
464
465 vocs.add(vocNameFeature);
466 vocs.add(vocFeature);
467
468 vocNameFeature.addTerm(newTerm);
469
470 vocs = vocabularyService.merge(vocs);
471 for(TermVocabulary voc : vocs) {
472 if(voc.getUuid().equals(vocNameFeatureUuid)) {
473 vocNameFeature = voc;
474 }
475 }
476
477 Assert.assertTrue(vocNameFeature.getTerms().contains(newTerm));
478
479 for(Object obj : vocNameFeature.getTerms()) {
480 DefinedTermBase dtb = (DefinedTermBase)obj;
481 if("CreateTest".equals(dtb.getLabel())) {
482 newTerm = dtb;
483 Assert.assertNotNull(dtb.getCreatedBy());
484 Assert.assertNotNull(dtb.getCreated());
485 } else {
486 Assert.assertNull(dtb.getCreatedBy());
487 }
488 }
489 newTerm.setLabel("UpdateTest");
490 newTerm = termService.merge(newTerm);
491 Assert.assertNotNull(newTerm.getUpdatedBy());
492 Assert.assertNotNull(newTerm.getUpdated());
493
494 Assert.assertNull(vocNameFeature.getCreatedBy());
495 Assert.assertNull(vocFeature.getCreatedBy());
496 } finally {
497 if(termService.find(newTerm.getUuid()) != null) {
498 termService.delete(newTerm.getUuid());
499 }
500 }
501 }
502
503
504 @Test
505 public void updatePerson() {
506 // Test for #5138
507 Person person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(personUuid);
508 person.setFirstname("Me");
509 CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
510 }
511
512
513 @Test
514 public void createPerson() {
515 // Test for #5138
516 Person person = Person.NewInstance();
517 person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
518 person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(person.getUuid());
519 person.setFirstname("Some");
520 CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
521 }
522
523 @Test
524 public void testThreadLocalActiveSession() throws InterruptedException {
525 MockSessionOwner<CdmBase> so1 = new MockSessionOwner<CdmBase>();
526 final ICdmEntitySession activeSession = getCdmEntitySessionManager().newSession(so1, true);
527 TestThread thread = new TestThread(true) {
528 @Override
529 public void doRun() throws InterruptedException {
530 ICdmEntitySession threadLocalActiveSession = getCdmEntitySessionManager().getActiveSession();
531 Assert.assertEquals(threadLocalActiveSession, activeSession);
532 }
533 };
534 invokeThread(thread);
535 MockSessionOwner<CdmBase> so2 = new MockSessionOwner<CdmBase>();
536 ICdmEntitySession newActiveSession = getCdmEntitySessionManager().newSession(so2, true);
537 Assert.assertFalse(activeSession.equals(newActiveSession));
538 thread.unblock();
539
540 }
541 }