]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.db.tests/src/org/simantics/db/tests/api/request/exception/GraphSyncReadWithProcedureThrowsDatabaseException.java
Added missing org.simantics.db.{tests,testing} plug-ins.
[simantics/platform.git] / tests / org.simantics.db.tests / src / org / simantics / db / tests / api / request / exception / GraphSyncReadWithProcedureThrowsDatabaseException.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.db.tests.api.request.exception;
13
14 import org.junit.Test;
15 import org.simantics.db.ReadGraph;
16 import org.simantics.db.Session;
17 import org.simantics.db.exception.DatabaseException;
18 import org.simantics.db.procedure.Procedure;
19 import org.simantics.db.request.Read;
20 import org.simantics.db.testing.base.ExistingDatabaseTest;
21
22 public class GraphSyncReadWithProcedureThrowsDatabaseException extends ExistingDatabaseTest {
23         
24     private String failure = null;
25         private Throwable exception; 
26         
27         @Test
28         public void test() throws Exception {
29                 
30                 Session session = getSession();
31                 
32                 try {
33                 
34                 session.syncRequest(new Read<Object>() {
35     
36                         @Override
37                         public Object perform(ReadGraph graph) throws DatabaseException {
38                             
39                             graph.syncRequest(new Read<Object>() {
40
41                         @Override
42                         public Object perform(ReadGraph graph) throws DatabaseException {
43                             DatabaseException e = new DatabaseException("Test");
44                             exception = e;
45                             throw e;
46                         }
47                                 
48                             }, new Procedure<Object>() {
49
50                         @Override
51                         public void exception(Throwable t) {
52                             
53                             if(t != exception) failure = "syncRequest did not throw the original exception";
54                             
55                                     if (DEBUG)
56                                         t.printStackTrace();
57                             
58                         }
59
60                         @Override
61                         public void execute(Object result) {
62
63                             failure = "Execute was called with " + result;
64                             
65                         }
66                                 
67                             });
68                             
69                             return null;
70                             
71     
72                         }
73                         
74                 });
75                 
76                 } catch(DatabaseException e) {
77                     
78                     if(e != exception) fail("syncRequest did not throw the original exception");
79             if(failure != null) fail(failure);
80             
81                     if (DEBUG)
82                         e.printStackTrace();
83                     
84                     return;
85                     
86                 } catch(Throwable t) {
87                     
88                 fail("syncRequest threw unexpected throwable " + t);
89
90                 }
91                 
92                 fail("syncRequest did not throw");
93                 
94         }
95
96 }