TypeDecoder.smali
.class public Lorg/web3j/abi/TypeDecoder;
.super Ljava/lang/Object;
.source "TypeDecoder.java"
# static fields
.field static final MAX_BYTE_LENGTH_FOR_HEX_STRING:I = 0x40
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 35
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static decode(Ljava/lang/String;ILorg/web3j/abi/TypeReference;)Lorg/web3j/abi/datatypes/Array;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/Array;",
">(",
"Ljava/lang/String;",
"I",
"Lorg/web3j/abi/TypeReference",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 76
invoke-virtual {p2}, Lorg/web3j/abi/TypeReference;->getType()Ljava/lang/reflect/Type;
move-result-object v0
check-cast v0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
.line 77
const-class v1, Lorg/web3j/abi/datatypes/StaticArray;
invoke-virtual {v1, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_1e
.line 78
const/4 v0, 0x1
invoke-static {p0, p1, p2, v0}, Lorg/web3j/abi/TypeDecoder;->decodeStaticArray(Ljava/lang/String;ILorg/web3j/abi/TypeReference;I)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Array;
.line 80
:goto_1d
return-object v0
.line 79
:cond_1e
const-class v1, Lorg/web3j/abi/datatypes/DynamicArray;
invoke-virtual {v1, v0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_2d
.line 80
invoke-static {p0, p1, p2}, Lorg/web3j/abi/TypeDecoder;->decodeDynamicArray(Ljava/lang/String;ILorg/web3j/abi/TypeReference;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Array;
goto :goto_1d
.line 82
:cond_2d
new-instance v1, Ljava/lang/UnsupportedOperationException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Unsupported TypeReference: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, ", only Array types can be passed as TypeReferences"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v1
.end method
.method static decode(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Type;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"I",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 53
const-class v0, Lorg/web3j/abi/datatypes/NumericType;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_11
.line 54
invoke-virtual {p0, p1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->decodeNumeric(Ljava/lang/String;Ljava/lang/Class;)Lorg/web3j/abi/datatypes/NumericType;
move-result-object v0
.line 64
:goto_10
return-object v0
.line 55
:cond_11
const-class v0, Lorg/web3j/abi/datatypes/Address;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_22
.line 56
invoke-virtual {p0, p1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lorg/web3j/abi/TypeDecoder;->decodeAddress(Ljava/lang/String;)Lorg/web3j/abi/datatypes/Address;
move-result-object v0
goto :goto_10
.line 57
:cond_22
const-class v0, Lorg/web3j/abi/datatypes/Bool;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_2f
.line 58
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeBool(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/Bool;
move-result-object v0
goto :goto_10
.line 59
:cond_2f
const-class v0, Lorg/web3j/abi/datatypes/Bytes;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_3c
.line 60
invoke-static {p0, p1, p2}, Lorg/web3j/abi/TypeDecoder;->decodeBytes(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Bytes;
move-result-object v0
goto :goto_10
.line 61
:cond_3c
const-class v0, Lorg/web3j/abi/datatypes/DynamicBytes;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_49
.line 62
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeDynamicBytes(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/DynamicBytes;
move-result-object v0
goto :goto_10
.line 63
:cond_49
const-class v0, Lorg/web3j/abi/datatypes/Utf8String;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_56
.line 64
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeUtf8String(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/Utf8String;
move-result-object v0
goto :goto_10
.line 65
:cond_56
const-class v0, Lorg/web3j/abi/datatypes/Array;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_66
.line 66
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "Array types must be wrapped in a TypeReference"
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.line 69
:cond_66
new-instance v0, Ljava/lang/UnsupportedOperationException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Type cannot be encoded: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method static decode(Ljava/lang/String;Ljava/lang/Class;)Lorg/web3j/abi/datatypes/Type;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 88
const/4 v0, 0x0
invoke-static {p0, v0, p1}, Lorg/web3j/abi/TypeDecoder;->decode(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
return-object v0
.end method
.method static decodeAddress(Ljava/lang/String;)Lorg/web3j/abi/datatypes/Address;
.registers 3
.prologue
.line 92
new-instance v1, Lorg/web3j/abi/datatypes/Address;
const-class v0, Lorg/web3j/abi/datatypes/generated/Uint160;
invoke-static {p0, v0}, Lorg/web3j/abi/TypeDecoder;->decodeNumeric(Ljava/lang/String;Ljava/lang/Class;)Lorg/web3j/abi/datatypes/NumericType;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/generated/Uint160;
invoke-direct {v1, v0}, Lorg/web3j/abi/datatypes/Address;-><init>(Lorg/web3j/abi/datatypes/generated/Uint160;)V
return-object v1
.end method
.method private static decodeArrayElements(Ljava/lang/String;ILorg/web3j/abi/TypeReference;IZ)Lorg/web3j/abi/datatypes/Type;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"I",
"Lorg/web3j/abi/TypeReference",
"<TT;>;IZ)TT;"
}
.end annotation
.prologue
.line 272
:try_start_0
invoke-static {p2}, Lorg/web3j/abi/Utils;->getParameterizedTypeFromArray(Lorg/web3j/abi/TypeReference;)Ljava/lang/Class;
move-result-object v1
.line 273
const-class v0, Lorg/web3j/abi/datatypes/Array;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_32
.line 274
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "Arrays of arrays are not currently supported for external functions, seehttp://solidity.readthedocs.io/en/develop/types.html#members"
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_14
.catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_14} :catch_14
.line 305
:catch_14
move-exception v0
.line 306
new-instance v1, Ljava/lang/UnsupportedOperationException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Unable to access parameterized type "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p2}, Lorg/web3j/abi/TypeReference;->getType()Ljava/lang/reflect/Type;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 278
:cond_32
:try_start_32
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2, p3}, Ljava/util/ArrayList;-><init>(I)V
.line 280
const/4 v0, 0x0
.line 281
:goto_38
if-ge v0, p3, :cond_4b
.line 284
invoke-static {p0, p1, v1}, Lorg/web3j/abi/TypeDecoder;->decode(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Type;
move-result-object v3
.line 285
invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 282
add-int/lit8 v0, v0, 0x1
invoke-static {p0, p1, v1}, Lorg/web3j/abi/TypeDecoder;->getSingleElementLength(Ljava/lang/String;ILjava/lang/Class;)I
move-result v3
shl-int/lit8 v3, v3, 0x6
add-int/2addr p1, v3
goto :goto_38
.line 288
:cond_4b
invoke-static {v1}, Lorg/web3j/abi/Utils;->getSimpleTypeName(Ljava/lang/Class;)Ljava/lang/String;
move-result-object v0
.line 290
if-eqz p4, :cond_62
.line 291
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v1
if-eqz v1, :cond_5c
.line 292
invoke-static {v0}, Lorg/web3j/abi/datatypes/DynamicArray;->empty(Ljava/lang/String;)Lorg/web3j/abi/datatypes/DynamicArray;
move-result-object v0
.line 301
:goto_5b
return-object v0
.line 294
:cond_5c
new-instance v0, Lorg/web3j/abi/datatypes/DynamicArray;
invoke-direct {v0, v2}, Lorg/web3j/abi/datatypes/DynamicArray;-><init>(Ljava/util/List;)V
goto :goto_5b
.line 297
:cond_62
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v0
if-eqz v0, :cond_70
.line 298
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "Zero length fixed array is invalid type"
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.line 301
:cond_70
invoke-static {p2, v2}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Lorg/web3j/abi/TypeReference;Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
:try_end_73
.catch Ljava/lang/ClassNotFoundException; {:try_start_32 .. :try_end_73} :catch_14
move-result-object v0
goto :goto_5b
.end method
.method static decodeBool(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/Bool;
.registers 4
.prologue
.line 162
add-int/lit8 v0, p1, 0x40
invoke-virtual {p0, p1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
.line 163
invoke-static {v0}, Lorg/web3j/utils/Numeric;->toBigInt(Ljava/lang/String;)Ljava/math/BigInteger;
move-result-object v0
.line 164
sget-object v1, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v0
.line 165
new-instance v1, Lorg/web3j/abi/datatypes/Bool;
invoke-direct {v1, v0}, Lorg/web3j/abi/datatypes/Bool;-><init>(Z)V
return-object v1
.end method
.method static decodeBytes(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Bytes;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/Bytes;",
">(",
"Ljava/lang/String;",
"I",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 174
:try_start_0
invoke-virtual {p2}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v0
.line 175
const-class v1, Lorg/web3j/abi/datatypes/Bytes;
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 176
const/4 v1, 0x1
aget-object v0, v0, v1
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
.line 177
shl-int/lit8 v0, v0, 0x1
.line 179
add-int/2addr v0, p1
invoke-virtual {p0, p1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lorg/web3j/utils/Numeric;->hexStringToByteArray(Ljava/lang/String;)[B
move-result-object v0
.line 181
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Class;
const/4 v2, 0x0
const-class v3, [B
aput-object v3, v1, v2
invoke-virtual {p2, v1}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v1
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
aput-object v0, v2, v3
invoke-virtual {v1, v2}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
:try_end_38
.catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_38} :catch_39
.catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_38} :catch_41
.catch Ljava/lang/InstantiationException; {:try_start_0 .. :try_end_38} :catch_49
.catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_38} :catch_51
.catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_38} :catch_59
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_38} :catch_61
.line 193
:goto_38
return-object v0
.line 183
:catch_39
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.line 185
:catch_41
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.line 187
:catch_49
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.line 189
:catch_51
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.line 191
:catch_59
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.line 193
:catch_61
move-exception v0
invoke-static {v0, p2}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Bytes;
goto :goto_38
.end method
.method static decodeBytes(Ljava/lang/String;Ljava/lang/Class;)Lorg/web3j/abi/datatypes/Bytes;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/Bytes;",
">(",
"Ljava/lang/String;",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 169
const/4 v0, 0x0
invoke-static {p0, v0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeBytes(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Bytes;
move-result-object v0
return-object v0
.end method
.method static decodeDynamicArray(Ljava/lang/String;ILorg/web3j/abi/TypeReference;)Lorg/web3j/abi/datatypes/Type;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"I",
"Lorg/web3j/abi/TypeReference",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 260
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeUintAsInt(Ljava/lang/String;I)I
move-result v0
.line 261
add-int/lit8 v1, p1, 0x40
.line 263
const/4 v2, 0x1
invoke-static {p0, v1, p2, v0, v2}, Lorg/web3j/abi/TypeDecoder;->decodeArrayElements(Ljava/lang/String;ILorg/web3j/abi/TypeReference;IZ)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
return-object v0
.end method
.method static decodeDynamicBytes(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/DynamicBytes;
.registers 4
.prologue
.line 198
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeUintAsInt(Ljava/lang/String;I)I
move-result v0
.line 199
shl-int/lit8 v0, v0, 0x1
.line 201
add-int/lit8 v1, p1, 0x40
.line 203
add-int/2addr v0, v1
invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
.line 205
invoke-static {v0}, Lorg/web3j/utils/Numeric;->hexStringToByteArray(Ljava/lang/String;)[B
move-result-object v0
.line 207
new-instance v1, Lorg/web3j/abi/datatypes/DynamicBytes;
invoke-direct {v1, v0}, Lorg/web3j/abi/datatypes/DynamicBytes;-><init>([B)V
return-object v1
.end method
.method static decodeNumeric(Ljava/lang/String;Ljava/lang/Class;)Lorg/web3j/abi/datatypes/NumericType;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/NumericType;",
">(",
"Ljava/lang/String;",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 97
:try_start_0
invoke-static {p0}, Lorg/web3j/utils/Numeric;->hexStringToByteArray(Ljava/lang/String;)[B
move-result-object v0
.line 98
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->getTypeLengthInBytes(Ljava/lang/Class;)I
move-result v1
.line 100
add-int/lit8 v2, v1, 0x1
new-array v2, v2, [B
.line 102
const-class v3, Lorg/web3j/abi/datatypes/Int;
invoke-virtual {v3, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v3
if-nez v3, :cond_1c
const-class v3, Lorg/web3j/abi/datatypes/Fixed;
invoke-virtual {v3, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v3
if-eqz v3, :cond_22
.line 103
:cond_1c
const/4 v3, 0x0
const/4 v4, 0x0
aget-byte v4, v0, v4
aput-byte v4, v2, v3
.line 106
:cond_22
rsub-int/lit8 v3, v1, 0x20
.line 107
const/4 v4, 0x1
invoke-static {v0, v3, v2, v4, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 109
new-instance v0, Ljava/math/BigInteger;
invoke-direct {v0, v2}, Ljava/math/BigInteger;-><init>([B)V
.line 110
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Class;
const/4 v2, 0x0
const-class v3, Ljava/math/BigInteger;
aput-object v3, v1, v2
invoke-virtual {p1, v1}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v1
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
aput-object v0, v2, v3
invoke-virtual {v1, v2}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
:try_end_45
.catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_45} :catch_46
.catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_45} :catch_4e
.catch Ljava/lang/InstantiationException; {:try_start_0 .. :try_end_45} :catch_56
.catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_45} :catch_5e
.catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_45} :catch_66
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_45} :catch_6e
.line 123
:goto_45
return-object v0
.line 113
:catch_46
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.line 115
:catch_4e
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.line 117
:catch_56
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.line 119
:catch_5e
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.line 121
:catch_66
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.line 123
:catch_6e
move-exception v0
invoke-static {v0, p1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/NumericType;
goto :goto_45
.end method
.method static decodeStaticArray(Ljava/lang/String;ILorg/web3j/abi/TypeReference;I)Lorg/web3j/abi/datatypes/Type;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"I",
"Lorg/web3j/abi/TypeReference",
"<TT;>;I)TT;"
}
.end annotation
.prologue
.line 228
const/4 v0, 0x0
invoke-static {p0, p1, p2, p3, v0}, Lorg/web3j/abi/TypeDecoder;->decodeArrayElements(Ljava/lang/String;ILorg/web3j/abi/TypeReference;IZ)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
return-object v0
.end method
.method static decodeUintAsInt(Ljava/lang/String;I)I
.registers 5
.prologue
.line 157
add-int/lit8 v0, p1, 0x40
invoke-virtual {p0, p1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
.line 158
const/4 v1, 0x0
const-class v2, Lorg/web3j/abi/datatypes/Uint;
invoke-static {v0, v1, v2}, Lorg/web3j/abi/TypeDecoder;->decode(Ljava/lang/String;ILjava/lang/Class;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Uint;
invoke-virtual {v0}, Lorg/web3j/abi/datatypes/Uint;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
move-result v0
return v0
.end method
.method static decodeUtf8String(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/Utf8String;
.registers 6
.prologue
.line 211
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeDynamicBytes(Ljava/lang/String;I)Lorg/web3j/abi/datatypes/DynamicBytes;
move-result-object v0
.line 212
invoke-virtual {v0}, Lorg/web3j/abi/datatypes/DynamicBytes;->getValue()[B
move-result-object v1
.line 215
:try_start_8
new-instance v0, Lorg/web3j/abi/datatypes/Utf8String;
new-instance v2, Ljava/lang/String;
const-string v3, "UTF-8"
invoke-direct {v2, v1, v3}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
invoke-direct {v0, v2}, Lorg/web3j/abi/datatypes/Utf8String;-><init>(Ljava/lang/String;)V
:try_end_14
.catch Ljava/io/UnsupportedEncodingException; {:try_start_8 .. :try_end_14} :catch_15
.line 217
:goto_14
return-object v0
:catch_15
move-exception v0
const-class v1, Lorg/web3j/abi/datatypes/Utf8String;
invoke-static {v0, v1}, Lorg/web3j/abi/TypeDecoder;->throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Utf8String;
goto :goto_14
.end method
.method static getSingleElementLength(Ljava/lang/String;ILjava/lang/Class;)I
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/lang/String;",
"I",
"Ljava/lang/Class",
"<TT;>;)I"
}
.end annotation
.prologue
.line 40
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-ne v0, p1, :cond_8
.line 41
const/4 v0, 0x0
.line 47
:goto_7
return v0
.line 42
:cond_8
const-class v0, Lorg/web3j/abi/datatypes/DynamicBytes;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-nez v0, :cond_18
const-class v0, Lorg/web3j/abi/datatypes/Utf8String;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_21
.line 45
:cond_18
invoke-static {p0, p1}, Lorg/web3j/abi/TypeDecoder;->decodeUintAsInt(Ljava/lang/String;I)I
move-result v0
div-int/lit8 v0, v0, 0x20
add-int/lit8 v0, v0, 0x2
goto :goto_7
.line 47
:cond_21
const/4 v0, 0x1
goto :goto_7
.end method
.method static getTypeLength(Ljava/lang/Class;)I
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/NumericType;",
">(",
"Ljava/lang/Class",
"<TT;>;)I"
}
.end annotation
.prologue
const/4 v3, 0x2
const/4 v2, 0x1
.line 138
const-class v0, Lorg/web3j/abi/datatypes/IntType;
invoke-virtual {v0, p0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_47
.line 139
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "("
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-class v1, Lorg/web3j/abi/datatypes/Uint;
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "|"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-class v1, Lorg/web3j/abi/datatypes/Int;
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ")"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 140
invoke-virtual {p0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 141
array-length v1, v0
if-ne v1, v3, :cond_9c
.line 142
aget-object v0, v0, v2
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
.line 153
:goto_46
return v0
.line 144
:cond_47
const-class v0, Lorg/web3j/abi/datatypes/FixedPointType;
invoke-virtual {v0, p0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_9c
.line 145
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "("
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-class v1, Lorg/web3j/abi/datatypes/Ufixed;
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "|"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-class v1, Lorg/web3j/abi/datatypes/Fixed;
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ")"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 147
invoke-virtual {p0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 148
array-length v1, v0
if-ne v1, v3, :cond_9c
.line 149
aget-object v0, v0, v2
const-string v1, "x"
invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 150
const/4 v1, 0x0
aget-object v1, v0, v1
invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v1
aget-object v0, v0, v2
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
add-int/2addr v0, v1
goto :goto_46
.line 153
:cond_9c
const/16 v0, 0x100
goto :goto_46
.end method
.method static getTypeLengthInBytes(Ljava/lang/Class;)I
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Lorg/web3j/abi/datatypes/NumericType;",
">(",
"Ljava/lang/Class",
"<TT;>;)I"
}
.end annotation
.prologue
.line 134
invoke-static {p0}, Lorg/web3j/abi/TypeDecoder;->getTypeLength(Ljava/lang/Class;)I
move-result v0
shr-int/lit8 v0, v0, 0x3
return v0
.end method
.method private static instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Ljava/util/List",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 253
new-instance v0, Lorg/web3j/abi/datatypes/StaticArray;
invoke-direct {v0, p0}, Lorg/web3j/abi/datatypes/StaticArray;-><init>(Ljava/util/List;)V
return-object v0
.end method
.method private static instantiateStaticArray(Lorg/web3j/abi/TypeReference;Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lorg/web3j/abi/datatypes/Type;",
">(",
"Lorg/web3j/abi/TypeReference",
"<TT;>;",
"Ljava/util/List",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 235
:try_start_0
const-class v0, Ljava/util/List;
.line 236
invoke-virtual {p0}, Lorg/web3j/abi/TypeReference;->getClassType()Ljava/lang/Class;
move-result-object v1
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Class;
const/4 v3, 0x0
aput-object v0, v2, v3
invoke-virtual {v1, v2}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v0
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Object;
const/4 v2, 0x0
aput-object p1, v1, v2
invoke-virtual {v0, v1}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/web3j/abi/datatypes/Type;
:try_end_1c
.catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_1c} :catch_1d
.catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_1c} :catch_23
.catch Ljava/lang/InstantiationException; {:try_start_0 .. :try_end_1c} :catch_29
.catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_1c} :catch_2f
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_1c} :catch_35
.line 247
:goto_1c
return-object v0
.line 239
:catch_1d
move-exception v0
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
goto :goto_1c
.line 241
:catch_23
move-exception v0
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
goto :goto_1c
.line 243
:catch_29
move-exception v0
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
goto :goto_1c
.line 245
:catch_2f
move-exception v0
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
goto :goto_1c
.line 247
:catch_35
move-exception v0
invoke-static {p1}, Lorg/web3j/abi/TypeDecoder;->instantiateStaticArray(Ljava/util/List;)Lorg/web3j/abi/datatypes/Type;
move-result-object v0
goto :goto_1c
.end method
.method private static throwUnsupportedOperation(Ljava/lang/Exception;Ljava/lang/Class;)Ljava/lang/Object;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Exception;",
"Ljava/lang/Class",
"<TT;>;)TT;"
}
.end annotation
.prologue
.line 129
new-instance v0, Ljava/lang/UnsupportedOperationException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Unable to create instance of "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, p0}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v0
.end method