]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.db.tests/src/org/simantics/db/tests/api/delayedWrite/DelayedWriteGraphVirtualGraphHandling.java
Added missing org.simantics.db.{tests,testing} plug-ins.
[simantics/platform.git] / tests / org.simantics.db.tests / src / org / simantics / db / tests / api / delayedWrite / DelayedWriteGraphVirtualGraphHandling.java
1 package org.simantics.db.tests.api.delayedWrite;
2
3 import java.util.concurrent.atomic.AtomicReference;
4
5 import org.junit.Test;
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.VirtualGraph;
9 import org.simantics.db.WriteGraph;
10 import org.simantics.db.common.request.DelayedWriteRequest;
11 import org.simantics.db.common.request.ReadRequest;
12 import org.simantics.db.common.request.WriteResultRequest;
13 import org.simantics.db.exception.DatabaseException;
14 import org.simantics.db.service.VirtualGraphSupport;
15 import org.simantics.db.testing.annotation.Fails;
16 import org.simantics.db.testing.base.ExistingDatabaseTest;
17
18 /**
19  * This originated from Apros issue #3296.
20  * 
21  * @author Tuukka Lehtonen
22  */
23 public class DelayedWriteGraphVirtualGraphHandling extends ExistingDatabaseTest {
24
25     @Test
26     @Fails
27     public void test() throws Exception {
28         final VirtualGraphSupport vgs = getSession().getService(VirtualGraphSupport.class);
29         final VirtualGraph mem = getSession().getService(VirtualGraphSupport.class).getMemoryPersistent("MEM");
30         final VirtualGraph ws = getSession().getService(VirtualGraphSupport.class).getWorkspacePersistent("WS");
31
32         final AtomicReference<Resource> transientName = new AtomicReference<Resource>();
33         final AtomicReference<Resource> persistentDescription = new AtomicReference<Resource>();
34
35         DelayedWriteRequest r = new DelayedWriteRequest() {
36             @Override
37             public void perform(WriteGraph graph) throws DatabaseException {
38                 final Resource r = graph.newResource();
39                 graph.claim(r, L0.InstanceOf, null, L0.Entity);
40
41                 transientName.set( graph.sync(new WriteResultRequest<Resource>(mem) {
42                     @Override
43                     public Resource perform(WriteGraph graph) throws DatabaseException {
44                         Resource vr = graph.newResource();
45                         graph.claim(vr, L0.InstanceOf, null, L0.String);
46                         graph.claim(r, L0.HasName, vr);
47                         return vr;
48                     }
49                 }) );
50                 persistentDescription.set( graph.sync(new WriteResultRequest<Resource>(ws) {
51                     @Override
52                     public Resource perform(WriteGraph graph) throws DatabaseException {
53                         Resource vr = graph.newResource();
54                         graph.claim(vr, L0.InstanceOf, null, L0.String);
55                         graph.claim(r, L0.HasDescription, vr);
56                         return vr;
57                     }
58                 }) );
59             }
60         };
61         getSession().sync(r);
62
63         // Validate that the data was actually written into virtual graphs.
64         getSession().sync(new ReadRequest() {
65             @Override
66             public void run(ReadGraph graph) throws DatabaseException {
67                 VirtualGraph nameVg = vgs.getGraph(graph, transientName.get());
68                 VirtualGraph descVg = vgs.getGraph(graph, persistentDescription.get());
69                 assertEquals(nameVg, mem);
70                 assertEquals(descVg, ws);
71             }
72         });
73     }
74
75 }