JavaVersion.smali
.class public final Lcom/google/gson/internal/JavaVersion;
.super Ljava/lang/Object;
.source "JavaVersion.java"
# static fields
.field private static final majorJavaVersion:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 26
invoke-static {}, Lcom/google/gson/internal/JavaVersion;->determineMajorJavaVersion()I
move-result v0
sput v0, Lcom/google/gson/internal/JavaVersion;->majorJavaVersion:I
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 91
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static determineMajorJavaVersion()I
.registers 2
.line 29
const-string v0, "java.version"
invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 30
.local v0, "javaVersion":Ljava/lang/String;
invoke-static {v0}, Lcom/google/gson/internal/JavaVersion;->getMajorJavaVersion(Ljava/lang/String;)I
move-result v1
return v1
.end method
.method private static extractBeginningInt(Ljava/lang/String;)I
.registers 5
.param p0, "javaVersion" # Ljava/lang/String;
.line 62
:try_start_0
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
.line 63
.local v0, "num":Ljava/lang/StringBuilder;
const/4 v1, 0x0
.local v1, "i":I
:goto_6
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v2
if-ge v1, v2, :cond_1d
.line 64
invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
move-result v2
.line 65
.local v2, "c":C
invoke-static {v2}, Ljava/lang/Character;->isDigit(C)Z
move-result v3
if-eqz v3, :cond_1d
.line 66
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 63
nop
.end local v2 # "c":C
add-int/lit8 v1, v1, 0x1
goto :goto_6
.line 71
.end local v1 # "i":I
:cond_1d
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v1
:try_end_25
.catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_25} :catch_26
return v1
.line 72
.end local v0 # "num":Ljava/lang/StringBuilder;
:catch_26
move-exception v0
.line 73
.local v0, "e":Ljava/lang/NumberFormatException;
const/4 v1, -0x1
return v1
.end method
.method public static getMajorJavaVersion()I
.registers 1
.line 81
sget v0, Lcom/google/gson/internal/JavaVersion;->majorJavaVersion:I
return v0
.end method
.method static getMajorJavaVersion(Ljava/lang/String;)I
.registers 3
.param p0, "javaVersion" # Ljava/lang/String;
.line 35
invoke-static {p0}, Lcom/google/gson/internal/JavaVersion;->parseDotted(Ljava/lang/String;)I
move-result v0
.line 36
.local v0, "version":I
const/4 v1, -0x1
if-ne v0, v1, :cond_b
.line 37
invoke-static {p0}, Lcom/google/gson/internal/JavaVersion;->extractBeginningInt(Ljava/lang/String;)I
move-result v0
.line 39
:cond_b
if-ne v0, v1, :cond_f
.line 40
const/4 v1, 0x6
return v1
.line 42
:cond_f
return v0
.end method
.method public static isJava9OrLater()Z
.registers 2
.line 88
sget v0, Lcom/google/gson/internal/JavaVersion;->majorJavaVersion:I
const/16 v1, 0x9
if-lt v0, v1, :cond_8
const/4 v0, 0x1
goto :goto_9
:cond_8
const/4 v0, 0x0
:goto_9
return v0
.end method
.method private static parseDotted(Ljava/lang/String;)I
.registers 5
.param p0, "javaVersion" # Ljava/lang/String;
.line 48
:try_start_0
const-string v0, "[._]"
invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 49
.local v0, "parts":[Ljava/lang/String;
const/4 v1, 0x0
aget-object v1, v0, v1
invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v1
.line 50
.local v1, "firstVer":I
const/4 v2, 0x1
if-ne v1, v2, :cond_1a
array-length v3, v0
if-le v3, v2, :cond_1a
.line 51
aget-object v2, v0, v2
invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v2
:try_end_19
.catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_19} :catch_1b
return v2
.line 53
:cond_1a
return v1
.line 55
.end local v0 # "parts":[Ljava/lang/String;
.end local v1 # "firstVer":I
:catch_1b
move-exception v0
.line 56
.local v0, "e":Ljava/lang/NumberFormatException;
const/4 v1, -0x1
return v1
.end method