public class io.vertx.core.file.impl.FileResolverImpl extends java.lang.Object implements io.vertx.core.spi.file.FileResolver
{
public static final java.lang.String DISABLE_FILE_CACHING_PROP_NAME;
public static final java.lang.String DISABLE_CP_RESOLVING_PROP_NAME;
public static final java.lang.String CACHE_DIR_BASE_PROP_NAME;
private static final boolean NON_UNIX_FILE_SEP;
private static final java.lang.String JAR_URL_SEP;
private final java.io.File cwd;
private final boolean enableCaching;
private final boolean enableCPResolving;
private final io.vertx.core.file.impl.FileCache cache;
public void <init>()
{
io.vertx.core.file.impl.FileResolverImpl v;
io.vertx.core.file.FileSystemOptions v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v = new io.vertx.core.file.FileSystemOptions;
specialinvoke v.<io.vertx.core.file.FileSystemOptions: void <init>()>();
specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: void <init>(io.vertx.core.file.FileSystemOptions)>(v);
return;
}
public void <init>(io.vertx.core.file.FileSystemOptions)
{
io.vertx.core.file.FileSystemOptions v;
java.io.File v, v;
io.vertx.core.file.impl.FileCache v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.String v, v;
boolean v, v, v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: io.vertx.core.file.FileSystemOptions;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<io.vertx.core.file.FileSystemOptions: boolean isFileCachingEnabled()>();
v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCaching> = v;
v = virtualinvoke v.<io.vertx.core.file.FileSystemOptions: boolean isClassPathResolvingEnabled()>();
v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCPResolving> = v;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCPResolving>;
if v == 0 goto label;
v = virtualinvoke v.<io.vertx.core.file.FileSystemOptions: java.lang.String getFileCacheDir()>();
v = staticinvoke <io.vertx.core.file.impl.FileCache: io.vertx.core.file.impl.FileCache setupCache(java.lang.String)>(v);
v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache> = v;
goto label;
label:
v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache> = null;
label:
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("vertx.cwd");
if v == null goto label;
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: java.io.File getAbsoluteFile()>();
v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File cwd> = v;
goto label;
label:
v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File cwd> = null;
label:
return;
}
public java.lang.String cacheDir()
{
io.vertx.core.file.impl.FileCache v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.String v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
if v == null goto label;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.lang.String cacheDir()>();
return v;
label:
return null;
}
io.vertx.core.file.impl.FileCache getFileCache()
{
io.vertx.core.file.impl.FileResolverImpl v;
io.vertx.core.file.impl.FileCache v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
return v;
}
public void close() throws java.io.IOException
{
java.lang.Throwable v;
io.vertx.core.file.impl.FileCache v, v;
io.vertx.core.file.impl.FileResolverImpl v;
boolean v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCPResolving>;
if v == 0 goto label;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
entermonitor v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
virtualinvoke v.<io.vertx.core.file.impl.FileCache: void close()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.io.File resolveFile(java.lang.String)
{
java.lang.Throwable v;
java.net.URL v, v;
java.lang.String v, v, v, v;
boolean v, v, v, v, v, v;
char v, v;
java.io.File v, v, v, v, v, v, v, v, v, v;
io.vertx.core.file.impl.FileCache v, v, v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.ClassLoader v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.lang.String;
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = v;
v = virtualinvoke v.<java.io.File: boolean isAbsolute()>();
v = v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File cwd>;
if v == null goto label;
if v != 0 goto label;
v = new java.io.File;
v = v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File cwd>;
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = v;
goto label;
label:
v = v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
if v != null goto label;
return v;
label:
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v != 0 goto label;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
entermonitor v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.io.File getCanonicalFile(java.io.File)>(v);
if v != null goto label;
exitmonitor v;
label:
return v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = virtualinvoke v.<java.io.File: java.lang.String getPath()>();
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.lang.String relativize(java.lang.String)>(v);
if v == null goto label;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCaching>;
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
exitmonitor v;
label:
return v;
label:
if v == 0 goto label;
v = v;
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = v;
v = 0;
label:
if v != 0 goto label;
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.lang.ClassLoader getClassLoader()>();
v = virtualinvoke v.<java.io.File: java.io.File getParentFile()>();
label:
if v == null goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getPath()>();
v = <io.vertx.core.file.impl.FileResolverImpl: boolean NON_UNIX_FILE_SEP>;
if v == 0 goto label;
v = <java.io.File: char separatorChar>;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(v, 47);
label:
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: java.net.URL getValidClassLoaderResource(java.lang.ClassLoader,java.lang.String)>(v, v);
if v == null goto label;
specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackUrlResource(java.net.URL,java.lang.String,java.lang.ClassLoader,boolean)>(v, v, v, 1);
label:
v = virtualinvoke v.<java.io.File: java.io.File getParentFile()>();
goto label;
label:
v = <io.vertx.core.file.impl.FileResolverImpl: boolean NON_UNIX_FILE_SEP>;
if v == 0 goto label;
v = <java.io.File: char separatorChar>;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(v, 47);
label:
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: java.net.URL getValidClassLoaderResource(java.lang.ClassLoader,java.lang.String)>(v, v);
if v == null goto label;
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackUrlResource(java.net.URL,java.lang.String,java.lang.ClassLoader,boolean)>(v, v, v, 0);
exitmonitor v;
label:
return v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static boolean isValidWindowsCachePath(char)
{
char v;
v := @parameter: char;
if v >= 32 goto label;
return 0;
label:
lookupswitch(v)
{
case 34: goto label;
case 42: goto label;
case 58: goto label;
case 60: goto label;
case 62: goto label;
case 63: goto label;
case 124: goto label;
default: goto label;
};
label:
return 0;
label:
return 1;
}
private static boolean isValidCachePath(java.lang.String)
{
char v, v;
int v, v, v, v, v, v;
java.lang.String v;
boolean v, v, v;
v := @parameter: java.lang.String;
v = staticinvoke <io.netty.util.internal.PlatformDependent: boolean isWindows()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = 0;
label:
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: boolean isValidWindowsCachePath(char)>(v);
if v != 0 goto label;
return 0;
label:
if v != 32 goto label;
v = v + 1;
if v == v goto label;
v = v + 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 47 goto label;
label:
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
label:
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(0);
v = (int) -1;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static java.net.URL getValidClassLoaderResource(java.lang.ClassLoader, java.lang.String)
{
java.net.URL v;
java.lang.ClassLoader v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.ClassLoader: java.net.URL getResource(java.lang.String)>(v);
if v == null goto label;
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: boolean isValidCachePath(java.lang.String)>(v);
if v != 0 goto label;
return null;
label:
return v;
}
private java.io.File unpackUrlResource(java.net.URL, java.lang.String, java.lang.ClassLoader, boolean)
{
java.lang.IllegalStateException v;
java.net.URL v;
byte v;
int v;
java.lang.String v, v, v;
boolean v, v, v, v, v, v, v, v, v;
java.io.File v, v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.ClassLoader v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.net.URL;
v := @parameter: java.lang.String;
v := @parameter: java.lang.ClassLoader;
v := @parameter: boolean;
v = virtualinvoke v.<java.net.URL: java.lang.String getProtocol()>();
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case -1377881982: goto label;
case -341064690: goto label;
case -239609552: goto label;
case 104987: goto label;
case 105516: goto label;
case 116675: goto label;
case 3143036: goto label;
case 1780175504: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("file");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("jar");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("bundle");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("bundleentry");
if v == 0 goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("bundleresource");
if v == 0 goto label;
v = 4;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("jrt");
if v == 0 goto label;
v = 5;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("resource");
if v == 0 goto label;
v = 6;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("vfs");
if v == 0 goto label;
v = 7;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
default: goto label;
};
label:
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackFromFileURL(java.net.URL,java.lang.String,java.lang.ClassLoader)>(v, v, v);
return v;
label:
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackFromJarURL(java.net.URL,java.lang.String,java.lang.ClassLoader)>(v, v, v);
return v;
label:
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackFromBundleURL(java.net.URL,java.lang.String,boolean)>(v, v, v);
return v;
label:
v = new java.lang.IllegalStateException;
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[])>("Invalid url protocol: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
}
private java.io.File unpackFromFileURL(java.net.URL, java.lang.String, java.lang.ClassLoader)
{
io.vertx.core.VertxException v, v;
java.net.URL v, v;
java.lang.String[] v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v, v, v;
java.io.IOException v;
java.io.File v, v;
io.vertx.core.file.impl.FileCache v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.ClassLoader v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.net.URL;
v := @parameter: java.lang.String;
v := @parameter: java.lang.ClassLoader;
v = new java.io.File;
v = virtualinvoke v.<java.net.URL: java.lang.String getPath()>();
v = staticinvoke <io.vertx.core.net.impl.URIDecoder: java.lang.String decodeURIComponent(java.lang.String,boolean)>(v, 0);
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.io.File: boolean isDirectory()>();
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCaching>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.io.File cacheFile(java.lang.String,java.io.File,boolean)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = new io.vertx.core.VertxException;
v = virtualinvoke v.<java.net.URL: java.lang.String toString()>();
v = staticinvoke <io.vertx.core.file.impl.FileSystemImpl: java.lang.String getFileAccessErrorMessage(java.lang.String,java.lang.String)>("unpack", v);
specialinvoke v.<io.vertx.core.VertxException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: java.lang.String[] list()>();
if v == null goto label;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
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[])>("\u0001/\u0001");
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: java.net.URL getValidClassLoaderResource(java.lang.ClassLoader,java.lang.String)>(v, v);
if v != null goto label;
v = new io.vertx.core.VertxException;
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[])>("Invalid resource: \u0001");
specialinvoke v.<io.vertx.core.VertxException: void <init>(java.lang.String)>(v);
throw v;
label:
specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File unpackFromFileURL(java.net.URL,java.lang.String,java.lang.ClassLoader)>(v, v, v);
v = v + 1;
goto label;
label:
return v;
catch java.io.IOException from label to label with label;
}
private java.io.File unpackFromJarURL(java.net.URL, java.lang.String, java.lang.ClassLoader)
{
io.vertx.core.VertxException v;
java.util.Enumeration v;
java.net.URL v;
java.util.zip.ZipFile v, v, v;
boolean v, v, v, v, v, v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.StringBuilder v, v;
java.lang.ClassLoader v;
java.lang.Throwable v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.io.IOException v;
java.io.File v, v, v;
io.vertx.core.file.impl.FileCache v, v, v;
java.lang.Object v;
java.io.InputStream v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.net.URL;
v := @parameter: java.lang.String;
v := @parameter: java.lang.ClassLoader;
v = null;
label:
v = virtualinvoke v.<java.net.URL: java.lang.String getPath()>();
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String)>(".jar!");
v = (int) -1;
if v != v goto label;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String)>(".zip!");
label:
v = v - 1;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String,int)>(".jar!", v);
v = (int) -1;
if v != v goto label;
v = v - 1;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String,int)>(".zip!", v);
label:
v = (int) -1;
if v != v goto label;
v = new java.io.File;
v = v + 4;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(5, v);
v = staticinvoke <io.vertx.core.net.impl.URIDecoder: java.lang.String decodeURIComponent(java.lang.String,boolean)>(v, 0);
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(v);
v = new java.util.zip.ZipFile;
specialinvoke v.<java.util.zip.ZipFile: void <init>(java.io.File)>(v);
v = v;
goto label;
label:
v = v + 6;
v = v + 4;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(v, v);
v = virtualinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.io.File resolveFile(java.lang.String)>(v);
v = new java.util.zip.ZipFile;
specialinvoke v.<java.util.zip.ZipFile: void <init>(java.io.File)>(v);
v = v;
label:
v = v + 6;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = 0;
v = "!/";
v = virtualinvoke v.<java.lang.String: int length()>();
label:
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String,int)>("!/", v);
if v < 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.CharSequence,int,int)>(v, v, v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("/");
v = v + v;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
v = virtualinvoke v.<java.util.zip.ZipFile: java.util.Enumeration entries()>();
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = v;
goto label;
label:
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[])>("\u0001\u0001");
label:
v = v;
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
v = virtualinvoke v.<java.util.zip.ZipEntry: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = v;
goto label;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
label:
v = v;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("/");
if v == 0 goto label;
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
virtualinvoke v.<io.vertx.core.file.impl.FileCache: void cacheDir(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.util.zip.ZipFile: java.io.InputStream getInputStream(java.util.zip.ZipEntry)>(v);
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCaching>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<io.vertx.core.file.impl.FileCache: void cacheFile(java.lang.String,java.io.InputStream,boolean)>(v, v, v);
label:
if v == null goto label;
virtualinvoke v.<java.io.InputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: void closeQuietly(java.io.Closeable)>(v);
goto label;
label:
v := @caughtexception;
v = new io.vertx.core.VertxException;
v = virtualinvoke v.<java.net.URL: java.lang.String toString()>();
v = staticinvoke <io.vertx.core.file.impl.FileSystemImpl: java.lang.String getFileAccessErrorMessage(java.lang.String,java.lang.String)>("unpack", v);
specialinvoke v.<io.vertx.core.VertxException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v := @caughtexception;
specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: void closeQuietly(java.io.Closeable)>(v);
throw v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.io.File getFile(java.lang.String)>(v);
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void closeQuietly(java.io.Closeable)
{
io.vertx.core.file.impl.FileResolverImpl v;
java.io.Closeable v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.io.Closeable;
return;
}
private boolean isBundleUrlDirectory(java.net.URL)
{
java.net.URL v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.ClassLoader v;
java.lang.String v, v, v, v;
boolean v, v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.net.URL;
v = virtualinvoke v.<java.net.URL: java.lang.String toExternalForm()>();
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("/");
if v != 0 goto label;
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.lang.ClassLoader getClassLoader()>();
v = virtualinvoke v.<java.net.URL: java.lang.String getPath()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(1);
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[])>("\u0001/");
v = staticinvoke <io.vertx.core.file.impl.FileResolverImpl: java.net.URL getValidClassLoaderResource(java.lang.ClassLoader,java.lang.String)>(v, v);
if v == null goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private java.io.File unpackFromBundleURL(java.net.URL, java.lang.String, boolean)
{
io.vertx.core.VertxException v;
java.lang.Throwable v;
java.net.URL v;
java.lang.String v, v, v;
boolean v, v, v, v;
java.io.IOException v;
java.io.File v;
io.vertx.core.file.impl.FileCache v, v, v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.ClassLoader v;
java.io.InputStream v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v := @parameter: java.net.URL;
v := @parameter: java.lang.String;
v := @parameter: boolean;
label:
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: java.lang.ClassLoader getClassLoader()>();
if v == null goto label;
v = specialinvoke v.<io.vertx.core.file.impl.FileResolverImpl: boolean isBundleUrlDirectory(java.net.URL)>(v);
if v != 0 goto label;
label:
if v == 0 goto label;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
virtualinvoke v.<io.vertx.core.file.impl.FileCache: void cacheDir(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.net.URL: java.io.InputStream openStream()>();
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = v.<io.vertx.core.file.impl.FileResolverImpl: boolean enableCaching>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<io.vertx.core.file.impl.FileCache: void cacheFile(java.lang.String,java.io.InputStream,boolean)>(v, v, v);
label:
if v == null goto label;
virtualinvoke v.<java.io.InputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new io.vertx.core.VertxException;
v = virtualinvoke v.<java.net.URL: java.lang.String toString()>();
v = staticinvoke <io.vertx.core.file.impl.FileSystemImpl: java.lang.String getFileAccessErrorMessage(java.lang.String,java.lang.String)>("unpack", v);
specialinvoke v.<io.vertx.core.VertxException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<io.vertx.core.file.impl.FileResolverImpl: io.vertx.core.file.impl.FileCache cache>;
v = virtualinvoke v.<io.vertx.core.file.impl.FileCache: java.io.File getFile(java.lang.String)>(v);
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
private java.lang.ClassLoader getClassLoader()
{
java.lang.Thread v;
io.vertx.core.file.impl.FileResolverImpl v;
java.lang.Class v, v;
java.lang.ClassLoader v;
v := @this: io.vertx.core.file.impl.FileResolverImpl;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
if v != null goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
if v != null goto label;
v = class "Ljava/lang/Object;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
label:
return v;
}
static void <clinit>()
{
char v;
boolean v;
v = <java.io.File: char separatorChar>;
if v == 47 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.vertx.core.file.impl.FileResolverImpl: boolean NON_UNIX_FILE_SEP> = v;
return;
}
}