WXReflectionUtils.smali
.class public Lcom/taobao/weex/utils/WXReflectionUtils;
.super Ljava/lang/Object;
.source "WXReflectionUtils.java"
# direct methods
.method public constructor <init>()V
.registers 1
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static getDeclaredField(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/reflect/Field;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"object",
"fieldName"
}
.end annotation
.line 104
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
.line 106
:goto_4
const-class v0, Ljava/lang/Object;
if-eq p0, v0, :cond_12
.line 108
:try_start_8
invoke-virtual {p0, p1}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object p0
:try_end_c
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_c} :catch_d
return-object p0
.line 106
:catch_d
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p0
goto :goto_4
:cond_12
const/4 p0, 0x0
return-object p0
.end method
.method public static parseArgument(Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"paramClazz",
"value"
}
.end annotation
if-eqz p1, :cond_1b
.line 35
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
if-ne v0, p0, :cond_9
return-object p1
.line 38
:cond_9
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_1b
.line 39
move-object v0, p0
check-cast v0, Ljava/lang/Class;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_1b
return-object p1
.line 44
:cond_1b
const-class v0, Ljava/lang/String;
if-ne p0, v0, :cond_29
.line 45
instance-of p0, p1, Ljava/lang/String;
if-eqz p0, :cond_24
goto :goto_28
:cond_24
invoke-static {p1}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
:goto_28
return-object p1
.line 46
:cond_29
sget-object v0, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-ne p0, v0, :cond_43
.line 47
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
sget-object v0, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
invoke-virtual {p0, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_3a
goto :goto_42
:cond_3a
invoke-static {p1}, Lcom/taobao/weex/utils/WXUtils;->getInt(Ljava/lang/Object;)I
move-result p0
invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p1
:goto_42
return-object p1
.line 48
:cond_43
sget-object v0, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-ne p0, v0, :cond_5d
.line 49
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
sget-object v0, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
invoke-virtual {p0, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_54
goto :goto_5c
:cond_54
invoke-static {p1}, Lcom/taobao/weex/utils/WXUtils;->getLong(Ljava/lang/Object;)J
move-result-wide p0
invoke-static {p0, p1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p1
:goto_5c
return-object p1
.line 50
:cond_5d
sget-object v0, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-ne p0, v0, :cond_77
.line 51
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
sget-object v0, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
invoke-virtual {p0, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_6e
goto :goto_76
:cond_6e
invoke-static {p1}, Lcom/taobao/weex/utils/WXUtils;->getDouble(Ljava/lang/Object;)D
move-result-wide p0
invoke-static {p0, p1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object p1
:goto_76
return-object p1
.line 52
:cond_77
sget-object v0, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-ne p0, v0, :cond_91
.line 53
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
sget-object v0, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
invoke-virtual {p0, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_88
goto :goto_90
:cond_88
invoke-static {p1}, Lcom/taobao/weex/utils/WXUtils;->getFloat(Ljava/lang/Object;)F
move-result p0
invoke-static {p0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object p1
:goto_90
return-object p1
.line 54
:cond_91
const-class v0, Lcom/alibaba/fastjson/JSONArray;
if-ne p0, v0, :cond_a0
if-eqz p1, :cond_a0
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
const-class v1, Lcom/alibaba/fastjson/JSONArray;
if-ne v0, v1, :cond_a0
return-object p1
.line 56
:cond_a0
const-class v0, Lcom/alibaba/fastjson/JSONObject;
if-ne p0, v0, :cond_af
if-eqz p1, :cond_af
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
const-class v1, Lcom/alibaba/fastjson/JSONObject;
if-ne v0, v1, :cond_af
return-object p1
.line 59
:cond_af
instance-of v0, p1, Ljava/lang/String;
if-eqz v0, :cond_b6
check-cast p1, Ljava/lang/String;
goto :goto_ba
:cond_b6
invoke-static {p1}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
:goto_ba
const/4 v0, 0x0
new-array v0, v0, [Lcom/alibaba/fastjson/parser/Feature;
invoke-static {p1, p0, v0}, Lcom/alibaba/fastjson/JSON;->parseObject(Ljava/lang/String;Ljava/lang/reflect/Type;[Lcom/alibaba/fastjson/parser/Feature;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method public static setProperty(Ljava/lang/Object;Ljava/lang/reflect/Field;Ljava/lang/Object;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"bean",
"field",
"value"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalAccessException;,
Ljava/lang/reflect/InvocationTargetException;,
Ljava/lang/NoSuchMethodException;
}
.end annotation
if-eqz p0, :cond_c
if-nez p1, :cond_5
goto :goto_c
:cond_5
const/4 v0, 0x1
.line 136
:try_start_6
invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 137
invoke-virtual {p1, p0, p2}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_c
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_c} :catch_c
:catch_c
:cond_c
:goto_c
return-void
.end method
.method public static setValue(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
.registers 6
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"obj",
"fieldName",
"value"
}
.end annotation
if-eqz p0, :cond_ad
.line 65
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_a
goto/16 :goto_ad
.line 71
:cond_a
:try_start_a
invoke-static {p0, p1}, Lcom/taobao/weex/utils/WXReflectionUtils;->getDeclaredField(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object p1
.line 74
instance-of v0, p2, Ljava/math/BigDecimal;
if-nez v0, :cond_1a
instance-of v0, p2, Ljava/lang/Number;
if-nez v0, :cond_1a
instance-of v0, p2, Ljava/lang/String;
if-eqz v0, :cond_5e
.line 75
:cond_1a
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Float;
if-eq v0, v1, :cond_84
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_2b
goto :goto_84
.line 77
:cond_2b
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Double;
if-eq v0, v1, :cond_77
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_3c
goto :goto_77
.line 79
:cond_3c
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Integer;
if-eq v0, v1, :cond_69
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_4d
goto :goto_69
.line 81
:cond_4d
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Boolean;
if-eq v0, v1, :cond_60
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_5e
goto :goto_60
:cond_5e
move-object v0, p2
goto :goto_90
.line 82
:cond_60
:goto_60
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Ljava/lang/String;)Ljava/lang/Boolean;
move-result-object v0
goto :goto_90
.line 80
:cond_69
:goto_69
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
double-to-int v0, v0
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
goto :goto_90
.line 78
:cond_77
:goto_77
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v0
goto :goto_90
.line 76
:cond_84
:goto_84
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result v0
invoke-static {v0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object v0
.line 86
:goto_90
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v1
sget-object v2, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-eq v1, v2, :cond_a0
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v1
const-class v2, Ljava/lang/Boolean;
if-ne v1, v2, :cond_aa
:cond_a0
if-eqz p2, :cond_aa
.line 88
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p2}, Ljava/lang/Boolean;->valueOf(Ljava/lang/String;)Ljava/lang/Boolean;
move-result-object v0
.line 92
:cond_aa
invoke-static {p0, p1, v0}, Lcom/taobao/weex/utils/WXReflectionUtils;->setProperty(Ljava/lang/Object;Ljava/lang/reflect/Field;Ljava/lang/Object;)V
:try_end_ad
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_ad} :catch_ad
:catch_ad
:cond_ad
:goto_ad
return-void
.end method