class org.glassfish.jersey.server.ChunkedOutput$1 implements java.util.concurrent.Callable<java.lang.Void>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.glassfish.jersey.server.ChunkedOutput$1
super_class: java.lang.Object
{
final org.glassfish.jersey.server.ChunkedOutput this$0;
descriptor: Lorg/glassfish/jersey/server/ChunkedOutput;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(org.glassfish.jersey.server.ChunkedOutput);
descriptor: (Lorg/glassfish/jersey/server/ChunkedOutput;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // org.glassfish.jersey.server.ChunkedOutput$1 this
0: .line 198
aload 0 /* this */
aload 1
putfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.glassfish.jersey.server.ChunkedOutput$1 this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/glassfish/jersey/server/ChunkedOutput$1;
MethodParameters:
Name Flags
this$0 final
public java.lang.Void call();
descriptor: ()Ljava/lang/Void;
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=7, args_size=1
start local 0 // org.glassfish.jersey.server.ChunkedOutput$1 this
0: .line 204
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.lock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: .line 205
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.flushing:Z
ifeq 4
2: .line 207
aload 3
monitorexit
3: aconst_null
areturn
4: .line 214
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 top top java.lang.Object
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.closed:Z
istore 1 /* shouldClose */
start local 1 // boolean shouldClose
5: .line 215
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.queue:Ljava/util/concurrent/BlockingDeque;
invokeinterface java.util.concurrent.BlockingDeque.poll:()Ljava/lang/Object;
astore 2 /* t */
start local 2 // java.lang.Object t
6: .line 216
aload 2 /* t */
ifnonnull 7
iload 1 /* shouldClose */
ifeq 8
7: .line 220
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object java.lang.Object
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
iconst_1
putfield org.glassfish.jersey.server.ChunkedOutput.flushing:Z
8: .line 204
StackMap locals:
StackMap stack:
aload 3
monitorexit
9: goto 71
end local 2 // java.lang.Object t
end local 1 // boolean shouldClose
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 top top java.lang.Object
StackMap stack: java.lang.Throwable
10: aload 3
monitorexit
11: athrow
start local 1 // boolean shouldClose
start local 2 // java.lang.Object t
12: .line 226
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.lock:Ljava/lang/Object;
dup
astore 3
monitorenter
13: .line 227
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
iconst_1
putfield org.glassfish.jersey.server.ChunkedOutput.touchingEntityStream:Z
14: .line 226
aload 3
monitorexit
15: goto 18
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object java.lang.Object
StackMap stack: java.lang.Throwable
16: aload 3
monitorexit
17: athrow
18: .line 230
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
invokevirtual org.glassfish.jersey.server.ContainerResponse.getEntityStream:()Ljava/io/OutputStream;
astore 3 /* origStream */
start local 3 // java.io.OutputStream origStream
19: .line 231
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.requestContext:Lorg/glassfish/jersey/server/ContainerRequest;
invokevirtual org.glassfish.jersey.server.ContainerRequest.getWorkers:()Lorg/glassfish/jersey/message/MessageBodyWorkers;
20: .line 232
aload 2 /* t */
21: .line 233
aload 2 /* t */
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
22: .line 234
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
invokevirtual org.glassfish.jersey.server.ChunkedOutput.getType:()Ljava/lang/reflect/Type;
23: .line 235
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
invokevirtual org.glassfish.jersey.server.ContainerResponse.getEntityAnnotations:()[Ljava/lang/annotation/Annotation;
24: .line 236
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
invokevirtual org.glassfish.jersey.server.ContainerResponse.getMediaType:()Ljakarta/ws/rs/core/MediaType;
25: .line 237
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
invokevirtual org.glassfish.jersey.server.ContainerResponse.getHeaders:()Ljakarta/ws/rs/core/MultivaluedMap;
26: .line 238
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.requestContext:Lorg/glassfish/jersey/server/ContainerRequest;
invokevirtual org.glassfish.jersey.server.ContainerRequest.getPropertiesDelegate:()Lorg/glassfish/jersey/internal/PropertiesDelegate;
27: .line 239
aload 3 /* origStream */
28: .line 243
invokestatic java.util.Collections.emptyList:()Ljava/util/List;
29: .line 231
invokeinterface org.glassfish.jersey.message.MessageBodyWorkers.writeTo:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;Ljakarta/ws/rs/core/MediaType;Ljakarta/ws/rs/core/MultivaluedMap;Lorg/glassfish/jersey/internal/PropertiesDelegate;Ljava/io/OutputStream;Ljava/lang/Iterable;)Ljava/io/OutputStream;
astore 4 /* writtenStream */
start local 4 // java.io.OutputStream writtenStream
30: .line 246
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.chunkDelimiter:[B
getstatic org.glassfish.jersey.server.ChunkedOutput.ZERO_LENGTH_DELIMITER:[B
if_acmpeq 32
31: .line 248
aload 4 /* writtenStream */
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.chunkDelimiter:[B
invokevirtual java.io.OutputStream.write:([B)V
32: .line 252
StackMap locals: java.io.OutputStream java.io.OutputStream
StackMap stack:
aload 4 /* writtenStream */
invokevirtual java.io.OutputStream.flush:()V
33: .line 254
aload 3 /* origStream */
aload 4 /* writtenStream */
if_acmpeq 51
34: .line 256
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
aload 4 /* writtenStream */
invokevirtual org.glassfish.jersey.server.ContainerResponse.setEntityStream:(Ljava/io/OutputStream;)V
end local 4 // java.io.OutputStream writtenStream
end local 3 // java.io.OutputStream origStream
35: .line 258
goto 51
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object
StackMap stack: java.io.IOException
36: astore 3 /* ioe */
start local 3 // java.io.IOException ioe
37: .line 259
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.connectionCallback:Ljakarta/ws/rs/container/ConnectionCallback;
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.asyncContext:Lorg/glassfish/jersey/server/AsyncContext;
invokeinterface jakarta.ws.rs.container.ConnectionCallback.onDisconnect:(Ljakarta/ws/rs/container/AsyncResponse;)V
38: .line 260
aload 3 /* ioe */
athrow
end local 3 // java.io.IOException ioe
39: .line 261
StackMap locals:
StackMap stack: org.glassfish.jersey.server.internal.process.MappableException
astore 3 /* mpe */
start local 3 // org.glassfish.jersey.server.internal.process.MappableException mpe
40: .line 262
aload 3 /* mpe */
invokevirtual org.glassfish.jersey.server.internal.process.MappableException.getCause:()Ljava/lang/Throwable;
instanceof java.io.IOException
ifeq 42
41: .line 263
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.connectionCallback:Ljakarta/ws/rs/container/ConnectionCallback;
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.asyncContext:Lorg/glassfish/jersey/server/AsyncContext;
invokeinterface jakarta.ws.rs.container.ConnectionCallback.onDisconnect:(Ljakarta/ws/rs/container/AsyncResponse;)V
42: .line 265
StackMap locals: org.glassfish.jersey.server.internal.process.MappableException
StackMap stack:
aload 3 /* mpe */
athrow
end local 3 // org.glassfish.jersey.server.internal.process.MappableException mpe
43: .line 266
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object
StackMap stack: java.lang.Throwable
astore 5
44: .line 267
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.lock:Ljava/lang/Object;
dup
astore 6
monitorenter
45: .line 268
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
iconst_0
putfield org.glassfish.jersey.server.ChunkedOutput.touchingEntityStream:Z
46: .line 267
aload 6
monitorexit
47: goto 50
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object top top java.lang.Throwable java.lang.Object
StackMap stack: java.lang.Throwable
48: aload 6
monitorexit
49: athrow
50: .line 270
StackMap locals:
StackMap stack:
aload 5
athrow
51: .line 267
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.lock:Ljava/lang/Object;
dup
astore 6
monitorenter
52: .line 268
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
iconst_0
putfield org.glassfish.jersey.server.ChunkedOutput.touchingEntityStream:Z
53: .line 267
aload 6
monitorexit
54: goto 57
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object top top top java.lang.Object
StackMap stack: java.lang.Throwable
55: aload 6
monitorexit
56: athrow
57: .line 272
StackMap locals: org.glassfish.jersey.server.ChunkedOutput$1 int java.lang.Object
StackMap stack:
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.queue:Ljava/util/concurrent/BlockingDeque;
invokeinterface java.util.concurrent.BlockingDeque.poll:()Ljava/lang/Object;
astore 2 /* t */
58: .line 273
aload 2 /* t */
ifnonnull 71
59: .line 274
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.lock:Ljava/lang/Object;
dup
astore 3
monitorenter
60: .line 279
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.closed:Z
istore 1 /* shouldClose */
61: .line 280
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.queue:Ljava/util/concurrent/BlockingDeque;
invokeinterface java.util.concurrent.BlockingDeque.poll:()Ljava/lang/Object;
astore 2 /* t */
62: .line 281
aload 2 /* t */
ifnonnull 67
63: .line 286
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
getfield org.glassfish.jersey.server.ChunkedOutput.responseContext:Lorg/glassfish/jersey/server/ContainerResponse;
invokevirtual org.glassfish.jersey.server.ContainerResponse.commitStream:()V
64: .line 289
aload 0 /* this */
getfield org.glassfish.jersey.server.ChunkedOutput$1.this$0:Lorg/glassfish/jersey/server/ChunkedOutput;
iload 1 /* shouldClose */
putfield org.glassfish.jersey.server.ChunkedOutput.flushing:Z
65: .line 290
aload 3
monitorexit
66: goto 72
67: .line 274
StackMap locals: java.lang.Object
StackMap stack:
aload 3
monitorexit
68: goto 71
StackMap locals:
StackMap stack: java.lang.Throwable
69: aload 3
monitorexit
70: athrow
71: .line 224
StackMap locals:
StackMap stack:
aload 2 /* t */
ifnonnull 12
72: .line 295
StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 // java.lang.Object t
end local 1 // boolean shouldClose
end local 0 // org.glassfish.jersey.server.ChunkedOutput$1 this
LocalVariableTable:
Start End Slot Name Signature
0 73 0 this Lorg/glassfish/jersey/server/ChunkedOutput$1;
5 10 1 shouldClose Z
12 73 1 shouldClose Z
6 10 2 t TT;
12 73 2 t TT;
19 35 3 origStream Ljava/io/OutputStream;
30 35 4 writtenStream Ljava/io/OutputStream;
37 39 3 ioe Ljava/io/IOException;
40 43 3 mpe Lorg/glassfish/jersey/server/internal/process/MappableException;
Exception table:
from to target type
1 3 10 any
4 9 10 any
10 11 10 any
13 15 16 any
16 17 16 any
12 35 36 Class java.io.IOException
12 35 39 Class org.glassfish.jersey.server.internal.process.MappableException
12 43 43 any
45 47 48 any
48 49 48 any
52 54 55 any
55 56 55 any
60 66 69 any
67 68 69 any
69 70 69 any
Exceptions:
throws java.io.IOException
public java.lang.Object call();
descriptor: ()Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: .line 1
aload 0
invokevirtual org.glassfish.jersey.server.ChunkedOutput$1.call:()Ljava/lang/Void;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
}
Signature: Ljava/lang/Object;Ljava/util/concurrent/Callable<Ljava/lang/Void;>;
SourceFile: "ChunkedOutput.java"
EnclosingMethod: org.glassfish.jersey.server.ChunkedOutput.flushQueue:()V
NestHost: org.glassfish.jersey.server.ChunkedOutput
InnerClasses:
org.glassfish.jersey.server.ChunkedOutput$1