class org.eclipse.aether.connector.basic.PartialFile$LockFile
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.eclipse.aether.connector.basic.PartialFile$LockFile
super_class: java.lang.Object
{
private final java.io.File lockFile;
descriptor: Ljava/io/File;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.nio.channels.FileLock lock;
descriptor: Ljava/nio/channels/FileLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicBoolean concurrent;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(java.io.File, int, org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker);
descriptor: (Ljava/io/File;ILorg/eclipse/aether/connector/basic/PartialFile$RemoteAccessChecker;)V
flags: (0x0000)
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.io.File
dup
new java.lang.StringBuilder
dup
aload 1
invokevirtual java.io.File.getPath:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".lock"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
putfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
2: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
putfield org.eclipse.aether.connector.basic.PartialFile$LockFile.concurrent:Ljava/util/concurrent/atomic/AtomicBoolean;
3: aload 0
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
aload 1
iload 2
aload 3
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.concurrent:Ljava/util/concurrent/atomic/AtomicBoolean;
invokestatic org.eclipse.aether.connector.basic.PartialFile$LockFile.lock:(Ljava/io/File;Ljava/io/File;ILorg/eclipse/aether/connector/basic/PartialFile$RemoteAccessChecker;Ljava/util/concurrent/atomic/AtomicBoolean;)Ljava/nio/channels/FileLock;
putfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lock:Ljava/nio/channels/FileLock;
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/eclipse/aether/connector/basic/PartialFile$LockFile;
0 5 1 partFile Ljava/io/File;
0 5 2 requestTimeout I
0 5 3 checker Lorg/eclipse/aether/connector/basic/PartialFile$RemoteAccessChecker;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
partFile
requestTimeout
checker
private static java.nio.channels.FileLock lock(java.io.File, java.io.File, int, org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker, java.util.concurrent.atomic.AtomicBoolean);
descriptor: (Ljava/io/File;Ljava/io/File;ILorg/eclipse/aether/connector/basic/PartialFile$RemoteAccessChecker;Ljava/util/concurrent/atomic/AtomicBoolean;)Ljava/nio/channels/FileLock;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=17, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iconst_0
istore 5
start local 5 1: ldc -1
lstore 6
start local 6 2: lconst_0
lstore 8
start local 8 3: StackMap locals: int long long
StackMap stack:
aload 0
invokestatic org.eclipse.aether.connector.basic.PartialFile$LockFile.tryLock:(Ljava/io/File;)Ljava/nio/channels/FileLock;
astore 10
start local 10 4: aload 10
ifnull 9
5: aload 10
astore 16
6: iload 5
ifeq 8
7: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
8: StackMap locals: java.io.File java.io.File int org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker java.util.concurrent.atomic.AtomicBoolean int long long java.nio.channels.FileLock top top top top top java.nio.channels.FileLock
StackMap stack:
aload 16
areturn
9: StackMap locals: java.io.File java.io.File int org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker java.util.concurrent.atomic.AtomicBoolean int long long java.nio.channels.FileLock
StackMap stack:
aload 1
invokevirtual java.io.File.length:()J
lstore 11
start local 11 10: invokestatic java.lang.System.currentTimeMillis:()J
lstore 13
start local 13 11: lload 11
lload 6
lcmp
ifeq 19
12: lload 6
lconst_0
lcmp
ifge 16
13: aload 4
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
14: aload 3
invokeinterface org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker.checkRemoteAccess:()V
15: getstatic org.eclipse.aether.connector.basic.PartialFile.LOGGER:Lorg/slf4j/Logger;
ldc "Concurrent download of {} in progress, awaiting completion"
aload 1
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
16: StackMap locals: long long
StackMap stack:
lload 11
lstore 6
17: lload 13
lstore 8
18: goto 23
19: StackMap locals:
StackMap stack:
iload 2
ifle 23
lload 13
lload 8
lsub
iload 2
sipush 3000
invokestatic java.lang.Math.max:(II)I
i2l
lcmp
ifle 23
20: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Timeout while waiting for concurrent download of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
21: ldc " to progress"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
22: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals:
StackMap stack:
ldc 100
invokestatic java.lang.Thread.sleep:(J)V
24: goto 3
25: StackMap locals:
StackMap stack: java.lang.InterruptedException
pop
26: iconst_1
istore 5
end local 13 end local 11 end local 10 27: goto 3
end local 8 end local 6 28: StackMap locals: java.io.File java.io.File int org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker java.util.concurrent.atomic.AtomicBoolean int
StackMap stack: java.lang.Throwable
astore 15
29: iload 5
ifeq 31
30: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
31: StackMap locals: java.io.File java.io.File int org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker java.util.concurrent.atomic.AtomicBoolean int top top top top top top top top top java.lang.Throwable
StackMap stack:
aload 15
athrow
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 32 0 lockFile Ljava/io/File;
0 32 1 partFile Ljava/io/File;
0 32 2 requestTimeout I
0 32 3 checker Lorg/eclipse/aether/connector/basic/PartialFile$RemoteAccessChecker;
0 32 4 concurrent Ljava/util/concurrent/atomic/AtomicBoolean;
1 32 5 interrupted Z
2 28 6 lastLength J
3 28 8 lastTime J
4 27 10 lock Ljava/nio/channels/FileLock;
10 27 11 currentLength J
11 27 13 currentTime J
Exception table:
from to target type
23 24 25 Class java.lang.InterruptedException
1 6 28 any
9 28 28 any
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
lockFile
partFile
requestTimeout
checker
concurrent
private static java.nio.channels.FileLock tryLock(java.io.File);
descriptor: (Ljava/io/File;)Ljava/nio/channels/FileLock;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: new java.io.RandomAccessFile
dup
aload 0
ldc "rw"
invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 1
3: aload 1
invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
lconst_0
lconst_1
iconst_0
invokevirtual java.nio.channels.FileChannel.tryLock:(JJZ)Ljava/nio/channels/FileLock;
astore 2
4: aload 2
ifnonnull 28
5: aload 1
invokevirtual java.io.RandomAccessFile.close:()V
6: aconst_null
astore 1
7: goto 28
8: StackMap locals: java.io.File java.io.RandomAccessFile java.nio.channels.FileLock
StackMap stack: java.nio.channels.OverlappingFileLockException
pop
9: aload 1
invokestatic org.eclipse.aether.connector.basic.PartialFile$LockFile.close:(Ljava/io/Closeable;)V
10: aconst_null
astore 1
11: aconst_null
astore 2
12: aload 2
ifnonnull 32
aload 1
ifnull 32
13: aload 1
invokevirtual java.io.RandomAccessFile.close:()V
14: goto 32
15: StackMap locals:
StackMap stack: java.io.IOException
pop
goto 32
16: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 17: aload 1
invokestatic org.eclipse.aether.connector.basic.PartialFile$LockFile.close:(Ljava/io/Closeable;)V
18: aconst_null
astore 1
19: aload 0
invokevirtual java.io.File.delete:()Z
ifne 21
20: aload 0
invokevirtual java.io.File.deleteOnExit:()V
21: StackMap locals: java.lang.Exception
StackMap stack:
aload 3
athrow
end local 3 22: StackMap locals: java.io.File java.io.RandomAccessFile java.nio.channels.FileLock
StackMap stack: java.lang.Throwable
astore 4
23: aload 2
ifnonnull 27
aload 1
ifnull 27
24: aload 1
invokevirtual java.io.RandomAccessFile.close:()V
25: goto 27
26: StackMap locals: java.io.File java.io.RandomAccessFile java.nio.channels.FileLock top java.lang.Throwable
StackMap stack: java.io.IOException
pop
27: StackMap locals:
StackMap stack:
aload 4
athrow
28: StackMap locals: java.io.File java.io.RandomAccessFile java.nio.channels.FileLock
StackMap stack:
aload 2
ifnonnull 32
aload 1
ifnull 32
29: aload 1
invokevirtual java.io.RandomAccessFile.close:()V
30: goto 32
31: StackMap locals:
StackMap stack: java.io.IOException
pop
32: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 lockFile Ljava/io/File;
1 33 1 raf Ljava/io/RandomAccessFile;
2 33 2 lock Ljava/nio/channels/FileLock;
17 22 3 e Ljava/lang/Exception;
Exception table:
from to target type
2 7 8 Class java.nio.channels.OverlappingFileLockException
12 14 15 Class java.io.IOException
2 7 16 Class java.lang.RuntimeException
2 7 16 Class java.io.IOException
2 12 22 any
16 22 22 any
23 25 26 Class java.io.IOException
28 30 31 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
lockFile
private static void close(java.io.Closeable);
descriptor: (Ljava/io/Closeable;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
ifnull 4
1: aload 0
invokeinterface java.io.Closeable.close:()V
2: goto 4
3: StackMap locals:
StackMap stack: java.io.IOException
pop
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 file Ljava/io/Closeable;
Exception table:
from to target type
0 2 3 Class java.io.IOException
MethodParameters:
Name Flags
file
public boolean isConcurrent();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.concurrent:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/eclipse/aether/connector/basic/PartialFile$LockFile;
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=4, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lock:Ljava/nio/channels/FileLock;
invokevirtual java.nio.channels.FileLock.channel:()Ljava/nio/channels/FileChannel;
astore 1
2: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lock:Ljava/nio/channels/FileLock;
invokevirtual java.nio.channels.FileLock.release:()V
3: aload 1
invokeinterface java.nio.channels.Channel.close:()V
4: aconst_null
astore 1
5: goto 20
6: StackMap locals: org.eclipse.aether.connector.basic.PartialFile$LockFile java.nio.channels.Channel
StackMap stack: java.lang.Throwable
astore 2
7: aload 1
ifnull 17
8: aload 1
invokeinterface java.nio.channels.Channel.close:()V
9: goto 17
10: StackMap locals: org.eclipse.aether.connector.basic.PartialFile$LockFile java.nio.channels.Channel java.lang.Throwable
StackMap stack: java.io.IOException
pop
11: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 19
12: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
goto 19
13: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
14: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 16
15: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
16: StackMap locals: java.lang.Throwable
StackMap stack:
aload 3
athrow
17: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 19
18: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
19: StackMap locals:
StackMap stack:
aload 2
athrow
20: StackMap locals:
StackMap stack:
aload 1
ifnull 30
21: aload 1
invokeinterface java.nio.channels.Channel.close:()V
22: goto 30
23: StackMap locals:
StackMap stack: java.io.IOException
pop
24: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 32
25: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
goto 32
26: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
27: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 29
28: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
29: StackMap locals: org.eclipse.aether.connector.basic.PartialFile$LockFile java.nio.channels.Channel top java.lang.Throwable
StackMap stack:
aload 3
athrow
30: StackMap locals: org.eclipse.aether.connector.basic.PartialFile$LockFile java.nio.channels.Channel
StackMap stack:
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.delete:()Z
ifne 32
31: aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.io.File.deleteOnExit:()V
32: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lorg/eclipse/aether/connector/basic/PartialFile$LockFile;
1 33 1 channel Ljava/nio/channels/Channel;
Exception table:
from to target type
1 6 6 any
7 9 10 Class java.io.IOException
7 11 13 any
20 22 23 Class java.io.IOException
20 24 26 any
Exceptions:
throws java.io.IOException
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lockFile:Ljava/io/File;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " - "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.eclipse.aether.connector.basic.PartialFile$LockFile.lock:Ljava/nio/channels/FileLock;
invokevirtual java.nio.channels.FileLock.isValid:()Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/eclipse/aether/connector/basic/PartialFile$LockFile;
}
SourceFile: "PartialFile.java"
NestHost: org.eclipse.aether.connector.basic.PartialFile
InnerClasses:
LockFile = org.eclipse.aether.connector.basic.PartialFile$LockFile of org.eclipse.aether.connector.basic.PartialFile
abstract RemoteAccessChecker = org.eclipse.aether.connector.basic.PartialFile$RemoteAccessChecker of org.eclipse.aether.connector.basic.PartialFile