package org.simantics.db.tests.api.request.external; import junit.framework.Assert; import org.junit.Test; import org.simantics.Simantics; import org.simantics.db.ReadGraph; import org.simantics.db.Session; import org.simantics.db.procedure.Listener; import org.simantics.db.request.ExternalRead; import org.simantics.db.testing.cases.FreshDatabaseTest; public class CachingExternalReads extends FreshDatabaseTest { public static final String RESULT = "Hello World!"; static class MyExternalRead implements ExternalRead { int registerCount = 0; @Override public void register(ReadGraph graph, Listener procedure) { if (DEBUG) System.out.println("register"); ++registerCount; procedure.execute(RESULT); } @Override public void unregistered() { if (DEBUG) System.out.println("unregistered"); } public int getRegisterCount() { return registerCount; } }; @Test public void test() throws Exception { Session session = Simantics.getSession(); MyExternalRead read = new MyExternalRead(); for(int i=0;i<10;++i) { session.syncRequest(read, new Listener() { @Override public void execute(String result) { if (DEBUG) System.out.println("=> " + result); } @Override public void exception(Throwable t) { t.printStackTrace(); } @Override public boolean isDisposed() { return false; } }); } Assert.assertEquals(1, read.registerCount); } }