public class org.apache.isis.commons.internal.concurrent._ConcurrentTaskList extends java.lang.Object
{
private static final org.apache.logging.log4j.Logger log;
private final java.lang.String name;
private final java.util.List tasks;
private final java.util.concurrent.atomic.AtomicBoolean wasStarted;
private final java.util.concurrent.CountDownLatch allFinishedLatch;
private final org.apache.isis.commons.concurrent.AwaitableLatch awaitableLatch;
private final java.util.concurrent.atomic.LongAdder tasksExecuted;
private long executionTimeNanos;
public java.util.List getTasks()
{
java.util.List v, v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = staticinvoke <java.util.Collections: java.util.List unmodifiableList(java.util.List)>(v);
return v;
}
public org.apache.isis.commons.internal.concurrent._ConcurrentTaskList addTask(org.apache.isis.commons.internal.concurrent._ConcurrentTask)
{
java.lang.Throwable v;
org.apache.isis.commons.internal.concurrent._ConcurrentTask v;
java.lang.IllegalStateException v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
java.util.List v, v;
boolean v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: org.apache.isis.commons.internal.concurrent._ConcurrentTask;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
entermonitor v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.AtomicBoolean wasStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Tasks already started execution, can no longer modify collection of tasks!");
throw v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
public org.apache.isis.commons.internal.concurrent._ConcurrentTaskList addTasks(java.util.Collection)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
java.util.Collection v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
java.util.List v, v;
boolean v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: java.util.Collection;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
entermonitor v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.AtomicBoolean wasStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Tasks already started execution, can no longer modify collection of tasks!");
throw v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
public org.apache.isis.commons.internal.concurrent._ConcurrentTaskList submit(org.apache.isis.commons.internal.concurrent._ConcurrentContext)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
java.util.concurrent.atomic.LongAdder v;
java.util.concurrent.atomic.AtomicBoolean v, v;
long v, v, v;
java.util.ArrayList v;
java.util.concurrent.Future v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList$1 v;
int v;
java.util.concurrent.ExecutorService v;
boolean v, v, v, v;
java.util.Iterator v, v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
java.util.concurrent.CountDownLatch v;
java.util.List v, v, v, v;
org.apache.isis.commons.internal.concurrent._ConcurrentContext v;
java.lang.Object v, v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: org.apache.isis.commons.internal.concurrent._ConcurrentContext;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
entermonitor v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.AtomicBoolean wasStarted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Tasks already started execution, can not start again!");
throw v;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.AtomicBoolean wasStarted>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = staticinvoke <java.lang.System: long nanoTime()>();
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentContext: boolean shouldRunSequential()>();
if v == 0 goto label;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTask: void run()>();
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.LongAdder tasksExecuted>;
virtualinvoke v.<java.util.concurrent.atomic.LongAdder: void increment()>();
goto label;
label:
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v - v;
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: long executionTimeNanos> = v;
specialinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: void onFinished(org.apache.isis.commons.internal.concurrent._ConcurrentContext)>(v);
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.CountDownLatch allFinishedLatch>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
return v;
label:
v = new java.util.ArrayList;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentContext: java.util.concurrent.ExecutorService executorService>;
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.lang.Runnable)>(v);
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new org.apache.isis.commons.internal.concurrent._ConcurrentTaskList$1;
specialinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList$1: void <init>(org.apache.isis.commons.internal.concurrent._ConcurrentTaskList,java.util.ArrayList,long,org.apache.isis.commons.internal.concurrent._ConcurrentContext)>(v, v, v, v);
virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList$1: void start()>();
return v;
catch java.lang.Throwable from label to label with label;
}
public org.apache.isis.commons.concurrent.AwaitableLatch latch()
{
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
org.apache.isis.commons.concurrent.AwaitableLatch v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.isis.commons.concurrent.AwaitableLatch awaitableLatch>;
return v;
}
public void await()
{
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
org.apache.isis.commons.concurrent.AwaitableLatch v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.isis.commons.concurrent.AwaitableLatch latch()>();
virtualinvoke v.<org.apache.isis.commons.concurrent.AwaitableLatch: void await()>();
return;
}
public java.time.Duration getExecutionTime()
{
java.time.temporal.ChronoUnit v;
java.time.Duration v;
long v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: long executionTimeNanos>;
v = <java.time.temporal.ChronoUnit: java.time.temporal.ChronoUnit NANOS>;
v = staticinvoke <java.time.Duration: java.time.Duration of(long,java.time.temporal.TemporalUnit)>(v, v);
return v;
}
private void onFinished(org.apache.isis.commons.internal.concurrent._ConcurrentContext)
{
org.apache.logging.log4j.Level v;
java.lang.Integer v;
java.lang.Long v;
boolean v, v, v;
java.util.List v, v;
org.apache.logging.log4j.Logger v, v, v, v, v;
org.apache.isis.commons.internal.concurrent._ConcurrentContext v;
java.lang.Throwable v, v;
java.util.concurrent.atomic.LongAdder v;
java.lang.Object[] v;
java.lang.Double v;
long v, v;
int v;
java.lang.String v, v, v, v, v, v;
double v;
java.util.Iterator v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
java.lang.Object v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: org.apache.isis.commons.internal.concurrent._ConcurrentContext;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTask: java.lang.Throwable getFailedWith()>();
if v == null goto label;
v = <org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String)>("----------------------------------------");
v = <org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log>;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed TaskList: \u0001");
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String)>(v);
v = <org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log>;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTask: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed Task: \u0001");
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String)>(v);
v = <org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log>;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTask: java.lang.Throwable getFailedWith()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String,java.lang.Throwable)>("----------------------------------------", v);
goto label;
label:
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentContext: boolean enableExecutionLogging>;
if v != 0 goto label;
return;
label:
v = <org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log>;
v = <org.apache.logging.log4j.Level: org.apache.logging.log4j.Level INFO>;
v = newarray (java.lang.Object)[5];
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.lang.String getName()>();
v[0] = v;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.LongAdder tasksExecuted>;
v = virtualinvoke v.<java.util.concurrent.atomic.LongAdder: long longValue()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentContext: boolean shouldRunSequential()>();
if v == 0 goto label;
v = "sequential";
goto label;
label:
v = "concurrent";
label:
v[3] = v;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: long executionTimeNanos>;
v = 1.0E-6 * v;
v = staticinvoke <java.lang.Double: java.lang.Double valueOf(double)>(v);
v[4] = v;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void printf(org.apache.logging.log4j.Level,java.lang.String,java.lang.Object[])>(v, "TaskList \'%s\' running %d/%d tasks %s, took %.3f milliseconds ", v);
return;
}
public org.apache.isis.commons.internal.concurrent._ConcurrentTaskList addRunnable(java.lang.String, java.lang.Runnable)
{
org.apache.isis.commons.internal.concurrent._ConcurrentTask v, v;
java.lang.String v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v, v;
java.lang.Runnable v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Runnable;
v = staticinvoke <org.apache.isis.commons.internal.concurrent._ConcurrentTask: org.apache.isis.commons.internal.concurrent._ConcurrentTask of(java.lang.Runnable)>(v);
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTask: org.apache.isis.commons.internal.concurrent._ConcurrentTask withName(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList addTask(org.apache.isis.commons.internal.concurrent._ConcurrentTask)>(v);
return v;
}
public org.apache.isis.commons.internal.concurrent._ConcurrentTaskList submit(org.apache.isis.commons.internal.concurrent._ConcurrentContext$_ConcurrentContextBuilder)
{
org.apache.isis.commons.internal.concurrent._ConcurrentContext v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v, v;
org.apache.isis.commons.internal.concurrent._ConcurrentContext$_ConcurrentContextBuilder v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: org.apache.isis.commons.internal.concurrent._ConcurrentContext$_ConcurrentContextBuilder;
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentContext$_ConcurrentContextBuilder: org.apache.isis.commons.internal.concurrent._ConcurrentContext build()>();
v = virtualinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList submit(org.apache.isis.commons.internal.concurrent._ConcurrentContext)>(v);
return v;
}
private void <init>(java.lang.String)
{
java.util.concurrent.atomic.LongAdder v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
org.apache.isis.commons.concurrent.AwaitableLatch v;
java.util.ArrayList v;
java.util.concurrent.CountDownLatch v, v;
java.lang.String v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <org.apache.isis.commons.internal.collections._Lists: java.util.ArrayList newArrayList()>();
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.List tasks> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.AtomicBoolean wasStarted> = v;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.CountDownLatch allFinishedLatch> = v;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.CountDownLatch allFinishedLatch>;
v = staticinvoke <org.apache.isis.commons.concurrent.AwaitableLatch: org.apache.isis.commons.concurrent.AwaitableLatch of(java.util.concurrent.CountDownLatch)>(v);
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.isis.commons.concurrent.AwaitableLatch awaitableLatch> = v;
v = new java.util.concurrent.atomic.LongAdder;
specialinvoke v.<java.util.concurrent.atomic.LongAdder: void <init>()>();
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.util.concurrent.atomic.LongAdder tasksExecuted> = v;
v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.lang.String name> = v;
return;
}
public static org.apache.isis.commons.internal.concurrent._ConcurrentTaskList named(java.lang.String)
{
java.lang.String v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
v := @parameter: java.lang.String;
v = new org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
specialinvoke v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: void <init>(java.lang.String)>(v);
return v;
}
public java.lang.String getName()
{
java.lang.String v;
org.apache.isis.commons.internal.concurrent._ConcurrentTaskList v;
v := @this: org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
v = v.<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: java.lang.String name>;
return v;
}
static void <clinit>()
{
org.apache.logging.log4j.Logger v;
v = staticinvoke <org.apache.logging.log4j.LogManager: org.apache.logging.log4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/isis/commons/internal/concurrent/_ConcurrentTaskList;");
<org.apache.isis.commons.internal.concurrent._ConcurrentTaskList: org.apache.logging.log4j.Logger log> = v;
return;
}
}