]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.db.tests/src/org/simantics/db/tests/api/request/exception/GraphSyncReadWithProcedureThrowsNoSingleResultException.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 / GraphSyncReadWithProcedureThrowsNoSingleResultException.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.exception.NoSingleResultException;
19 import org.simantics.db.procedure.Procedure;
20 import org.simantics.db.request.Read;
21 import org.simantics.db.testing.base.ExistingDatabaseTest;
22 import org.simantics.layer0.Layer0;
23
24 public class GraphSyncReadWithProcedureThrowsNoSingleResultException extends ExistingDatabaseTest {
25         
26     private String failure = null;
27     
28         @Test
29         public void test() throws Exception {
30                 
31                 Session session = getSession();
32                 
33                 try {
34                 
35                 session.syncRequest(new Read<Object>() {
36     
37                         @Override
38                         public Object perform(ReadGraph graph) throws DatabaseException {
39                             
40                             graph.syncRequest(new Read<Object>() {
41
42                         @Override
43                         public Object perform(ReadGraph graph) throws DatabaseException {
44                             Layer0 b = Layer0.getInstance(graph);
45                             return graph.getSingleObject(graph.getRootLibrary(), b.Inherits);
46                         }
47                                 
48                             }, new Procedure<Object>() {
49
50                         @Override
51                         public void exception(Throwable t) {
52                             
53                             if(!(t instanceof NoSingleResultException)) failure = "syncRequest did not throw a correct 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                 } catch(DatabaseException e) {
76                     
77             if(failure != null) fail(failure);
78                     
79                     if (DEBUG)
80                         e.printStackTrace();
81                     
82                     return;
83                     
84                 } catch(Throwable t) {
85                     
86                 fail("syncRequest threw unexpected throwable " + t);
87
88                 }
89                 
90                 fail("syncRequest did not throw");
91                 
92         }
93
94 }