.class public Lcom/alibaba/fastjson/util/ASMUtils; .super Ljava/lang/Object; .source "ASMUtils.java" # static fields .field public static final IS_ANDROID:Z .field public static final JAVA_VM_NAME:Ljava/lang/String; # direct methods .method static constructor ()V .locals 1 const-string v0, "java.vm.name" .line 15 invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 sput-object v0, Lcom/alibaba/fastjson/util/ASMUtils;->JAVA_VM_NAME:Ljava/lang/String; .line 17 sget-object v0, Lcom/alibaba/fastjson/util/ASMUtils;->JAVA_VM_NAME:Ljava/lang/String; invoke-static {v0}, Lcom/alibaba/fastjson/util/ASMUtils;->isAndroid(Ljava/lang/String;)Z move-result v0 sput-boolean v0, Lcom/alibaba/fastjson/util/ASMUtils;->IS_ANDROID:Z return-void .end method .method public constructor ()V .locals 0 .line 13 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static checkName(Ljava/lang/String;)Z .locals 4 const/4 v0, 0x0 const/4 v1, 0x0 .line 140 :goto_0 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v2 const/4 v3, 0x1 if-ge v1, v2, :cond_2 .line 141 invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C move-result v2 if-lt v2, v3, :cond_1 const/16 v3, 0x7f if-le v2, v3, :cond_0 goto :goto_1 :cond_0 add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_1 :goto_1 return v0 :cond_2 return v3 .end method .method public static desc(Ljava/lang/Class;)Ljava/lang/String; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)", "Ljava/lang/String;" } .end annotation .line 44 invoke-virtual {p0}, Ljava/lang/Class;->isPrimitive()Z move-result v0 if-eqz v0, :cond_0 .line 45 invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->getPrimitiveLetter(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 return-object p0 .line 46 :cond_0 invoke-virtual {p0}, Ljava/lang/Class;->isArray()Z move-result v0 if-eqz v0, :cond_1 .line 47 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V const-string v1, "[" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class; move-result-object p0 invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->desc(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .line 49 :cond_1 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V const-string v1, "L" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->type(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string p0, ";" invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static desc(Ljava/lang/reflect/Method;)Ljava/lang/String; .locals 4 .line 32 invoke-virtual {p0}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; move-result-object v0 .line 33 new-instance v1, Ljava/lang/StringBuilder; array-length v2, v0 add-int/lit8 v2, v2, 0x1 shl-int/lit8 v2, v2, 0x4 invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(I)V const/16 v2, 0x28 .line 34 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; const/4 v2, 0x0 .line 35 :goto_0 array-length v3, v0 if-ge v2, v3, :cond_0 .line 36 aget-object v3, v0, v2 invoke-static {v3}, Lcom/alibaba/fastjson/util/ASMUtils;->desc(Ljava/lang/Class;)Ljava/lang/String; move-result-object v3 invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_0 const/16 v0, 0x29 .line 38 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; .line 39 invoke-virtual {p0}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; move-result-object p0 invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->desc(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 40 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static getFieldType(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Type; .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;", "Ljava/lang/String;", ")", "Ljava/lang/reflect/Type;" } .end annotation .line 103 :try_start_0 invoke-virtual {p0, p1}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; move-result-object p0 .line 105 invoke-virtual {p0}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type; move-result-object p0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 return-object p0 :catch_0 const/4 p0, 0x0 return-object p0 .end method .method public static getMethodType(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Type; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;", "Ljava/lang/String;", ")", "Ljava/lang/reflect/Type;" } .end annotation const/4 v0, 0x0 .line 93 :try_start_0 new-array v0, v0, [Ljava/lang/Class; invoke-virtual {p0, p1, v0}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object p0 .line 95 invoke-virtual {p0}, Ljava/lang/reflect/Method;->getGenericReturnType()Ljava/lang/reflect/Type; move-result-object p0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 return-object p0 :catch_0 const/4 p0, 0x0 return-object p0 .end method .method public static getPrimitiveLetter(Ljava/lang/Class;)Ljava/lang/String; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)", "Ljava/lang/String;" } .end annotation .line 68 sget-object v0, Ljava/lang/Integer;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 const-string p0, "I" return-object p0 .line 70 :cond_0 sget-object v0, Ljava/lang/Void;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_1 const-string p0, "V" return-object p0 .line 72 :cond_1 sget-object v0, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2 const-string p0, "Z" return-object p0 .line 74 :cond_2 sget-object v0, Ljava/lang/Character;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_3 const-string p0, "C" return-object p0 .line 76 :cond_3 sget-object v0, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_4 const-string p0, "B" return-object p0 .line 78 :cond_4 sget-object v0, Ljava/lang/Short;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_5 const-string p0, "S" return-object p0 .line 80 :cond_5 sget-object v0, Ljava/lang/Float;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_6 const-string p0, "F" return-object p0 .line 82 :cond_6 sget-object v0, Ljava/lang/Long;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_7 const-string p0, "J" return-object p0 .line 84 :cond_7 sget-object v0, Ljava/lang/Double;->TYPE:Ljava/lang/Class; invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_8 const-string p0, "D" return-object p0 .line 88 :cond_8 new-instance v0, Ljava/lang/IllegalStateException; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "Type: " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p0}, Ljava/lang/Class;->getCanonicalName()Ljava/lang/String; move-result-object p0 invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string p0, " is not a primitive type" invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-direct {v0, p0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw v0 .end method .method public static isAndroid(Ljava/lang/String;)Z .locals 2 const/4 v0, 0x0 if-nez p0, :cond_0 return v0 .line 24 :cond_0 invoke-virtual {p0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; move-result-object p0 const-string v1, "dalvik" .line 26 invoke-virtual {p0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z move-result v1 if-nez v1, :cond_1 const-string v1, "lemur" .line 27 invoke-virtual {p0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z move-result p0 if-eqz p0, :cond_2 :cond_1 const/4 v0, 0x1 :cond_2 return v0 .end method .method public static parseArray(Ljava/util/Collection;Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)V .locals 4 .line 118 iget-object p4, p2, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer; .line 119 invoke-interface {p4}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v0 const/16 v1, 0x10 const/16 v2, 0x8 if-ne v0, v2, :cond_0 .line 120 invoke-interface {p4, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V :cond_0 const/16 v0, 0xe .line 123 invoke-virtual {p2, v0, v0}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(II)V const/4 v2, 0x0 .line 127 :goto_0 invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v3 invoke-interface {p1, p2, p3, v3}, Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;->deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object; move-result-object v3 .line 128 invoke-interface {p0, v3}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z add-int/lit8 v2, v2, 0x1 .line 130 invoke-interface {p4}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v3 if-ne v3, v1, :cond_1 .line 131 invoke-interface {p4, v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V goto :goto_0 :cond_1 const/16 p0, 0xf .line 136 invoke-virtual {p2, p0, v1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(II)V return-void .end method .method public static type(Ljava/lang/Class;)Ljava/lang/String; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)", "Ljava/lang/String;" } .end annotation .line 54 invoke-virtual {p0}, Ljava/lang/Class;->isArray()Z move-result v0 if-eqz v0, :cond_0 .line 55 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V const-string v1, "[" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class; move-result-object p0 invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->desc(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .line 57 :cond_0 invoke-virtual {p0}, Ljava/lang/Class;->isPrimitive()Z move-result v0 if-nez v0, :cond_1 .line 58 invoke-virtual {p0}, Ljava/lang/Class;->getName()Ljava/lang/String; move-result-object p0 const/16 v0, 0x2e const/16 v1, 0x2f .line 59 invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(CC)Ljava/lang/String; move-result-object p0 return-object p0 .line 61 :cond_1 invoke-static {p0}, Lcom/alibaba/fastjson/util/ASMUtils;->getPrimitiveLetter(Ljava/lang/Class;)Ljava/lang/String; move-result-object p0 return-object p0 .end method