public class org.apache.activemq.util.ClassLoadingAwareObjectInputStream extends java.io.ObjectInputStream
{
private static final org.slf4j.Logger LOG;
private static final java.lang.ClassLoader FALLBACK_CLASS_LOADER;
public static final java.lang.String[] serializablePackages;
private java.util.List trustedPackages;
private boolean trustAllPackages;
private final java.lang.ClassLoader inLoader;
public void <init>(java.io.InputStream) throws java.io.IOException
{
java.lang.String[] v;
java.util.ArrayList v;
java.util.List v, v;
java.lang.Class v;
java.lang.ClassLoader v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
java.io.InputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.io.InputStream;
specialinvoke v.<java.io.ObjectInputStream: void <init>(java.io.InputStream)>(v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages> = v;
v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: boolean trustAllPackages> = 0;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader inLoader> = v;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages>;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.String[] serializablePackages>;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
return;
}
protected java.lang.Class resolveClass(java.io.ObjectStreamClass) throws java.io.IOException, java.lang.ClassNotFoundException
{
java.lang.ClassLoader[] v;
java.io.ObjectStreamClass v;
java.lang.Thread v;
java.lang.Class v;
java.lang.ClassLoader v, v;
java.lang.String v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.io.ObjectStreamClass;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
v = virtualinvoke v.<java.io.ObjectStreamClass: java.lang.String getName()>();
v = newarray (java.lang.ClassLoader)[2];
v[0] = v;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader inLoader>;
v[1] = v;
v = specialinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.Class load(java.lang.String,java.lang.ClassLoader[])>(v, v);
specialinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: void checkSecurity(java.lang.Class)>(v);
return v;
}
protected java.lang.Class resolveProxyClass(java.lang.String[]) throws java.io.IOException, java.lang.ClassNotFoundException
{
java.lang.ClassLoader[] v;
java.lang.String[] v;
java.lang.Thread v;
int v, v, v;
java.lang.String v;
java.lang.Class[] v;
java.lang.IllegalArgumentException v, v, v;
java.lang.Class v, v;
java.lang.ClassNotFoundException v;
java.lang.ClassLoader v, v, v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.lang.String[];
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
v = lengthof v;
v = newarray (java.lang.Class)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = newarray (java.lang.ClassLoader)[1];
v[0] = v;
v = specialinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.Class load(java.lang.String,java.lang.ClassLoader[])>(v, v);
v[v] = v;
v = v + 1;
goto label;
label:
v = null;
label:
v = staticinvoke <java.lang.reflect.Proxy: java.lang.Class getProxyClass(java.lang.ClassLoader,java.lang.Class[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
label:
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader inLoader>;
v = staticinvoke <java.lang.reflect.Proxy: java.lang.Class getProxyClass(java.lang.ClassLoader,java.lang.Class[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
label:
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader FALLBACK_CLASS_LOADER>;
v = staticinvoke <java.lang.reflect.Proxy: java.lang.Class getProxyClass(java.lang.ClassLoader,java.lang.Class[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
label:
if v == null goto label;
specialinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: void checkSecurity(java.lang.Class)>(v);
return v;
label:
v = new java.lang.ClassNotFoundException;
specialinvoke v.<java.lang.ClassNotFoundException: void <init>(java.lang.String)>(null);
throw v;
catch java.lang.IllegalArgumentException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
}
public static boolean isAllAllowed()
{
int v;
java.lang.String[] v, v;
java.lang.String v;
boolean v, v;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.String[] serializablePackages>;
v = lengthof v;
if v != 1 goto label;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.String[] serializablePackages>;
v = v[0];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("*");
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean trustAllPackages()
{
java.util.List v, v;
int v;
java.lang.Object v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
boolean v, v, v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: boolean trustAllPackages>;
if v != 0 goto label;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages>;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("*");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void checkSecurity(java.lang.Class) throws java.lang.ClassNotFoundException
{
java.lang.String v, v, v, v;
boolean v, v, v, v, v, v;
java.util.Iterator v;
java.lang.Package v;
java.util.List v;
java.lang.Class v;
java.lang.ClassNotFoundException v;
java.lang.Object v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.lang.Class;
v = specialinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: boolean trustAllPackages()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
label:
return;
label:
v = 0;
v = virtualinvoke v.<java.lang.Class: java.lang.Package getPackage()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List getTrustedPackages()>();
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()>();
v = virtualinvoke v.<java.lang.Package: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Package: java.lang.String getName()>();
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.");
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == 0 goto label;
label:
v = 1;
label:
if v != 0 goto label;
v = new java.lang.ClassNotFoundException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Forbidden \u0001! This class is not trusted to be serialized as ObjectMessage payload. Please take a look at http://activemq.apache.org/objectmessage.html for more information on how to configure trusted classes.");
specialinvoke v.<java.lang.ClassNotFoundException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private transient java.lang.Class load(java.lang.String, java.lang.ClassLoader[]) throws java.lang.ClassNotFoundException
{
java.lang.ClassLoader[] v;
java.lang.Object[] v;
int v, v;
java.lang.String v;
boolean v;
org.slf4j.Logger v, v, v, v, v;
java.lang.Class v, v, v;
java.lang.ClassNotFoundException v;
java.lang.ClassLoader v, v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.lang.String;
v := @parameter: java.lang.ClassLoader[];
v = staticinvoke <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.Class loadSimpleType(java.lang.String)>(v);
if v == null goto label;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Loaded class: {} as simple type -> {}", v, v);
return v;
label:
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Attempting to load class: {} using classloader: {}", v, v);
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 0, v);
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v[1] = v;
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("Loaded class: {} using classloader: {} -> {}", v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Class not found: {} using classloader: {}", v, v);
v = v + 1;
goto label;
label:
v = <org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader FALLBACK_CLASS_LOADER>;
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 0, v);
return v;
catch java.lang.ClassNotFoundException from label to label with label;
}
public static java.lang.Class loadSimpleType(java.lang.String)
{
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Class v, v, v, v, v, v, v, v;
v := @parameter: java.lang.String;
v = "java.lang.byte[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "byte[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "[B";
label:
v = "java.lang.Byte[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Byte[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "[Ljava/lang/Byte;";
label:
v = "java.lang.Object[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Object[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "[Ljava/lang/Object;";
label:
v = "java.lang.String[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "String[]";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "[Ljava/lang/String;";
label:
v = "java.lang.String";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "String";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/String;";
label:
v = "java.lang.Boolean";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Boolean";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Boolean;";
label:
v = "boolean";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Boolean: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Integer";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Integer";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Integer;";
label:
v = "int";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Integer: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Long";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Long";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Long;";
label:
v = "long";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Long: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Short";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Short";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Short;";
label:
v = "short";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Short: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Byte";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Byte";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Byte;";
label:
v = "byte";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Byte: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Float";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Float";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Float;";
label:
v = "float";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Float: java.lang.Class TYPE>;
return v;
label:
v = "java.lang.Double";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "Double";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return class "Ljava/lang/Double;";
label:
v = "double";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Double: java.lang.Class TYPE>;
return v;
label:
v = "void";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Void: java.lang.Class TYPE>;
return v;
label:
return null;
}
public java.util.List getTrustedPackages()
{
java.util.List v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages>;
return v;
}
public void setTrustedPackages(java.util.List)
{
java.util.List v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.util.List;
v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages> = v;
return;
}
public void addTrustedPackage(java.lang.String)
{
java.util.List v;
java.lang.String v;
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: java.lang.String;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.util.List trustedPackages>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return;
}
public boolean isTrustAllPackages()
{
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
boolean v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v = v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: boolean trustAllPackages>;
return v;
}
public void setTrustAllPackages(boolean)
{
org.apache.activemq.util.ClassLoadingAwareObjectInputStream v;
boolean v;
v := @this: org.apache.activemq.util.ClassLoadingAwareObjectInputStream;
v := @parameter: boolean;
v.<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: boolean trustAllPackages> = v;
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
java.lang.Class v;
java.lang.String[] v;
java.lang.ClassLoader v;
java.lang.String v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/util/ClassLoadingAwareObjectInputStream;");
<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: org.slf4j.Logger LOG> = v;
v = class "Lorg/apache/activemq/util/ClassLoadingAwareObjectInputStream;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.ClassLoader FALLBACK_CLASS_LOADER> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String,java.lang.String)>("org.apache.activemq.SERIALIZABLE_PACKAGES", "java.lang,org.apache.activemq,org.fusesource.hawtbuf,com.thoughtworks.xstream.mapper");
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
<org.apache.activemq.util.ClassLoadingAwareObjectInputStream: java.lang.String[] serializablePackages> = v;
return;
}
}