final class javafx.scene.web.DirectoryLock
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: javafx.scene.web.DirectoryLock
super_class: java.lang.Object
{
private static final com.sun.javafx.logging.PlatformLogger logger;
descriptor: Lcom/sun/javafx/logging/PlatformLogger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Map<java.io.File, javafx.scene.web.DirectoryLock$Descriptor> descriptors;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/io/File;Ljavafx/scene/web/DirectoryLock$Descriptor;>;
private javafx.scene.web.DirectoryLock$Descriptor descriptor;
descriptor: Ljavafx/scene/web/DirectoryLock$Descriptor;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Ljavafx/scene/web/DirectoryLock;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic com.sun.javafx.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lcom/sun/javafx/logging/PlatformLogger;
1: putstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.io.File);
descriptor: (Ljava/io/File;)V
flags: (0x0000)
Code:
stack=6, locals=7, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
invokestatic javafx.scene.web.DirectoryLock.canonicalize:(Ljava/io/File;)Ljava/io/File;
astore 1
2: aload 0
getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javafx.scene.web.DirectoryLock$Descriptor
putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
3: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
ifnonnull 38
4: aload 1
invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
astore 2
start local 2 5: new java.io.RandomAccessFile
dup
aload 2
ldc "rw"
invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 3
start local 3 6: aload 3
invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
invokevirtual java.nio.channels.FileChannel.tryLock:()Ljava/nio/channels/FileLock;
astore 4
start local 4 7: aload 4
ifnonnull 11
8: new javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
dup
aload 0
9: aload 1
invokevirtual java.io.File.toString:()Ljava/lang/String;
aconst_null
10: invokespecial javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException.<init>:(Ljavafx/scene/web/DirectoryLock;Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
11: StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile java.nio.channels.FileLock
StackMap stack:
aload 0
new javafx.scene.web.DirectoryLock$Descriptor
dup
aload 1
aload 3
aload 4
invokespecial javafx.scene.web.DirectoryLock$Descriptor.<init>:(Ljava/io/File;Ljava/io/RandomAccessFile;Ljava/nio/channels/FileLock;)V
putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
12: getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
aload 1
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 13: goto 29
StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile
StackMap stack: java.nio.channels.OverlappingFileLockException
14: astore 4
start local 4 15: new javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
dup
aload 0
16: aload 1
invokevirtual java.io.File.toString:()Ljava/lang/String;
aload 4
17: invokespecial javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException.<init>:(Ljavafx/scene/web/DirectoryLock;Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 18: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
19: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
ifnonnull 28
20: aload 3
invokevirtual java.io.RandomAccessFile.close:()V
21: goto 28
StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile top java.lang.Throwable
StackMap stack: java.io.IOException
22: astore 6
start local 6 23: getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
ldc "Error closing [%s]"
iconst_1
anewarray java.lang.Object
dup
iconst_0
24: aload 2
aastore
25: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
26: aload 6
27: invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 6 28: StackMap locals:
StackMap stack:
aload 5
athrow
29: StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile
StackMap stack:
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
ifnonnull 38
30: aload 3
invokevirtual java.io.RandomAccessFile.close:()V
31: goto 38
StackMap locals:
StackMap stack: java.io.IOException
32: astore 6
start local 6 33: getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
ldc "Error closing [%s]"
iconst_1
anewarray java.lang.Object
dup
iconst_0
34: aload 2
aastore
35: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
36: aload 6
37: invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 6 end local 3 end local 2 38: StackMap locals:
StackMap stack:
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
dup
getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
iconst_1
iadd
putfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
39: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Ljavafx/scene/web/DirectoryLock;
0 40 1 directory Ljava/io/File;
5 38 2 lockFile Ljava/io/File;
6 38 3 lockRaf Ljava/io/RandomAccessFile;
7 13 4 lock Ljava/nio/channels/FileLock;
15 18 4 ex Ljava/nio/channels/OverlappingFileLockException;
23 28 6 ex Ljava/io/IOException;
33 38 6 ex Ljava/io/IOException;
Exception table:
from to target type
6 13 14 Class java.nio.channels.OverlappingFileLockException
6 18 18 any
20 21 22 Class java.io.IOException
30 31 32 Class java.io.IOException
Exceptions:
throws java.io.IOException, javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
MethodParameters:
Name Flags
directory
void close();
descriptor: ()V
flags: (0x0000)
Code:
stack=6, locals=2, args_size=1
start local 0 0: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
dup
getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
iconst_1
isub
putfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
3: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
ifne 21
4: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.lock:Ljava/nio/channels/FileLock;
invokevirtual java.nio.channels.FileLock.release:()V
5: goto 12
StackMap locals:
StackMap stack: java.io.IOException
6: astore 1
start local 1 7: getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
ldc "Error releasing lock on [%s]"
iconst_1
anewarray java.lang.Object
dup
iconst_0
8: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
aastore
9: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
10: aload 1
11: invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 1 12: StackMap locals:
StackMap stack:
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.lockRaf:Ljava/io/RandomAccessFile;
invokevirtual java.io.RandomAccessFile.close:()V
13: goto 20
StackMap locals:
StackMap stack: java.io.IOException
14: astore 1
start local 1 15: getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
ldc "Error closing [%s]"
iconst_1
anewarray java.lang.Object
dup
iconst_0
16: aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
aastore
17: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
18: aload 1
19: invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 1 20: StackMap locals:
StackMap stack:
getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
aload 0
getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
21: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
22: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljavafx/scene/web/DirectoryLock;
7 12 1 ex Ljava/io/IOException;
15 20 1 ex Ljava/io/IOException;
Exception table:
from to target type
4 5 6 Class java.io.IOException
12 13 14 Class java.io.IOException
static int referenceCount(java.io.File);
descriptor: (Ljava/io/File;)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
aload 0
invokestatic javafx.scene.web.DirectoryLock.canonicalize:(Ljava/io/File;)Ljava/io/File;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javafx.scene.web.DirectoryLock$Descriptor
astore 1
start local 1 1: aload 1
ifnonnull 2
iconst_0
goto 3
StackMap locals: javafx.scene.web.DirectoryLock$Descriptor
StackMap stack:
2: aload 1
getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 directory Ljava/io/File;
1 4 1 d Ljavafx/scene/web/DirectoryLock$Descriptor;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
directory
static java.io.File canonicalize(java.io.File);
descriptor: (Ljava/io/File;)Ljava/io/File;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
astore 1
start local 1 1: aload 1
invokevirtual java.lang.String.length:()I
ifle 4
2: aload 1
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
isub
invokevirtual java.lang.String.charAt:(I)C
getstatic java.io.File.separatorChar:C
if_icmpeq 4
3: new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic java.io.File.separatorChar:C
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
4: StackMap locals: java.lang.String
StackMap stack:
new java.io.File
dup
aload 1
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 directory Ljava/io/File;
1 5 1 path Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
directory
private static java.io.File lockFile(java.io.File);
descriptor: (Ljava/io/File;)Ljava/io/File;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: new java.io.File
dup
aload 0
ldc ".lock"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 directory Ljava/io/File;
MethodParameters:
Name Flags
directory
}
SourceFile: "DirectoryLock.java"
NestMembers:
javafx.scene.web.DirectoryLock$Descriptor javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
InnerClasses:
private Descriptor = javafx.scene.web.DirectoryLock$Descriptor of javafx.scene.web.DirectoryLock
final DirectoryAlreadyInUseException = javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException of javafx.scene.web.DirectoryLock