FastJsonHttpMessageConverter$Spring4TypeResolvableHelper.smali
.class Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;
.super Ljava/lang/Object;
.source "FastJsonHttpMessageConverter.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "Spring4TypeResolvableHelper"
.end annotation
# static fields
.field private static hasClazzResolvableType:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
:try_start_0
const-string v0, "org.springframework.core.ResolvableType"
.line 370
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
const/4 v0, 0x1
.line 371
sput-boolean v0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->hasClazzResolvableType:Z
:try_end_8
.catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_8} :catch_9
goto :goto_c
:catch_9
const/4 v0, 0x0
.line 373
sput-boolean v0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->hasClazzResolvableType:Z
:goto_c
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 365
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static synthetic access$000()Z
.registers 1
.line 365
invoke-static {}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->isSupport()Z
move-result v0
return v0
.end method
.method static synthetic access$100(Ljava/lang/reflect/Type;Ljava/lang/Class;)Ljava/lang/reflect/Type;
.registers 2
.line 365
invoke-static {p0, p1}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->getType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object p0
return-object p0
.end method
.method private static getType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Ljava/lang/reflect/Type;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Class<",
"*>;)",
"Ljava/lang/reflect/Type;"
}
.end annotation
if-eqz p1, :cond_79
.line 384
invoke-static {p0}, Lorg/springframework/core/ResolvableType;->forType(Ljava/lang/reflect/Type;)Lorg/springframework/core/ResolvableType;
move-result-object v0
.line 385
instance-of v1, p0, Ljava/lang/reflect/TypeVariable;
if-eqz v1, :cond_1e
.line 386
move-object v0, p0
check-cast v0, Ljava/lang/reflect/TypeVariable;
invoke-static {p1}, Lorg/springframework/core/ResolvableType;->forClass(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
move-result-object p1
invoke-static {v0, p1}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->resolveVariable(Ljava/lang/reflect/TypeVariable;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
move-result-object p1
.line 387
sget-object v0, Lorg/springframework/core/ResolvableType;->NONE:Lorg/springframework/core/ResolvableType;
if-eq p1, v0, :cond_79
.line 388
invoke-virtual {p1}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object p0
return-object p0
.line 390
:cond_1e
instance-of v1, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v1, :cond_79
invoke-virtual {v0}, Lorg/springframework/core/ResolvableType;->hasUnresolvableGenerics()Z
move-result v1
if-eqz v1, :cond_79
.line 391
check-cast p0, Ljava/lang/reflect/ParameterizedType;
.line 392
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
array-length v1, v1
new-array v1, v1, [Ljava/lang/Class;
.line 393
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
const/4 v2, 0x0
.line 395
:goto_36
array-length v3, p0
if-ge v2, v3, :cond_6d
.line 396
aget-object v3, p0, v2
.line 397
instance-of v4, v3, Ljava/lang/reflect/TypeVariable;
if-eqz v4, :cond_60
.line 398
move-object v4, v3
check-cast v4, Ljava/lang/reflect/TypeVariable;
invoke-static {p1}, Lorg/springframework/core/ResolvableType;->forClass(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
move-result-object v5
invoke-static {v4, v5}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->resolveVariable(Ljava/lang/reflect/TypeVariable;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
move-result-object v4
.line 399
sget-object v5, Lorg/springframework/core/ResolvableType;->NONE:Lorg/springframework/core/ResolvableType;
if-eq v4, v5, :cond_55
.line 400
invoke-virtual {v4}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v3
aput-object v3, v1, v2
goto :goto_6a
.line 402
:cond_55
invoke-static {v3}, Lorg/springframework/core/ResolvableType;->forType(Ljava/lang/reflect/Type;)Lorg/springframework/core/ResolvableType;
move-result-object v3
invoke-virtual {v3}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v3
aput-object v3, v1, v2
goto :goto_6a
.line 405
:cond_60
invoke-static {v3}, Lorg/springframework/core/ResolvableType;->forType(Ljava/lang/reflect/Type;)Lorg/springframework/core/ResolvableType;
move-result-object v3
invoke-virtual {v3}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v3
aput-object v3, v1, v2
:goto_6a
add-int/lit8 v2, v2, 0x1
goto :goto_36
.line 409
:cond_6d
invoke-virtual {v0}, Lorg/springframework/core/ResolvableType;->getRawClass()Ljava/lang/Class;
move-result-object p0
invoke-static {p0, v1}, Lorg/springframework/core/ResolvableType;->forClassWithGenerics(Ljava/lang/Class;[Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
move-result-object p0
invoke-virtual {p0}, Lorg/springframework/core/ResolvableType;->getType()Ljava/lang/reflect/Type;
move-result-object p0
:cond_79
return-object p0
.end method
.method private static isSupport()Z
.registers 1
.line 378
sget-boolean v0, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->hasClazzResolvableType:Z
return v0
.end method
.method private static resolveVariable(Ljava/lang/reflect/TypeVariable;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/TypeVariable<",
"*>;",
"Lorg/springframework/core/ResolvableType;",
")",
"Lorg/springframework/core/ResolvableType;"
}
.end annotation
.line 418
invoke-virtual {p1}, Lorg/springframework/core/ResolvableType;->hasGenerics()Z
move-result v0
if-eqz v0, :cond_11
.line 419
invoke-static {p0, p1}, Lorg/springframework/core/ResolvableType;->forType(Ljava/lang/reflect/Type;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
move-result-object v0
.line 420
invoke-virtual {v0}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v1
if-eqz v1, :cond_11
return-object v0
.line 425
:cond_11
invoke-virtual {p1}, Lorg/springframework/core/ResolvableType;->getSuperType()Lorg/springframework/core/ResolvableType;
move-result-object v0
.line 426
sget-object v1, Lorg/springframework/core/ResolvableType;->NONE:Lorg/springframework/core/ResolvableType;
if-eq v0, v1, :cond_24
.line 427
invoke-static {p0, v0}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->resolveVariable(Ljava/lang/reflect/TypeVariable;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
move-result-object v0
.line 428
invoke-virtual {v0}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v1
if-eqz v1, :cond_24
return-object v0
.line 432
:cond_24
invoke-virtual {p1}, Lorg/springframework/core/ResolvableType;->getInterfaces()[Lorg/springframework/core/ResolvableType;
move-result-object p1
array-length v0, p1
const/4 v1, 0x0
:goto_2a
if-ge v1, v0, :cond_3c
aget-object v2, p1, v1
.line 433
invoke-static {p0, v2}, Lcom/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter$Spring4TypeResolvableHelper;->resolveVariable(Ljava/lang/reflect/TypeVariable;Lorg/springframework/core/ResolvableType;)Lorg/springframework/core/ResolvableType;
move-result-object v2
.line 434
invoke-virtual {v2}, Lorg/springframework/core/ResolvableType;->resolve()Ljava/lang/Class;
move-result-object v3
if-eqz v3, :cond_39
return-object v2
:cond_39
add-int/lit8 v1, v1, 0x1
goto :goto_2a
.line 438
:cond_3c
sget-object p0, Lorg/springframework/core/ResolvableType;->NONE:Lorg/springframework/core/ResolvableType;
return-object p0
.end method