public class org.glassfish.appclient.client.acc.ACCClassLoader extends org.glassfish.common.util.GlassfishUrlClassLoader
{
private static final java.lang.String AGENT_LOADER_CLASS_NAME;
private static org.glassfish.appclient.client.acc.ACCClassLoader instance;
private org.glassfish.appclient.client.acc.ACCClassLoader shadow;
private boolean shouldTransform;
private final java.util.List transformers;
private org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate;
public static synchronized org.glassfish.appclient.client.acc.ACCClassLoader newInstance(java.lang.ClassLoader, boolean)
{
java.lang.IllegalStateException v;
java.lang.Thread v;
org.glassfish.appclient.client.acc.ACCClassLoader v, v, v;
java.lang.String v;
boolean v, v;
java.lang.RuntimeException v;
java.security.PrivilegedAction v;
java.lang.Exception v;
java.lang.Class v;
java.lang.Object v;
java.lang.ClassLoader v, v, v;
v := @parameter: java.lang.ClassLoader;
v := @parameter: boolean;
v = <org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader instance>;
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("already set");
throw v;
label:
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.ClassLoader: java.lang.ClassLoader getParent()>();
goto label;
label:
v = v;
label:
v = staticinvoke <org.glassfish.appclient.client.acc.ACCClassLoader$lambda_newInstance_0__2: java.security.PrivilegedAction bootstrap$(java.lang.ClassLoader,boolean)>(v, v);
v = staticinvoke <java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>(v);
<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader instance> = v;
if v == 0 goto label;
label:
v = <org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader instance>;
staticinvoke <org.glassfish.appclient.client.acc.ACCClassLoader: void adjustACCAgentClassLoaderParent(org.glassfish.appclient.client.acc.ACCClassLoader)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = <org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader instance>;
return v;
catch java.lang.Exception from label to label with label;
}
public static org.glassfish.appclient.client.acc.ACCClassLoader instance()
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
v = <org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader instance>;
return v;
}
private static void adjustACCAgentClassLoaderParent(org.glassfish.appclient.client.acc.ACCClassLoader) throws java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.Class v;
java.lang.ClassLoader v;
java.lang.String v;
boolean v, v;
v := @parameter: org.glassfish.appclient.client.acc.ACCClassLoader;
v = staticinvoke <java.lang.ClassLoader: java.lang.ClassLoader getSystemClassLoader()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader");
if v == 0 goto label;
v = v instanceof java.util.function.Consumer;
if v == 0 goto label;
interfaceinvoke v.<java.util.function.Consumer: void accept(java.lang.Object)>(v);
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("org.glassfish.appclient.acc.agentLoaderDone", "true");
label:
return;
}
public void <init>(java.lang.ClassLoader, boolean)
{
java.net.URL[] v;
org.glassfish.appclient.common.ClientClassLoaderDelegate v;
java.util.List v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassLoader v;
boolean v;
java.util.ArrayList v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.ClassLoader;
v := @parameter: boolean;
v = newarray (java.net.URL)[0];
specialinvoke v.<org.glassfish.common.util.GlassfishUrlClassLoader: void <init>(java.net.URL[],java.lang.ClassLoader)>(v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <java.util.Collections: java.util.List synchronizedList(java.util.List)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.util.List transformers> = v;
v.<org.glassfish.appclient.client.acc.ACCClassLoader: boolean shouldTransform> = v;
v = new org.glassfish.appclient.common.ClientClassLoaderDelegate;
specialinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: void <init>(java.net.URLClassLoader)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate> = v;
return;
}
public void <init>(java.net.URL[], java.lang.ClassLoader)
{
java.net.URL[] v;
org.glassfish.appclient.common.ClientClassLoaderDelegate v;
java.util.List v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassLoader v;
java.util.ArrayList v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.net.URL[];
v := @parameter: java.lang.ClassLoader;
specialinvoke v.<org.glassfish.common.util.GlassfishUrlClassLoader: void <init>(java.net.URL[],java.lang.ClassLoader)>(v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <java.util.Collections: java.util.List synchronizedList(java.util.List)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.util.List transformers> = v;
v = new org.glassfish.appclient.common.ClientClassLoaderDelegate;
specialinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: void <init>(java.net.URLClassLoader)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate> = v;
return;
}
private void <init>(java.net.URL[], java.lang.ClassLoader, boolean)
{
java.net.URL[] v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassLoader v;
boolean v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.net.URL[];
v := @parameter: java.lang.ClassLoader;
v := @parameter: boolean;
specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: void <init>(java.net.URL[],java.lang.ClassLoader)>(v, v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: boolean shouldTransform> = v;
return;
}
public synchronized void appendURL(java.net.URL)
{
java.net.URL v;
org.glassfish.appclient.client.acc.ACCClassLoader v, v, v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.net.URL;
virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: void addURL(java.net.URL)>(v);
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow>;
if v == null goto label;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow>;
virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: void addURL(java.net.URL)>(v);
label:
return;
}
public void addTransformer(java.lang.instrument.ClassFileTransformer)
{
java.lang.instrument.ClassFileTransformer v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.util.List v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.instrument.ClassFileTransformer;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.util.List transformers>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return;
}
public void setShouldTransform(boolean)
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
boolean v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: boolean;
v.<org.glassfish.appclient.client.acc.ACCClassLoader: boolean shouldTransform> = v;
return;
}
synchronized org.glassfish.appclient.client.acc.ACCClassLoader shadow()
{
org.glassfish.appclient.client.acc.ACCClassLoader v, v, v;
java.lang.Object v;
org.glassfish.appclient.client.acc.ACCClassLoader$1 v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow>;
if v != null goto label;
v = new org.glassfish.appclient.client.acc.ACCClassLoader$1;
specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader$1: void <init>(org.glassfish.appclient.client.acc.ACCClassLoader)>(v);
v = staticinvoke <java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow> = v;
label:
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow>;
return v;
}
protected java.lang.Class findClass(java.lang.String) throws java.lang.ClassNotFoundException
{
org.glassfish.appclient.client.acc.ACCClassLoader v, v;
java.lang.Class v, v, v;
java.lang.String v;
boolean v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.String;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: boolean shouldTransform>;
if v != 0 goto label;
v = specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.Class findClassUnshadowed(java.lang.String)>(v);
return v;
label:
v = virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.client.acc.ACCClassLoader shadow()>();
v = specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.Class findClassUnshadowed(java.lang.String)>(v);
v = specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.Class copyClass(java.lang.Class)>(v);
return v;
}
private java.lang.Class copyClass(java.lang.Class) throws java.lang.ClassNotFoundException
{
byte[] v;
java.lang.instrument.IllegalClassFormatException v;
java.util.Iterator v;
java.util.List v;
java.security.ProtectionDomain v;
int v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.Class v, v;
java.lang.ClassNotFoundException v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.security.ProtectionDomain getProtectionDomain()>();
v = specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: byte[] readByteCode(java.lang.String)>(v);
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.util.List transformers>;
v = interfaceinvoke v.<java.util.List: 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()>();
label:
v = interfaceinvoke v.<java.lang.instrument.ClassFileTransformer: byte[] transform(java.lang.ClassLoader,java.lang.String,java.lang.Class,java.security.ProtectionDomain,byte[])>(v, v, null, v, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.ClassNotFoundException;
specialinvoke v.<java.lang.ClassNotFoundException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = lengthof v;
v = virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.Class defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)>(v, v, 0, v, v);
return v;
catch java.lang.instrument.IllegalClassFormatException from label to label with label;
}
private java.lang.Class findClassUnshadowed(java.lang.String) throws java.lang.ClassNotFoundException
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.Class v;
java.lang.String v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.glassfish.common.util.GlassfishUrlClassLoader: java.lang.Class findClass(java.lang.String)>(v);
return v;
}
private byte[] readByteCode(java.lang.String) throws java.lang.ClassNotFoundException
{
java.lang.Throwable v;
byte[] v;
java.io.ByteArrayOutputStream v;
java.io.IOException v;
int v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassNotFoundException v, v;
java.lang.String v, v, v;
java.io.InputStream v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
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[])>("\u.class");
label:
v = virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.io.InputStream getResourceAsStream(java.lang.String)>(v);
label:
if v != null goto label;
v = new java.lang.ClassNotFoundException;
specialinvoke v.<java.lang.ClassNotFoundException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = virtualinvoke v.<java.io.InputStream: int available()>();
staticinvoke <com.sun.enterprise.util.io.FileUtils: void copy(java.io.InputStream,java.io.OutputStream,long)>(v, v, v);
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
label:
virtualinvoke v.<java.io.InputStream: void close()>();
label:
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new java.lang.ClassNotFoundException;
specialinvoke v.<java.lang.ClassNotFoundException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
protected java.security.PermissionCollection getPermissions(java.security.CodeSource)
{
java.security.PermissionCollection v, v, v, v, v;
java.lang.SecurityManager v;
org.glassfish.appclient.common.ClientClassLoaderDelegate v, v, v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.security.CodeSource v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.security.CodeSource;
v = staticinvoke <java.lang.System: java.lang.SecurityManager getSecurityManager()>();
if v != null goto label;
v = specialinvoke v.<org.glassfish.common.util.GlassfishUrlClassLoader: java.security.PermissionCollection getPermissions(java.security.CodeSource)>(v);
return v;
label:
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate>;
v = virtualinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: java.security.PermissionCollection getCachedPerms(java.security.CodeSource)>(v);
if v == null goto label;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate>;
v = virtualinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: java.security.PermissionCollection getCachedPerms(java.security.CodeSource)>(v);
return v;
label:
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate>;
v = specialinvoke v.<org.glassfish.common.util.GlassfishUrlClassLoader: java.security.PermissionCollection getPermissions(java.security.CodeSource)>(v);
v = virtualinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: java.security.PermissionCollection getPermissions(java.security.CodeSource,java.security.PermissionCollection)>(v, v);
return v;
}
public void processDeclaredPermissions() throws java.io.IOException
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
org.glassfish.appclient.common.ClientClassLoaderDelegate v, v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v = v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate>;
if v != null goto label;
v = new org.glassfish.appclient.common.ClientClassLoaderDelegate;
specialinvoke v.<org.glassfish.appclient.common.ClientClassLoaderDelegate: void <init>(java.net.URLClassLoader)>(v);
v.<org.glassfish.appclient.client.acc.ACCClassLoader: org.glassfish.appclient.common.ClientClassLoaderDelegate clientCLDelegate> = v;
label:
return;
}
public java.util.Enumeration getResources(java.lang.String) throws java.io.IOException
{
com.sun.enterprise.loader.ResourceLocator v;
java.util.Enumeration v;
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassLoader v;
java.lang.String v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v := @parameter: java.lang.String;
v = new com.sun.enterprise.loader.ResourceLocator;
v = specialinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.ClassLoader getParentClassLoader()>();
specialinvoke v.<com.sun.enterprise.loader.ResourceLocator: void <init>(java.net.URLClassLoader,java.lang.ClassLoader,boolean)>(v, v, 1);
v = virtualinvoke v.<com.sun.enterprise.loader.ResourceLocator: java.util.Enumeration getResources(java.lang.String)>(v);
return v;
}
private java.lang.ClassLoader getParentClassLoader()
{
org.glassfish.appclient.client.acc.ACCClassLoader v;
java.lang.ClassLoader v, v;
v := @this: org.glassfish.appclient.client.acc.ACCClassLoader;
v = virtualinvoke v.<org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.ClassLoader getParent()>();
if v != null goto label;
v = staticinvoke <org.glassfish.appclient.client.acc.ACCClassLoader: java.lang.ClassLoader getSystemClassLoader()>();
return v;
label:
return v;
}
}