ASMClassLoader.smali

.class public Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;
.super Ljava/lang/ClassLoader;


# static fields
.field private static a:Ljava/security/ProtectionDomain;

.field private static b:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map<",
            "Ljava/lang/String;",
            "Ljava/lang/Class<",
            "*>;>;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 6

    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    sput-object v0, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->b:Ljava/util/Map;

    new-instance v0, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader$1;

    invoke-direct {v0}, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader$1;-><init>()V

    invoke-static {v0}, Ljava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/security/ProtectionDomain;

    sput-object v0, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->a:Ljava/security/ProtectionDomain;

    const/16 v0, 0x38

    new-array v0, v0, [Ljava/lang/Class;

    const-class v1, Lcom/tradplus/ads/common/serialization/JSON;

    const/4 v2, 0x0

    aput-object v1, v0, v2

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONObject;

    const/4 v3, 0x1

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONArray;

    const/4 v3, 0x2

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONPath;

    const/4 v3, 0x3

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONAware;

    const/4 v3, 0x4

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONException;

    const/4 v3, 0x5

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONPathException;

    const/4 v3, 0x6

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONReader;

    const/4 v3, 0x7

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONStreamAware;

    const/16 v3, 0x8

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/JSONWriter;

    const/16 v3, 0x9

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/TypeReference;

    const/16 v3, 0xa

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/16 v3, 0xb

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/TypeUtils;

    const/16 v3, 0xc

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/IOUtils;

    const/16 v3, 0xd

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/IdentityHashMap;

    const/16 v3, 0xe

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/ParameterizedTypeImpl;

    const/16 v3, 0xf

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    const/16 v3, 0x10

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/ObjectSerializer;

    const/16 v3, 0x11

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/JavaBeanSerializer;

    const/16 v3, 0x12

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializeFilterable;

    const/16 v3, 0x13

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializeBeanInfo;

    const/16 v3, 0x14

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/JSONSerializer;

    const/16 v3, 0x15

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializeWriter;

    const/16 v3, 0x16

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializeFilter;

    const/16 v3, 0x17

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/Labels;

    const/16 v3, 0x18

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/LabelFilter;

    const/16 v3, 0x19

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/ContextValueFilter;

    const/16 v3, 0x1a

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/AfterFilter;

    const/16 v3, 0x1b

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/BeforeFilter;

    const/16 v3, 0x1c

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/NameFilter;

    const/16 v3, 0x1d

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/PropertyFilter;

    const/16 v3, 0x1e

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/PropertyPreFilter;

    const/16 v3, 0x1f

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/ValueFilter;

    const/16 v3, 0x20

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    const/16 v3, 0x21

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/ContextObjectSerializer;

    const/16 v3, 0x22

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerialContext;

    const/16 v3, 0x23

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/SerializeConfig;

    const/16 v3, 0x24

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/JavaBeanDeserializer;

    const/16 v3, 0x25

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/ParserConfig;

    const/16 v3, 0x26

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/DefaultJSONParser;

    const/16 v3, 0x27

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/JSONLexer;

    const/16 v3, 0x28

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/JSONLexerBase;

    const/16 v3, 0x29

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/ParseContext;

    const/16 v3, 0x2a

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/JSONToken;

    const/16 v3, 0x2b

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/SymbolTable;

    const/16 v3, 0x2c

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/Feature;

    const/16 v3, 0x2d

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/JSONScanner;

    const/16 v3, 0x2e

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/JSONReaderScanner;

    const/16 v3, 0x2f

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/AutowiredObjectDeserializer;

    const/16 v3, 0x30

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/ObjectDeserializer;

    const/16 v3, 0x31

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/ExtraProcessor;

    const/16 v3, 0x32

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/ExtraProcessable;

    const/16 v3, 0x33

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/ExtraTypeProvider;

    const/16 v3, 0x34

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/serializer/BeanContext;

    const/16 v3, 0x35

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/FieldDeserializer;

    const/16 v3, 0x36

    aput-object v1, v0, v3

    const-class v1, Lcom/tradplus/ads/common/serialization/parser/deserializer/DefaultFieldDeserializer;

    const/16 v3, 0x37

    aput-object v1, v0, v3

    array-length v1, v0

    :goto_161
    if-ge v2, v1, :cond_171

    aget-object v3, v0, v2

    sget-object v4, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->b:Ljava/util/Map;

    invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v5

    invoke-interface {v4, v5, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    add-int/lit8 v2, v2, 0x1

    goto :goto_161

    :cond_171
    return-void
.end method

.method public constructor <init>()V
    .registers 2

    invoke-static {}, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->a()Ljava/lang/ClassLoader;

    move-result-object v0

    invoke-direct {p0, v0}, Ljava/lang/ClassLoader;-><init>(Ljava/lang/ClassLoader;)V

    return-void
.end method

.method public constructor <init>(Ljava/lang/ClassLoader;)V
    .registers 2

    invoke-direct {p0, p1}, Ljava/lang/ClassLoader;-><init>(Ljava/lang/ClassLoader;)V

    return-void
.end method

.method static a()Ljava/lang/ClassLoader;
    .registers 2

    invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;

    move-result-object v0

    if-eqz v0, :cond_14

    :try_start_a
    const-class v1, Lcom/tradplus/ads/common/serialization/JSON;

    invoke-virtual {v1}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
    :try_end_13
    .catch Ljava/lang/ClassNotFoundException; {:try_start_a .. :try_end_13} :catch_14

    return-object v0

    :catch_14
    :cond_14
    const-class v0, Lcom/tradplus/ads/common/serialization/JSON;

    invoke-virtual {v0}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v0

    return-object v0
.end method


# virtual methods
.method public defineClassPublic(Ljava/lang/String;[BII)Ljava/lang/Class;
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "[BII)",
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation

    sget-object v5, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->a:Ljava/security/ProtectionDomain;

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move v3, p3

    move v4, p4

    invoke-virtual/range {v0 .. v5}, Ljava/lang/ClassLoader;->defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;

    move-result-object p1

    return-object p1
.end method

.method public isExternalClass(Ljava/lang/Class;)Z
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;)Z"
        }
    .end annotation

    invoke-virtual {p1}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object p1

    const/4 v0, 0x0

    if-nez p1, :cond_8

    return v0

    :cond_8
    move-object v1, p0

    :goto_9
    if-eqz v1, :cond_13

    if-ne v1, p1, :cond_e

    return v0

    :cond_e
    invoke-virtual {v1}, Ljava/lang/ClassLoader;->getParent()Ljava/lang/ClassLoader;

    move-result-object v1

    goto :goto_9

    :cond_13
    const/4 p1, 0x1

    return p1
.end method

.method protected loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Z)",
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation

    sget-object v0, Lcom/tradplus/ads/common/serialization/util/ASMClassLoader;->b:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Class;

    if-eqz v0, :cond_b

    return-object v0

    :cond_b
    :try_start_b
    invoke-super {p0, p1, p2}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class;

    move-result-object p1
    :try_end_f
    .catch Ljava/lang/ClassNotFoundException; {:try_start_b .. :try_end_f} :catch_10

    return-object p1

    :catch_10
    move-exception p1

    throw p1
.end method