public class org.apache.tools.ant.taskdefs.PumpStreamHandler implements org.apache.tools.ant.taskdefs.ExecuteStreamHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.tools.ant.taskdefs.PumpStreamHandler
super_class: java.lang.Object
{
private java.lang.Thread outputThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private java.lang.Thread errorThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private java.lang.Thread inputThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private java.io.OutputStream out;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.OutputStream err;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream input;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private final boolean nonBlockingRead;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final long JOIN_TIMEOUT;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 200
public void <init>(java.io.OutputStream, java.io.OutputStream, java.io.InputStream, boolean);
descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
ifnonnull 3
2: new java.lang.NullPointerException
dup
ldc "out must not be null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: org.apache.tools.ant.taskdefs.PumpStreamHandler java.io.OutputStream java.io.OutputStream java.io.InputStream int
StackMap stack:
aload 2
ifnonnull 5
4: new java.lang.NullPointerException
dup
ldc "err must not be null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
6: aload 0
aload 2
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
7: aload 0
aload 3
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
8: aload 0
iload 4
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.nonBlockingRead:Z
9: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 10 1 out Ljava/io/OutputStream;
0 10 2 err Ljava/io/OutputStream;
0 10 3 input Ljava/io/InputStream;
0 10 4 nonBlockingRead Z
MethodParameters:
Name Flags
out
err
input
nonBlockingRead
public void <init>(java.io.OutputStream, java.io.OutputStream, java.io.InputStream);
descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
iconst_0
invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;Z)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 out Ljava/io/OutputStream;
0 2 2 err Ljava/io/OutputStream;
0 2 3 input Ljava/io/InputStream;
MethodParameters:
Name Flags
out
err
input
public void <init>(java.io.OutputStream, java.io.OutputStream);
descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
aconst_null
invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 out Ljava/io/OutputStream;
0 2 2 err Ljava/io/OutputStream;
MethodParameters:
Name Flags
out
err
public void <init>(java.io.OutputStream);
descriptor: (Ljava/io/OutputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 1
invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 outAndErr Ljava/io/OutputStream;
MethodParameters:
Name Flags
outAndErr
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getstatic java.lang.System.out:Ljava/io/PrintStream;
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
public void setProcessOutputStream(java.io.InputStream);
descriptor: (Ljava/io/InputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createProcessOutputPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 is Ljava/io/InputStream;
MethodParameters:
Name Flags
is
public void setProcessErrorStream(java.io.InputStream);
descriptor: (Ljava/io/InputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createProcessErrorPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 is Ljava/io/InputStream;
MethodParameters:
Name Flags
is
public void setProcessInputStream(java.io.OutputStream);
descriptor: (Ljava/io/OutputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
ifnull 3
1: aload 0
aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
aload 1
iconst_1
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.nonBlockingRead:Z
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
2: goto 4
3: StackMap locals:
StackMap stack:
aload 1
invokestatic org.apache.tools.ant.util.FileUtils.close:(Ljava/io/OutputStream;)V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 5 1 os Ljava/io/OutputStream;
MethodParameters:
Name Flags
os
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
1: aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
2: aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
public void stop();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
1: aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
2: goto 4
StackMap locals:
StackMap stack: java.io.IOException
3: pop
4: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
5: goto 7
StackMap locals:
StackMap stack: java.io.IOException
6: pop
7: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
8: aload 0
aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
9: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
Exception table:
from to target type
1 2 3 Class java.io.IOException
4 5 6 Class java.io.IOException
private void start(java.lang.Thread);
descriptor: (Ljava/lang/Thread;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 1
invokevirtual java.lang.Thread.start:()V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 3 1 t Ljava/lang/Thread;
MethodParameters:
Name Flags
t
protected final void finish(java.lang.Thread);
descriptor: (Ljava/lang/Thread;)V
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 3: aload 1
instanceof org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
ifeq 5
4: aload 1
checkcast org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper.getPumper:()Lorg/apache/tools/ant/taskdefs/StreamPumper;
astore 2
5: StackMap locals: org.apache.tools.ant.taskdefs.StreamPumper
StackMap stack:
aload 2
ifnull 7
aload 2
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
ifeq 7
6: return
7: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.Thread.isAlive:()Z
ifne 9
8: return
9: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 10: aload 2
ifnull 12
aload 2
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
ifne 12
11: aload 2
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.stop:()Lorg/apache/tools/ant/taskdefs/StreamPumper$PostStopHandle;
astore 3
12: StackMap locals: org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle
StackMap stack:
aload 3
ifnull 17
aload 3
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle.isInPostStopTasks:()Z
ifeq 17
13: aload 3
ldc 2
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle.awaitPostStopCompletion:(JLjava/util/concurrent/TimeUnit;)Z
pop
14: goto 17
15: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.Thread.interrupt:()V
16: aload 1
ldc 200
invokevirtual java.lang.Thread.join:(J)V
17: StackMap locals:
StackMap stack:
aload 2
ifnull 18
aload 2
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
ifne 21
StackMap locals:
StackMap stack:
18: aload 1
invokevirtual java.lang.Thread.isAlive:()Z
ifne 15
end local 3 end local 2 19: goto 21
StackMap locals: org.apache.tools.ant.taskdefs.PumpStreamHandler java.lang.Thread
StackMap stack: java.lang.InterruptedException
20: pop
21: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 22 1 t Ljava/lang/Thread;
3 19 2 s Lorg/apache/tools/ant/taskdefs/StreamPumper;
10 19 3 postStopHandle Lorg/apache/tools/ant/taskdefs/StreamPumper$PostStopHandle;
Exception table:
from to target type
2 6 20 Class java.lang.InterruptedException
7 8 20 Class java.lang.InterruptedException
9 19 20 Class java.lang.InterruptedException
MethodParameters:
Name Flags
t
protected java.io.OutputStream getErr();
descriptor: ()Ljava/io/OutputStream;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
protected java.io.OutputStream getOut();
descriptor: ()Ljava/io/OutputStream;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
protected void createProcessOutputPump(java.io.InputStream, java.io.OutputStream);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
aload 1
aload 2
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 is Ljava/io/InputStream;
0 2 2 os Ljava/io/OutputStream;
MethodParameters:
Name Flags
is
os
protected void createProcessErrorPump(java.io.InputStream, java.io.OutputStream);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
aload 1
aload 2
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 2 1 is Ljava/io/InputStream;
0 2 2 os Ljava/io/OutputStream;
MethodParameters:
Name Flags
is
os
protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
iconst_0
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;Z)Ljava/lang/Thread;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 1 1 is Ljava/io/InputStream;
0 1 2 os Ljava/io/OutputStream;
MethodParameters:
Name Flags
is
os
protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream, boolean);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;Z)Ljava/lang/Thread;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
iload 3
iconst_1
invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 1 1 is Ljava/io/InputStream;
0 1 2 os Ljava/io/OutputStream;
0 1 3 closeWhenExhausted Z
MethodParameters:
Name Flags
is
os
closeWhenExhausted
protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream, boolean, boolean);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new org.apache.tools.ant.taskdefs.StreamPumper
dup
aload 1
aload 2
iload 3
iload 4
invokespecial org.apache.tools.ant.taskdefs.StreamPumper.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)V
astore 5
start local 5 1: aload 5
iconst_1
invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.setAutoflush:(Z)V
2: new org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
dup
aload 5
invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper.<init>:(Lorg/apache/tools/ant/taskdefs/StreamPumper;)V
astore 6
start local 6 3: aload 6
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
4: aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
0 5 1 is Ljava/io/InputStream;
0 5 2 os Ljava/io/OutputStream;
0 5 3 closeWhenExhausted Z
0 5 4 nonBlockingIO Z
1 5 5 pumper Lorg/apache/tools/ant/taskdefs/StreamPumper;
3 5 6 result Ljava/lang/Thread;
MethodParameters:
Name Flags
is
os
closeWhenExhausted
nonBlockingIO
}
SourceFile: "PumpStreamHandler.java"
NestMembers:
org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
InnerClasses:
protected ThreadWithPumper = org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper of org.apache.tools.ant.taskdefs.PumpStreamHandler
final PostStopHandle = org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle of org.apache.tools.ant.taskdefs.StreamPumper