-package org.simantics.db.common;\r
-\r
-import java.util.concurrent.atomic.AtomicInteger;\r
-\r
-import org.simantics.db.AsyncReadGraph;\r
-import org.simantics.db.procedure.AsyncProcedure;\r
-\r
-final public class ProcedureBarrier<T> extends AtomicInteger {\r
-\r
- private static final long serialVersionUID = -2699547741948233067L;\r
- \r
- private volatile Throwable throwable;\r
- \r
- public ProcedureBarrier(int initial) {\r
- super(initial);\r
- }\r
- \r
- final synchronized public void except(Throwable throwable) {\r
- this.throwable = throwable;\r
- }\r
- \r
- final public Throwable getThrowable() {\r
- return throwable;\r
- }\r
- \r
- final public void dec(AsyncReadGraph graph, AsyncProcedure<T> procedure, Throwable throwable) {\r
- synchronized(this) {\r
- this.throwable = throwable;\r
- }\r
- if(decrementAndGet() == 0) {\r
- procedure.exception(graph, throwable);\r
- }\r
- }\r
-\r
- final public void dec(AsyncReadGraph graph, AsyncProcedure<T> procedure, T result) {\r
- if(decrementAndGet() == 0) {\r
- if(throwable != null) procedure.exception(graph, throwable);\r
- else procedure.execute(graph, result);\r
- }\r
- }\r
- \r
-}\r
+package org.simantics.db.common;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.simantics.db.AsyncReadGraph;
+import org.simantics.db.procedure.AsyncProcedure;
+
+final public class ProcedureBarrier<T> extends AtomicInteger {
+
+ private static final long serialVersionUID = -2699547741948233067L;
+
+ private volatile Throwable throwable;
+
+ public ProcedureBarrier(int initial) {
+ super(initial);
+ }
+
+ final synchronized public void except(Throwable throwable) {
+ this.throwable = throwable;
+ }
+
+ final public Throwable getThrowable() {
+ return throwable;
+ }
+
+ final public void dec(AsyncReadGraph graph, AsyncProcedure<T> procedure, Throwable throwable) {
+ synchronized(this) {
+ this.throwable = throwable;
+ }
+ if(decrementAndGet() == 0) {
+ procedure.exception(graph, throwable);
+ }
+ }
+
+ final public void dec(AsyncReadGraph graph, AsyncProcedure<T> procedure, T result) {
+ if(decrementAndGet() == 0) {
+ if(throwable != null) procedure.exception(graph, throwable);
+ else procedure.execute(graph, result);
+ }
+ }
+
+}