FieldUtil.smali
.class public Lcom/litesuits/orm/db/utils/FieldUtil;
.super Ljava/lang/Object;
.source "FieldUtil.java"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 20
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static get(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
.registers 3
.param p0, "f" # Ljava/lang/reflect/Field;
.param p1, "obj" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalArgumentException;,
Ljava/lang/IllegalAccessException;
}
.end annotation
.line 68
const/4 v0, 0x1
invoke-virtual {p0, v0}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 69
invoke-virtual {p0, p1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method public static getAllDeclaredFields(Ljava/lang/Class;)Ljava/util/List;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)",
"Ljava/util/List<",
"Ljava/lang/reflect/Field;",
">;"
}
.end annotation
.line 116
.local p0, "claxx":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 117
.local v0, "fieldList":Ljava/util/LinkedList;, "Ljava/util/LinkedList<Ljava/lang/reflect/Field;>;"
:goto_5
if-eqz p0, :cond_26
const-class v1, Ljava/lang/Object;
if-eq p0, v1, :cond_26
.line 118
invoke-virtual {p0}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;
move-result-object v1
.line 119
.local v1, "fs":[Ljava/lang/reflect/Field;
const/4 v2, 0x0
.local v2, "i":I
:goto_10
array-length v3, v1
if-ge v2, v3, :cond_21
.line 120
aget-object v3, v1, v2
.line 121
.local v3, "f":Ljava/lang/reflect/Field;
invoke-static {v3}, Lcom/litesuits/orm/db/utils/FieldUtil;->isInvalid(Ljava/lang/reflect/Field;)Z
move-result v4
if-nez v4, :cond_1e
.line 122
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
.line 119
.end local v3 # "f":Ljava/lang/reflect/Field;
:cond_1e
add-int/lit8 v2, v2, 0x1
goto :goto_10
.line 125
.end local v2 # "i":I
:cond_21
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p0
.line 126
.end local v1 # "fs":[Ljava/lang/reflect/Field;
goto :goto_5
.line 127
:cond_26
return-object v0
.end method
.method public static getAssignedKeyObject(Lcom/litesuits/orm/db/model/Primarykey;Ljava/lang/Object;)Ljava/lang/Object;
.registers 8
.param p0, "key" # Lcom/litesuits/orm/db/model/Primarykey;
.param p1, "entity" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalArgumentException;,
Ljava/lang/IllegalAccessException;
}
.end annotation
.line 98
iget-object v0, p0, Lcom/litesuits/orm/db/model/Primarykey;->field:Ljava/lang/reflect/Field;
invoke-static {v0, p1}, Lcom/litesuits/orm/db/utils/FieldUtil;->get(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 99
.local v0, "obj":Ljava/lang/Object;
invoke-virtual {p0}, Lcom/litesuits/orm/db/model/Primarykey;->isAssignedByMyself()Z
move-result v1
if-nez v1, :cond_24
invoke-virtual {p0}, Lcom/litesuits/orm/db/model/Primarykey;->isAssignedBySystem()Z
move-result v1
if-eqz v1, :cond_22
if-eqz v0, :cond_22
move-object v1, v0
check-cast v1, Ljava/lang/Number;
invoke-virtual {v1}, Ljava/lang/Number;->longValue()J
move-result-wide v1
const-wide/16 v3, 0x0
cmp-long v5, v1, v3
if-lez v5, :cond_22
goto :goto_24
.line 101
:cond_22
const/4 v1, 0x0
return-object v1
.line 100
:cond_24
:goto_24
return-object v0
.end method
.method public static getComponentType(Ljava/lang/reflect/Field;)Ljava/lang/Class;
.registers 2
.param p0, "f" # Ljava/lang/reflect/Field;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Field;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 92
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v0
return-object v0
.end method
.method public static getGenericType(Ljava/lang/reflect/Field;)Ljava/lang/Class;
.registers 4
.param p0, "f" # Ljava/lang/reflect/Field;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Field;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 76
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;
move-result-object v0
.line 77
.local v0, "type":Ljava/lang/reflect/Type;
instance-of v1, v0, Ljava/lang/reflect/ParameterizedType;
if-eqz v1, :cond_1a
.line 78
move-object v1, v0
check-cast v1, Ljava/lang/reflect/ParameterizedType;
invoke-interface {v1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
const/4 v2, 0x0
aget-object v0, v1, v2
.line 79
instance-of v1, v0, Ljava/lang/Class;
if-eqz v1, :cond_22
.line 80
move-object v1, v0
check-cast v1, Ljava/lang/Class;
return-object v1
.line 82
:cond_1a
instance-of v1, v0, Ljava/lang/Class;
if-eqz v1, :cond_22
.line 83
move-object v1, v0
check-cast v1, Ljava/lang/Class;
return-object v1
.line 85
:cond_22
const/4 v1, 0x0
return-object v1
.end method
.method public static isIgnored(Ljava/lang/reflect/Field;)Z
.registers 2
.param p0, "f" # Ljava/lang/reflect/Field;
.line 26
const-class v0, Lcom/litesuits/orm/db/annotation/Ignore;
invoke-virtual {p0, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
if-eqz v0, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method public static isInteger(Ljava/lang/reflect/Field;)Z
.registers 3
.param p0, "field" # Ljava/lang/reflect/Field;
.line 42
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-eq v0, v1, :cond_13
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Integer;
if-eq v0, v1, :cond_11
goto :goto_13
:cond_11
const/4 v0, 0x0
goto :goto_14
:cond_13
:goto_13
const/4 v0, 0x1
:goto_14
return v0
.end method
.method public static isInvalid(Ljava/lang/reflect/Field;)Z
.registers 2
.param p0, "f" # Ljava/lang/reflect/Field;
.line 33
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v0
invoke-static {v0}, Ljava/lang/reflect/Modifier;->isStatic(I)Z
move-result v0
if-eqz v0, :cond_14
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v0
invoke-static {v0}, Ljava/lang/reflect/Modifier;->isFinal(I)Z
move-result v0
if-nez v0, :cond_23
:cond_14
invoke-static {p0}, Lcom/litesuits/orm/db/utils/FieldUtil;->isIgnored(Ljava/lang/reflect/Field;)Z
move-result v0
if-nez v0, :cond_23
invoke-virtual {p0}, Ljava/lang/reflect/Field;->isSynthetic()Z
move-result v0
if-eqz v0, :cond_21
goto :goto_23
:cond_21
const/4 v0, 0x0
goto :goto_24
:cond_23
:goto_23
const/4 v0, 0x1
:goto_24
return v0
.end method
.method public static isLong(Ljava/lang/reflect/Field;)Z
.registers 3
.param p0, "field" # Ljava/lang/reflect/Field;
.line 38
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
sget-object v1, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-eq v0, v1, :cond_13
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Long;
if-ne v0, v1, :cond_11
goto :goto_13
:cond_11
const/4 v0, 0x0
goto :goto_14
:cond_13
:goto_13
const/4 v0, 0x1
:goto_14
return v0
.end method
.method public static isNumber(Ljava/lang/Class;)Z
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)Z"
}
.end annotation
.line 155
.local p0, "claxx":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
sget-object v0, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-eq p0, v0, :cond_23
const-class v0, Ljava/lang/Long;
if-eq p0, v0, :cond_23
sget-object v0, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-eq p0, v0, :cond_23
const-class v0, Ljava/lang/Integer;
if-eq p0, v0, :cond_23
sget-object v0, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-eq p0, v0, :cond_23
const-class v0, Ljava/lang/Short;
if-eq p0, v0, :cond_23
sget-object v0, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-eq p0, v0, :cond_23
const-class v0, Ljava/lang/Byte;
if-ne p0, v0, :cond_21
goto :goto_23
:cond_21
const/4 v0, 0x0
goto :goto_24
:cond_23
:goto_23
const/4 v0, 0x1
:goto_24
return v0
.end method
.method public static isSerializable(Ljava/lang/reflect/Field;)Z
.registers 7
.param p0, "f" # Ljava/lang/reflect/Field;
.line 49
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object v0
.line 50
.local v0, "cls":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;"
move-object v1, v0
.local v1, "arr$":[Ljava/lang/Class;
array-length v2, v1
.local v2, "len$":I
const/4 v3, 0x0
.local v3, "i$":I
:goto_b
if-ge v3, v2, :cond_18
aget-object v4, v1, v3
.line 51
.local v4, "c":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const-class v5, Ljava/io/Serializable;
if-ne v5, v4, :cond_15
const/4 v5, 0x1
return v5
.line 50
.end local v4 # "c":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_15
add-int/lit8 v3, v3, 0x1
goto :goto_b
.line 53
.end local v1 # "arr$":[Ljava/lang/Class;
.end local v2 # "len$":I
.end local v3 # "i$":I
:cond_18
const/4 v1, 0x0
return v1
.end method
.method public static set(Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/Object;)V
.registers 4
.param p0, "f" # Ljava/lang/reflect/Field;
.param p1, "obj" # Ljava/lang/Object;
.param p2, "value" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalArgumentException;,
Ljava/lang/IllegalAccessException;
}
.end annotation
.line 60
const/4 v0, 0x1
invoke-virtual {p0, v0}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 61
invoke-virtual {p0, p1, p2}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
.line 62
return-void
.end method
.method public static setKeyValueIfneed(Ljava/lang/Object;Lcom/litesuits/orm/db/model/Primarykey;Ljava/lang/Object;J)Z
.registers 10
.param p0, "entity" # Ljava/lang/Object;
.param p1, "key" # Lcom/litesuits/orm/db/model/Primarykey;
.param p2, "keyObj" # Ljava/lang/Object;
.param p3, "rowID" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalArgumentException;,
Ljava/lang/IllegalAccessException;
}
.end annotation
.line 106
if-eqz p1, :cond_1e
invoke-virtual {p1}, Lcom/litesuits/orm/db/model/Primarykey;->isAssignedBySystem()Z
move-result v0
if-eqz v0, :cond_1e
if-eqz p2, :cond_17
move-object v0, p2
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
const-wide/16 v2, 0x1
cmp-long v4, v0, v2
if-gez v4, :cond_1e
.line 108
:cond_17
iget-object v0, p1, Lcom/litesuits/orm/db/model/Primarykey;->field:Ljava/lang/reflect/Field;
invoke-static {p0, v0, p3, p4}, Lcom/litesuits/orm/db/utils/FieldUtil;->setNumber(Ljava/lang/Object;Ljava/lang/reflect/Field;J)V
.line 109
const/4 v0, 0x1
return v0
.line 111
:cond_1e
const/4 v0, 0x0
return v0
.end method
.method public static setNumber(Ljava/lang/Object;Ljava/lang/reflect/Field;J)V
.registers 7
.param p0, "o" # Ljava/lang/Object;
.param p1, "field" # Ljava/lang/reflect/Field;
.param p2, "n" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/IllegalAccessException;
}
.end annotation
.line 131
const/4 v0, 0x1
invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 132
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
.line 133
.local v0, "claxx":Ljava/lang/Class;
sget-object v1, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_10
.line 134
invoke-virtual {p1, p0, p2, p3}, Ljava/lang/reflect/Field;->setLong(Ljava/lang/Object;J)V
goto :goto_65
.line 135
:cond_10
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_19
.line 136
long-to-int v1, p2
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->setInt(Ljava/lang/Object;I)V
goto :goto_65
.line 137
:cond_19
sget-object v1, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_23
.line 138
long-to-int v1, p2
int-to-short v1, v1
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->setShort(Ljava/lang/Object;S)V
goto :goto_65
.line 139
:cond_23
sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_2d
.line 140
long-to-int v1, p2
int-to-byte v1, v1
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->setByte(Ljava/lang/Object;B)V
goto :goto_65
.line 141
:cond_2d
const-class v1, Ljava/lang/Long;
if-ne v0, v1, :cond_3a
.line 142
new-instance v1, Ljava/lang/Long;
invoke-direct {v1, p2, p3}, Ljava/lang/Long;-><init>(J)V
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
goto :goto_65
.line 143
:cond_3a
const-class v1, Ljava/lang/Integer;
if-ne v0, v1, :cond_48
.line 144
new-instance v1, Ljava/lang/Integer;
long-to-int v2, p2
invoke-direct {v1, v2}, Ljava/lang/Integer;-><init>(I)V
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
goto :goto_65
.line 145
:cond_48
const-class v1, Ljava/lang/Short;
if-ne v0, v1, :cond_57
.line 146
new-instance v1, Ljava/lang/Short;
long-to-int v2, p2
int-to-short v2, v2
invoke-direct {v1, v2}, Ljava/lang/Short;-><init>(S)V
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
goto :goto_65
.line 147
:cond_57
const-class v1, Ljava/lang/Byte;
if-ne v0, v1, :cond_66
.line 148
new-instance v1, Ljava/lang/Byte;
long-to-int v2, p2
int-to-byte v2, v2
invoke-direct {v1, v2}, Ljava/lang/Byte;-><init>(B)V
invoke-virtual {p1, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
.line 152
:goto_65
return-void
.line 150
:cond_66
new-instance v1, Ljava/lang/RuntimeException;
const-string v2, "field is not a number class"
invoke-direct {v1, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
.end method