/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.db.tests.api.request.misc; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Test; import org.simantics.databoard.Bindings; import org.simantics.db.Resource; import org.simantics.db.Session; import org.simantics.db.WriteGraph; import org.simantics.db.common.primitiverequest.Value; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.common.request.WriteResultRequest; import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.Listener; import org.simantics.db.testing.base.ExistingDatabaseTest; import org.simantics.layer0.Layer0; /** * @author Tuukka Lehtonen */ public class NoneListenerTest extends ExistingDatabaseTest { static AtomicInteger execs = new AtomicInteger(0); static class TestListener implements Listener { @Override public void execute(String result) { execs.incrementAndGet(); } @Override public boolean isDisposed() { return false; } @Override public void exception(Throwable t) { t.printStackTrace(); } @Override public int hashCode() { return getClass().hashCode(); } @Override public boolean equals(Object obj) { return getClass().equals(obj.getClass()); } } @Test public void test() throws Exception { final Session session = getSession(); final Resource newResource = session.syncRequest(new WriteResultRequest() { @Override public Resource perform(WriteGraph g) throws DatabaseException { Layer0 b = Layer0.getInstance(g); Resource result = g.newResource(); g.claim(result, b.InstanceOf, null, b.Entity); g.claim(g.getRootLibrary(), b.ConsistsOf, result); g.claimValue(result, "Test", Bindings.STRING); return result; } }); TestListener l1 = new TestListener(); TestListener l2 = new TestListener(); session.syncRequest(new Value(newResource, Bindings.STRING), l1); session.syncRequest(new Value(newResource, Bindings.STRING), l2); assertEquals(execs.get(), 2); session.syncRequest(new WriteRequest() { @Override public void perform(WriteGraph graph) throws DatabaseException { graph.claimValue(newResource, "Test2", Bindings.STRING); } }); assertEquals(execs.get(), 3); } }