import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
+import org.simantics.db.AsyncReadGraph;
import org.simantics.db.ReadGraph;
import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener;
+import org.simantics.db.common.request.AsyncReadRequest;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.layer0.request.VariableRead;
import org.simantics.db.layer0.variable.Variable;
System.out.println(" " + node.getURI(graph));
}*/
- Semaphore done = new Semaphore(0);
-
- for(Variable node : nodes) {
-
- graph.asyncRequest(new NodeRequestE(node), new Listener<JSONObject>() {
+ graph.syncRequest(new AsyncReadRequest() {
+
+ @Override
+ public void run(AsyncReadGraph graph) {
+
+ for(Variable node : nodes) {
+
+ graph.asyncRequest(new NodeRequestE(node), new Listener<JSONObject>() {
- @Override
- public void execute(JSONObject result) {
- synchronized(rs) {
- rs.add(result);
- }
- done.release();
- }
+ @Override
+ public void execute(JSONObject result) {
+ synchronized(rs) {
+ rs.add(result);
+ }
+ }
- @Override
- public void exception(Throwable t) {
- t.printStackTrace();
- done.release();
- }
+ @Override
+ public void exception(Throwable t) {
+ t.printStackTrace();
+ }
- @Override
- public boolean isDisposed() {
- return true;
- }
+ @Override
+ public boolean isDisposed() {
+ return true;
+ }
+
+ });
+
+ }
- });
-
-// rs.add(graph.syncRequest(new NodeRequest(node), TransientCacheAsyncListener.<JSONObject>instance()));
-
- }
-
- try {
- boolean success = done.tryAcquire(nodes.size(), 10, TimeUnit.MILLISECONDS);
- while(!success) {
- success = done.tryAcquire(nodes.size(), 10, TimeUnit.MILLISECONDS);
- System.err.println("still trying to acquire semaphore, avail = " + done.availablePermits() );
- }
+ }
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
+ });
ArrayList<JSONObject> result = new ArrayList<JSONObject>(rs);
Collections.sort(result, new Comparator<JSONObject>() {