class org.glassfish.appclient.client.ExitManager extends java.lang.Object implements java.lang.Runnable
{
private final java.io.File tempStatusFile;
private final java.io.File statusFile;
private java.io.PrintWriter reportWriter;
private org.glassfish.appclient.client.ExitManager$CommentWriter commentWriter;
private java.lang.Throwable reportedFailure;
private java.util.concurrent.atomic.AtomicInteger reportedStatus;
private static final java.util.logging.Logger logger;
void <init>(java.lang.String)
{
java.lang.Runtime v;
org.glassfish.appclient.client.ExitManager v;
java.util.logging.Logger v;
java.io.File v, v, v;
java.util.logging.Level v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.Thread v;
java.lang.String v, v, v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.glassfish.appclient.client.ExitManager: java.lang.Throwable reportedFailure> = null;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.glassfish.appclient.client.ExitManager: java.util.concurrent.atomic.AtomicInteger reportedStatus> = v;
v = new java.io.File;
v = specialinvoke v.<org.glassfish.appclient.client.ExitManager: java.lang.String statusFileName(java.lang.String)>(v);
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v.<org.glassfish.appclient.client.ExitManager: java.io.File statusFile> = v;
v = new java.io.File;
v = specialinvoke v.<org.glassfish.appclient.client.ExitManager: java.lang.String statusTempFileName(java.lang.String)>(v);
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v.<org.glassfish.appclient.client.ExitManager: java.io.File tempStatusFile> = v;
v = v.<org.glassfish.appclient.client.ExitManager: java.io.File tempStatusFile>;
specialinvoke v.<org.glassfish.appclient.client.ExitManager: void prepareReportWriter(java.io.File)>(v);
v = staticinvoke <java.lang.Runtime: java.lang.Runtime getRuntime()>();
v = new java.lang.Thread;
specialinvoke v.<java.lang.Thread: void <init>(java.lang.Runnable)>(v);
virtualinvoke v.<java.lang.Runtime: void addShutdownHook(java.lang.Thread)>(v);
v = <org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String)>(v, "ExitManager initialized");
return;
}
public void run()
{
java.lang.Throwable v, v;
org.glassfish.appclient.client.ExitManager$CommentWriter v;
java.util.logging.Level v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.String v, v, v, v;
boolean v;
java.io.PrintWriter v, v;
org.glassfish.appclient.client.ExitManager v;
java.lang.RuntimeException v;
java.util.logging.Logger v;
java.io.File v, v, v, v;
v := @this: org.glassfish.appclient.client.ExitManager;
v = <org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String)>(v, "ExitManager writing output");
v = v.<org.glassfish.appclient.client.ExitManager: java.io.PrintWriter reportWriter>;
v = v.<org.glassfish.appclient.client.ExitManager: java.util.concurrent.atomic.AtomicInteger reportedStatus>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.concurrent.atomic.AtomicInteger)>(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[])>("jws.exit.status=\u0001");
virtualinvoke v.<java.io.PrintWriter: void println(java.lang.String)>(v);
v = v.<org.glassfish.appclient.client.ExitManager: java.lang.Throwable reportedFailure>;
if v == null goto label;
v = v.<org.glassfish.appclient.client.ExitManager: java.lang.Throwable reportedFailure>;
v = v.<org.glassfish.appclient.client.ExitManager: org.glassfish.appclient.client.ExitManager$CommentWriter commentWriter>;
virtualinvoke v.<java.lang.Throwable: void printStackTrace(java.io.PrintWriter)>(v);
label:
v = v.<org.glassfish.appclient.client.ExitManager: java.io.PrintWriter reportWriter>;
virtualinvoke v.<java.io.PrintWriter: void close()>();
v = v.<org.glassfish.appclient.client.ExitManager: java.io.File tempStatusFile>;
v = v.<org.glassfish.appclient.client.ExitManager: java.io.File statusFile>;
v = virtualinvoke v.<java.io.File: boolean renameTo(java.io.File)>(v);
if v != 0 goto label;
v = new java.lang.RuntimeException;
v = v.<org.glassfish.appclient.client.ExitManager: java.io.File tempStatusFile>;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = v.<org.glassfish.appclient.client.ExitManager: java.io.File statusFile>;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, 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[])>("Could not rename temp status file from \u to \u0001");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private void prepareReportWriter(java.io.File)
{
java.io.PrintWriter v, v;
org.glassfish.appclient.client.ExitManager v;
org.glassfish.appclient.client.ExitManager$CommentWriter v;
java.io.IOException v;
java.lang.RuntimeException v;
java.util.logging.Logger v;
java.io.File v;
java.util.logging.Level v;
java.lang.String v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: java.io.File;
label:
v = new java.io.PrintWriter;
specialinvoke v.<java.io.PrintWriter: void <init>(java.io.File)>(v);
v.<org.glassfish.appclient.client.ExitManager: java.io.PrintWriter reportWriter> = v;
v = new org.glassfish.appclient.client.ExitManager$CommentWriter;
v = v.<org.glassfish.appclient.client.ExitManager: java.io.PrintWriter reportWriter>;
specialinvoke v.<org.glassfish.appclient.client.ExitManager$CommentWriter: void <init>(java.io.PrintWriter)>(v);
v.<org.glassfish.appclient.client.ExitManager: org.glassfish.appclient.client.ExitManager$CommentWriter commentWriter> = v;
v = <org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Object)>(v, "PrintWriter for temp exit file {0} ready", v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.io.IOException from label to label with label;
}
private java.lang.String statusFileName(java.lang.String)
{
org.glassfish.appclient.client.ExitManager v;
java.lang.String v, v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: java.lang.String;
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[])>("\u.status");
return v;
}
private java.lang.String statusTempFileName(java.lang.String)
{
org.glassfish.appclient.client.ExitManager v;
java.lang.String v, v, v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.glassfish.appclient.client.ExitManager: java.lang.String statusFileName(java.lang.String)>(v);
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[])>("\u.tmp");
return v;
}
void recordFailure(java.lang.Throwable)
{
java.lang.Throwable v;
org.glassfish.appclient.client.ExitManager v;
java.util.logging.Logger v;
java.util.logging.Level v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: java.lang.Throwable;
v = <org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "Recording failure", v);
v.<org.glassfish.appclient.client.ExitManager: java.lang.Throwable reportedFailure> = v;
virtualinvoke v.<org.glassfish.appclient.client.ExitManager: void recordExit(int)>(1);
return;
}
void recordExit(int)
{
java.util.concurrent.atomic.AtomicInteger v;
int v;
org.glassfish.appclient.client.ExitManager v;
java.util.logging.Logger v;
java.lang.Integer v;
java.util.logging.Level v;
v := @this: org.glassfish.appclient.client.ExitManager;
v := @parameter: int;
v = <org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level FINE>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Object)>(v, "Recording exit {0}", v);
v = v.<org.glassfish.appclient.client.ExitManager: java.util.concurrent.atomic.AtomicInteger reportedStatus>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(v);
return;
}
static void <clinit>()
{
java.lang.Class v;
java.lang.String v;
java.util.logging.Logger v;
v = class "Lorg/glassfish/appclient/client/ExitManager;";
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);
<org.glassfish.appclient.client.ExitManager: java.util.logging.Logger logger> = v;
return;
}
}