public final class org.apache.logging.log4j.util.LoaderUtil extends java.lang.Object
{
private static final org.apache.logging.log4j.Logger LOGGER;
public static final java.lang.String IGNORE_TCCL_PROPERTY;
private static java.lang.Boolean ignoreTCCL;
static final java.lang.RuntimePermission GET_CLASS_LOADER;
static final org.apache.logging.log4j.util.LazyBoolean GET_CLASS_LOADER_DISABLED;
private static final java.security.PrivilegedAction TCCL_GETTER;
private void <init>()
{
org.apache.logging.log4j.util.LoaderUtil v;
v := @this: org.apache.logging.log4j.util.LoaderUtil;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.lang.ClassLoader getClassLoader()
{
java.lang.ClassLoader v;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getClassLoader(java.lang.Class,java.lang.Class)>(class "Lorg/apache/logging/log4j/util/LoaderUtil;", null);
return v;
}
public static java.lang.ClassLoader getClassLoader(java.lang.Class, java.lang.Class)
{
java.lang.Class v, v;
java.lang.Object v;
java.security.PrivilegedAction v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil$lambda_getClassLoader_2__1052: java.security.PrivilegedAction bootstrap$(java.lang.Class,java.lang.Class)>(v, v);
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object runPrivileged(java.security.PrivilegedAction)>(v);
return v;
}
private static boolean isChild(java.lang.ClassLoader, java.lang.ClassLoader)
{
java.lang.ClassLoader v, v, v;
boolean v, v;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.lang.ClassLoader;
if v == null goto label;
if v == null goto label;
v = virtualinvoke v.<java.lang.ClassLoader: java.lang.ClassLoader getParent()>();
label:
if v == null goto label;
if v == v goto label;
v = virtualinvoke v.<java.lang.ClassLoader: java.lang.ClassLoader getParent()>();
goto label;
label:
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.lang.ClassLoader getThreadContextClassLoader()
{
java.lang.Object v;
java.lang.SecurityException v;
java.security.PrivilegedAction v;
org.apache.logging.log4j.util.LazyBoolean v;
boolean v;
label:
v = <org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.util.LazyBoolean GET_CLASS_LOADER_DISABLED>;
v = virtualinvoke v.<org.apache.logging.log4j.util.LazyBoolean: boolean getAsBoolean()>();
if v == 0 goto label;
staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getThisClassLoader()>();
goto label;
label:
v = <org.apache.logging.log4j.util.LoaderUtil: java.security.PrivilegedAction TCCL_GETTER>;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object runPrivileged(java.security.PrivilegedAction)>(v);
label:
return v;
label:
v := @caughtexception;
return null;
catch java.lang.SecurityException from label to label with label;
}
private static java.lang.ClassLoader getThisClassLoader()
{
java.lang.Class v;
java.lang.ClassLoader v;
v = class "Lorg/apache/logging/log4j/util/LoaderUtil;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
return v;
}
private static java.lang.Object runPrivileged(java.security.PrivilegedAction)
{
java.lang.Object v;
java.security.PrivilegedAction v;
java.lang.SecurityManager v;
v := @parameter: java.security.PrivilegedAction;
v = staticinvoke <java.lang.System: java.lang.SecurityManager getSecurityManager()>();
if v == null goto label;
v = staticinvoke <java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>(v);
goto label;
label:
v = interfaceinvoke v.<java.security.PrivilegedAction: java.lang.Object run()>();
label:
return v;
}
public static boolean isClassAvailable(java.lang.String)
{
java.lang.Throwable v, v;
org.apache.logging.log4j.Logger v;
java.lang.String v;
v := @parameter: java.lang.String;
label:
staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClass(java.lang.String)>(v);
label:
return 1;
label:
v := @caughtexception;
return 0;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Unknown error while checking existence of class `{}`", v, v);
return 0;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.LinkageError from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public static java.lang.Class loadClass(java.lang.String) throws java.lang.ClassNotFoundException
{
java.lang.Class v;
java.lang.ClassLoader v, v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: boolean isIgnoreTccl()>();
if v == 0 goto label;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getThisClassLoader()>();
goto label;
label:
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getThreadContextClassLoader()>();
label:
v = v;
if v != null goto label;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getThisClassLoader()>();
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 1, v);
return v;
}
public static java.lang.Class loadClassUnchecked(java.lang.String)
{
java.lang.Class v;
java.lang.ClassNotFoundException v;
java.lang.String v, v;
java.lang.NoClassDefFoundError v;
v := @parameter: java.lang.String;
label:
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClass(java.lang.String)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.NoClassDefFoundError;
v = virtualinvoke v.<java.lang.ClassNotFoundException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.NoClassDefFoundError: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.lang.NoClassDefFoundError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
catch java.lang.ClassNotFoundException from label to label with label;
}
public static java.lang.Object newInstanceOf(java.lang.Class) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException
{
java.lang.Object[] v;
java.lang.Class[] v;
java.lang.Class v;
java.lang.Object v;
java.lang.reflect.Constructor v;
v := @parameter: java.lang.Class;
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getDeclaredConstructor(java.lang.Class[])>(v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
return v;
}
public static java.lang.Object newInstanceOfUnchecked(java.lang.Class)
{
java.lang.Throwable v;
org.apache.logging.log4j.util.InternalException v;
java.lang.IllegalAccessException v;
java.lang.NoSuchMethodError v;
java.lang.NoSuchMethodException v;
java.lang.reflect.InvocationTargetException v;
java.lang.InstantiationError v;
java.lang.IllegalAccessError v;
java.lang.InstantiationException v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v, v, v;
v := @parameter: java.lang.Class;
label:
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOf(java.lang.Class)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.NoSuchMethodError;
v = virtualinvoke v.<java.lang.NoSuchMethodException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.NoSuchMethodError: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.lang.NoSuchMethodError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getCause()>();
v = new org.apache.logging.log4j.util.InternalException;
specialinvoke v.<org.apache.logging.log4j.util.InternalException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.InstantiationError;
v = virtualinvoke v.<java.lang.InstantiationException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.InstantiationError: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.lang.InstantiationError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.IllegalAccessError;
v = virtualinvoke v.<java.lang.IllegalAccessException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.IllegalAccessError: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.lang.IllegalAccessError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
catch java.lang.NoSuchMethodException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.InstantiationException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
}
public static java.lang.Object newInstanceOf(java.lang.String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException
{
java.lang.Class v;
java.lang.Object v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClass(java.lang.String)>(v);
v = staticinvoke <org.apache.logging.log4j.util.Cast: java.lang.Object cast(java.lang.Object)>(v);
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOf(java.lang.Class)>(v);
return v;
}
public static java.lang.Object newCheckedInstanceOfProperty(java.lang.String, java.lang.Class) throws java.lang.ClassNotFoundException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.NoSuchMethodException
{
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
java.util.function.Supplier v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil$lambda_newCheckedInstanceOfProperty_3__1053: java.util.function.Supplier bootstrap$()>();
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newCheckedInstanceOfProperty(java.lang.String,java.lang.Class,java.util.function.Supplier)>(v, v, v);
return v;
}
public static java.lang.Object newCheckedInstanceOfProperty(java.lang.String, java.lang.Class, java.util.function.Supplier) throws java.lang.ClassNotFoundException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.NoSuchMethodException
{
java.lang.Class v;
java.lang.Object v, v;
java.lang.String v, v;
java.util.function.Supplier v;
org.apache.logging.log4j.util.PropertiesUtil v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v := @parameter: java.util.function.Supplier;
v = staticinvoke <org.apache.logging.log4j.util.PropertiesUtil: org.apache.logging.log4j.util.PropertiesUtil getProperties()>();
v = virtualinvoke v.<org.apache.logging.log4j.util.PropertiesUtil: java.lang.String getStringProperty(java.lang.String)>(v);
if v != null goto label;
v = interfaceinvoke v.<java.util.function.Supplier: java.lang.Object get()>();
return v;
label:
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newCheckedInstanceOf(java.lang.String,java.lang.Class)>(v, v);
return v;
}
public static java.lang.Object newInstanceOfUnchecked(java.lang.String)
{
java.lang.Class v;
java.lang.Object v, v;
java.lang.String v;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClassUnchecked(java.lang.String)>(v);
v = staticinvoke <org.apache.logging.log4j.util.Cast: java.lang.Object cast(java.lang.Object)>(v);
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOfUnchecked(java.lang.Class)>(v);
return v;
}
public static java.lang.Object newCheckedInstanceOf(java.lang.String, java.lang.Class) throws java.lang.ClassNotFoundException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.NoSuchMethodException
{
java.lang.Class v, v, v;
java.lang.Object v;
java.lang.String v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClass(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.Class: java.lang.Class asSubclass(java.lang.Class)>(v);
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOf(java.lang.Class)>(v);
return v;
}
public static java.lang.Object newInstanceOfUnchecked(java.lang.String, java.lang.Class)
{
java.lang.Class v, v, v;
java.lang.Object v;
java.lang.String v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Class loadClassUnchecked(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.Class: java.lang.Class asSubclass(java.lang.Class)>(v);
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.Object newInstanceOfUnchecked(java.lang.Class)>(v);
return v;
}
private static boolean isIgnoreTccl()
{
org.apache.logging.log4j.util.PropertiesUtil v;
java.lang.Boolean v, v, v;
java.lang.String v, v, v;
boolean v, v, v;
v = <org.apache.logging.log4j.util.LoaderUtil: java.lang.Boolean ignoreTCCL>;
if v != null goto label;
v = staticinvoke <org.apache.logging.log4j.util.PropertiesUtil: org.apache.logging.log4j.util.PropertiesUtil getProperties()>();
v = virtualinvoke v.<org.apache.logging.log4j.util.PropertiesUtil: java.lang.String getStringProperty(java.lang.String,java.lang.String)>("log4j.ignoreTCL", null);
if v == null goto label;
v = "false";
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
<org.apache.logging.log4j.util.LoaderUtil: java.lang.Boolean ignoreTCCL> = v;
label:
v = <org.apache.logging.log4j.util.LoaderUtil: java.lang.Boolean ignoreTCCL>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
return v;
}
public static java.util.Collection findResources(java.lang.String)
{
java.lang.String v;
java.util.Collection v;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.util.Collection findResources(java.lang.String,boolean)>(v, 1);
return v;
}
static java.util.Collection findResources(java.lang.String, boolean)
{
java.util.Iterator v;
java.net.URL v;
java.util.Collection v;
int v;
java.lang.Object v;
java.lang.String v;
java.util.LinkedHashSet v;
boolean v, v;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.util.Collection findUrlResources(java.lang.String,boolean)>(v, v);
v = new java.util.LinkedHashSet;
v = interfaceinvoke v.<java.util.Collection: int size()>();
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(v);
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.logging.log4j.util.LoaderUtil$UrlResource: java.net.URL getUrl()>();
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
static java.util.Collection findUrlResources(java.lang.String, boolean)
{
java.lang.ClassLoader[] v;
java.util.Enumeration v;
org.apache.logging.log4j.util.LazyBoolean v;
int v, v;
org.apache.logging.log4j.util.LoaderUtil$UrlResource v;
java.lang.String v;
java.util.LinkedHashSet v;
boolean v, v, v;
java.io.IOException v;
org.apache.logging.log4j.Logger v;
java.lang.Class v;
java.lang.Object v;
java.lang.ClassLoader v, v, v, v;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = newarray (java.lang.ClassLoader)[3];
if v == 0 goto label;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil: java.lang.ClassLoader getThreadContextClassLoader()>();
goto label;
label:
v = null;
label:
v[0] = v;
v = class "Lorg/apache/logging/log4j/util/LoaderUtil;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v[1] = v;
v = <org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.util.LazyBoolean GET_CLASS_LOADER_DISABLED>;
v = virtualinvoke v.<org.apache.logging.log4j.util.LazyBoolean: boolean getAsBoolean()>();
if v == 0 goto label;
v = null;
goto label;
label:
v = staticinvoke <java.lang.ClassLoader: java.lang.ClassLoader getSystemClassLoader()>();
label:
v[2] = v;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v == null goto label;
label:
v = virtualinvoke v.<java.lang.ClassLoader: java.util.Enumeration getResources(java.lang.String)>(v);
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = new org.apache.logging.log4j.util.LoaderUtil$UrlResource;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
specialinvoke v.<org.apache.logging.log4j.util.LoaderUtil$UrlResource: void <init>(java.lang.ClassLoader,java.net.URL)>(v, v);
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
goto label;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("failed to collect resources of name `{}`", v, v);
label:
v = v + 1;
goto label;
label:
return v;
catch java.io.IOException from label to label with label;
}
static void <clinit>()
{
org.apache.logging.log4j.status.StatusLogger v;
java.lang.RuntimePermission v;
org.apache.logging.log4j.util.LazyBoolean v;
org.apache.logging.log4j.util.LoaderUtil$ThreadContextClassLoaderGetter v;
java.util.function.BooleanSupplier v;
v = staticinvoke <org.apache.logging.log4j.status.StatusLogger: org.apache.logging.log4j.status.StatusLogger getLogger()>();
<org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.Logger LOGGER> = v;
v = new java.lang.RuntimePermission;
specialinvoke v.<java.lang.RuntimePermission: void <init>(java.lang.String)>("getClassLoader");
<org.apache.logging.log4j.util.LoaderUtil: java.lang.RuntimePermission GET_CLASS_LOADER> = v;
v = new org.apache.logging.log4j.util.LazyBoolean;
v = staticinvoke <org.apache.logging.log4j.util.LoaderUtil$lambda_static_1__1055: java.util.function.BooleanSupplier bootstrap$()>();
specialinvoke v.<org.apache.logging.log4j.util.LazyBoolean: void <init>(java.util.function.BooleanSupplier)>(v);
<org.apache.logging.log4j.util.LoaderUtil: org.apache.logging.log4j.util.LazyBoolean GET_CLASS_LOADER_DISABLED> = v;
v = new org.apache.logging.log4j.util.LoaderUtil$ThreadContextClassLoaderGetter;
specialinvoke v.<org.apache.logging.log4j.util.LoaderUtil$ThreadContextClassLoaderGetter: void <init>()>();
<org.apache.logging.log4j.util.LoaderUtil: java.security.PrivilegedAction TCCL_GETTER> = v;
return;
}
}