public final class io.helidon.config.ScheduledPollingStrategy extends java.lang.Object implements io.helidon.config.spi.PollingStrategy
{
private static final java.util.logging.Logger LOGGER;
private final io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy;
private final boolean defaultExecutor;
private java.util.concurrent.ScheduledExecutorService executor;
private java.util.concurrent.ScheduledFuture scheduledFuture;
private io.helidon.config.spi.PollingStrategy$Polled polled;
private void <init>(io.helidon.config.ScheduledPollingStrategy$Builder)
{
io.helidon.config.ScheduledPollingStrategy$RecurringPolicy v;
io.helidon.config.ScheduledPollingStrategy$Builder v;
io.helidon.config.ScheduledPollingStrategy v;
io.helidon.config.ConfigThreadFactory v;
java.util.concurrent.ScheduledExecutorService v, v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v := @parameter: io.helidon.config.ScheduledPollingStrategy$Builder;
specialinvoke v.<java.lang.Object: void <init>()>();
v = v.<io.helidon.config.ScheduledPollingStrategy$Builder: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy>;
v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy> = v;
v = v.<io.helidon.config.ScheduledPollingStrategy$Builder: java.util.concurrent.ScheduledExecutorService executor>;
if v != null goto label;
v = new io.helidon.config.ConfigThreadFactory;
specialinvoke v.<io.helidon.config.ConfigThreadFactory: void <init>(java.lang.String)>("file-watch-polling");
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory)>(v);
v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor> = v;
v.<io.helidon.config.ScheduledPollingStrategy: boolean defaultExecutor> = 1;
goto label;
label:
v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor> = v;
v.<io.helidon.config.ScheduledPollingStrategy: boolean defaultExecutor> = 0;
label:
return;
}
public static io.helidon.config.ScheduledPollingStrategy create(io.helidon.config.ScheduledPollingStrategy$RecurringPolicy, java.util.concurrent.ScheduledExecutorService)
{
io.helidon.config.ScheduledPollingStrategy$RecurringPolicy v;
io.helidon.config.ScheduledPollingStrategy$Builder v, v, v;
io.helidon.config.ScheduledPollingStrategy v;
java.util.concurrent.ScheduledExecutorService v;
v := @parameter: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v = staticinvoke <io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$Builder builder()>();
v = virtualinvoke v.<io.helidon.config.ScheduledPollingStrategy$Builder: io.helidon.config.ScheduledPollingStrategy$Builder recurringPolicy(io.helidon.config.ScheduledPollingStrategy$RecurringPolicy)>(v);
v = virtualinvoke v.<io.helidon.config.ScheduledPollingStrategy$Builder: io.helidon.config.ScheduledPollingStrategy$Builder executor(java.util.concurrent.ScheduledExecutorService)>(v);
v = virtualinvoke v.<io.helidon.config.ScheduledPollingStrategy$Builder: io.helidon.config.ScheduledPollingStrategy build()>();
return v;
}
public static io.helidon.config.ScheduledPollingStrategy$Builder builder()
{
io.helidon.config.ScheduledPollingStrategy$Builder v;
v = new io.helidon.config.ScheduledPollingStrategy$Builder;
specialinvoke v.<io.helidon.config.ScheduledPollingStrategy$Builder: void <init>()>();
return v;
}
public synchronized void start(io.helidon.config.spi.PollingStrategy$Polled)
{
io.helidon.config.ConfigThreadFactory v;
io.helidon.config.ConfigException v;
io.helidon.config.spi.PollingStrategy$Polled v;
io.helidon.config.ScheduledPollingStrategy v;
java.util.concurrent.ScheduledExecutorService v, v, v;
boolean v, v, v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v := @parameter: io.helidon.config.spi.PollingStrategy$Polled;
v = v.<io.helidon.config.ScheduledPollingStrategy: boolean defaultExecutor>;
if v == 0 goto label;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: boolean isShutdown()>();
if v == 0 goto label;
v = new io.helidon.config.ConfigThreadFactory;
specialinvoke v.<io.helidon.config.ConfigThreadFactory: void <init>(java.lang.String)>("file-watch-polling");
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory)>(v);
v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor> = v;
label:
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: boolean isShutdown()>();
if v == 0 goto label;
v = new io.helidon.config.ConfigException;
specialinvoke v.<io.helidon.config.ConfigException: void <init>(java.lang.String)>("Cannot start a scheduled polling strategy, as the executor service is shutdown");
throw v;
label:
v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.spi.PollingStrategy$Polled polled> = v;
specialinvoke v.<io.helidon.config.ScheduledPollingStrategy: void scheduleNext()>();
return;
}
public synchronized void stop()
{
java.util.concurrent.ScheduledFuture v, v;
io.helidon.config.ScheduledPollingStrategy v;
java.util.concurrent.ScheduledExecutorService v;
boolean v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledFuture scheduledFuture>;
if v == null goto label;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledFuture scheduledFuture>;
interfaceinvoke v.<java.util.concurrent.ScheduledFuture: boolean cancel(boolean)>(1);
label:
v = v.<io.helidon.config.ScheduledPollingStrategy: boolean defaultExecutor>;
if v == 0 goto label;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
staticinvoke <io.helidon.config.ConfigUtils: void shutdownExecutor(java.util.concurrent.ScheduledExecutorService)>(v);
label:
return;
}
private void scheduleNext()
{
java.util.concurrent.ScheduledFuture v;
long v;
java.lang.Runnable v;
java.util.logging.Level v, v;
java.util.concurrent.RejectedExecutionException v;
java.time.Duration v;
java.util.concurrent.ScheduledExecutorService v, v;
java.lang.String v, v;
boolean v;
io.helidon.config.ScheduledPollingStrategy$RecurringPolicy v;
java.util.logging.Logger v, v;
java.util.concurrent.TimeUnit v;
io.helidon.config.ScheduledPollingStrategy v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
label:
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
v = staticinvoke <io.helidon.config.ScheduledPollingStrategy$fireEvent__390: java.lang.Runnable bootstrap$(io.helidon.config.ScheduledPollingStrategy)>(v);
v = v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy>;
v = interfaceinvoke v.<io.helidon.config.ScheduledPollingStrategy$RecurringPolicy: java.time.Duration interval()>();
v = virtualinvoke v.<java.time.Duration: long toMillis()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: java.util.concurrent.ScheduledFuture schedule(java.lang.Runnable,long,java.util.concurrent.TimeUnit)>(v, v, v);
v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledFuture scheduledFuture> = v;
label:
goto label;
label:
v := @caughtexception;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: boolean isShutdown()>();
if v == 0 goto label;
v = <io.helidon.config.ScheduledPollingStrategy: java.util.logging.Logger LOGGER>;
v = <java.util.logging.Level: java.util.logging.Level FINEST>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (io.helidon.config.ScheduledPollingStrategy)>(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[])>("Executor service is shut down, polling is terminated for \u0001");
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, v, v);
goto label;
label:
v = <io.helidon.config.ScheduledPollingStrategy: java.util.logging.Logger LOGGER>;
v = <java.util.logging.Level: java.util.logging.Level SEVERE>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (io.helidon.config.ScheduledPollingStrategy)>(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 to schedule next polling for \u, polling will stop");
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, v, v);
label:
return;
catch java.util.concurrent.RejectedExecutionException from label to label with label;
}
private synchronized void fireEvent()
{
io.helidon.config.ScheduledPollingStrategy$RecurringPolicy v, v;
java.time.Instant v;
io.helidon.config.spi.PollingStrategy$Polled v;
io.helidon.config.ScheduledPollingStrategy v;
io.helidon.config.spi.ChangeEventType v;
int[] v;
int v, v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v = v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.spi.PollingStrategy$Polled polled>;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = interfaceinvoke v.<io.helidon.config.spi.PollingStrategy$Polled: io.helidon.config.spi.ChangeEventType poll(java.time.Instant)>(v);
v = <io.helidon.config.ScheduledPollingStrategy$1: int[] $SwitchMap$io$helidon$config$spi$ChangeEventType>;
v = virtualinvoke v.<io.helidon.config.spi.ChangeEventType: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
default: goto label;
};
label:
v = v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy>;
interfaceinvoke v.<io.helidon.config.ScheduledPollingStrategy$RecurringPolicy: void shorten()>();
goto label;
label:
v = v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy>;
interfaceinvoke v.<io.helidon.config.ScheduledPollingStrategy$RecurringPolicy: void lengthen()>();
label:
specialinvoke v.<io.helidon.config.ScheduledPollingStrategy: void scheduleNext()>();
return;
}
java.util.concurrent.ScheduledExecutorService executor()
{
java.util.concurrent.ScheduledExecutorService v;
io.helidon.config.ScheduledPollingStrategy v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v = v.<io.helidon.config.ScheduledPollingStrategy: java.util.concurrent.ScheduledExecutorService executor>;
return v;
}
public java.lang.String toString()
{
io.helidon.config.ScheduledPollingStrategy$RecurringPolicy v;
java.lang.String v;
io.helidon.config.ScheduledPollingStrategy v;
v := @this: io.helidon.config.ScheduledPollingStrategy;
v = v.<io.helidon.config.ScheduledPollingStrategy: io.helidon.config.ScheduledPollingStrategy$RecurringPolicy recurringPolicy>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (io.helidon.config.ScheduledPollingStrategy$RecurringPolicy)>(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[])>("ScheduledPollingStrategy{recurringPolicy=\u0001}");
return v;
}
static void <clinit>()
{
java.lang.Class v;
java.lang.String v;
java.util.logging.Logger v;
v = class "Lio/helidon/config/ScheduledPollingStrategy;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <java.util.logging.Logger: java.util.logging.Logger getLogger(java.lang.String)>(v);
<io.helidon.config.ScheduledPollingStrategy: java.util.logging.Logger LOGGER> = v;
return;
}
}