.class public Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer; .super Ljava/lang/Object; .source "EnumDeserializer.java" # interfaces .implements Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer; # instance fields .field private final enumClass:Ljava/lang/Class; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Class<", "*>;" } .end annotation .end field .field private final values:[Ljava/lang/Enum; # direct methods .method public constructor (Ljava/lang/Class;)V .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)V" } .end annotation .line 16 invoke-direct {p0}, Ljava/lang/Object;->()V .line 17 iput-object p1, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->enumClass:Ljava/lang/Class; .line 18 invoke-virtual {p1}, Ljava/lang/Class;->getEnumConstants()[Ljava/lang/Object; move-result-object p1 check-cast p1, [Ljava/lang/Enum; iput-object p1, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->values:[Ljava/lang/Enum; return-void .end method # virtual methods .method public deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/alibaba/fastjson/parser/DefaultJSONParser;", "Ljava/lang/reflect/Type;", "Ljava/lang/Object;", ")TT;" } .end annotation .line 25 :try_start_0 iget-object p2, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer; .line 26 invoke-interface {p2}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result p3 const/4 v0, 0x2 const/16 v1, 0x10 if-ne p3, v0, :cond_1 .line 28 invoke-interface {p2}, Lcom/alibaba/fastjson/parser/JSONLexer;->intValue()I move-result p1 .line 29 invoke-interface {p2, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V if-ltz p1, :cond_0 .line 31 iget-object p2, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->values:[Ljava/lang/Enum; array-length p2, p2 if-gt p1, p2, :cond_0 .line 35 iget-object p2, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->values:[Ljava/lang/Enum; aget-object p1, p2, p1 return-object p1 .line 32 :cond_0 new-instance p2, Lcom/alibaba/fastjson/JSONException; new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V const-string v0, "parse enum " invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; iget-object v0, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->enumClass:Ljava/lang/Class; invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String; move-result-object v0 invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v0, " error, value : " invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p2, p1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw p2 :cond_1 const/4 v0, 0x4 const/4 v2, 0x0 if-ne p3, v0, :cond_3 .line 37 invoke-interface {p2}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object p1 .line 38 invoke-interface {p2, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 40 invoke-virtual {p1}, Ljava/lang/String;->length()I move-result p2 if-nez p2, :cond_2 return-object v2 .line 44 :cond_2 iget-object p2, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->enumClass:Ljava/lang/Class; invoke-static {p2, p1}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; move-result-object p1 return-object p1 :cond_3 const/16 v0, 0x8 if-ne p3, v0, :cond_4 .line 47 invoke-interface {p2, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V return-object v2 .line 51 :cond_4 invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object; move-result-object p1 .line 54 new-instance p2, Lcom/alibaba/fastjson/JSONException; new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V const-string v0, "parse enum " invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; iget-object v0, p0, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->enumClass:Ljava/lang/Class; invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String; move-result-object v0 invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v0, " error, value : " invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p2, p1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw p2 :try_end_0 .catch Lcom/alibaba/fastjson/JSONException; {:try_start_0 .. :try_end_0} :catch_1 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 :catch_0 move-exception p1 .line 58 new-instance p2, Lcom/alibaba/fastjson/JSONException; invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; move-result-object p3 invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 :catch_1 move-exception p1 .line 56 throw p1 .end method .method public getFastMatchToken()I .locals 1 const/4 v0, 0x2 return v0 .end method