AndroidLoggerFactory.smali
.class Lorg/slf4j/impl/AndroidLoggerFactory;
.super Ljava/lang/Object;
.source "AndroidLoggerFactory.java"
# interfaces
.implements Lorg/slf4j/ILoggerFactory;
# static fields
.field static final ANONYMOUS_TAG:Ljava/lang/String; = "null"
.field static final TAG_MAX_LENGTH:I
# instance fields
.field private final loggerMap:Ljava/util/concurrent/ConcurrentMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/ConcurrentMap<",
"Ljava/lang/String;",
"Lorg/slf4j/Logger;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x1578
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lorg/slf4j/impl/AndroidLoggerFactory;->TAG_MAX_LENGTH:I
return-void
.end method
.method constructor <init>()V
.registers 2
.line 39
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 43
new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;-><init>()V
iput-object v0, p0, Lorg/slf4j/impl/AndroidLoggerFactory;->loggerMap:Ljava/util/concurrent/ConcurrentMap;
return-void
.end method
.method private static getSimpleName(Ljava/lang/String;)Ljava/lang/String;
.registers 5
.param p0, "loggerName" # Ljava/lang/String;
.line 118
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
.line 119
.local v0, "length":I
const/16 v1, 0x2e
invoke-virtual {p0, v1}, Ljava/lang/String;->lastIndexOf(I)I
move-result v1
.line 120
.local v1, "lastPeriodIndex":I
const/4 v2, -0x1
if-eq v1, v2, :cond_1c
add-int/lit8 v2, v1, 0x1
sub-int v2, v0, v2
const/16 v3, 0x17
if-gt v2, v3, :cond_1c
add-int/lit8 v2, v1, 0x1
invoke-virtual {p0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
goto :goto_35
:cond_1c
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const/16 v3, 0x2a
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
add-int/lit8 v3, v0, -0x17
add-int/lit8 v3, v3, 0x1
invoke-virtual {p0, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
:goto_35
return-object v2
.end method
.method static loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
.registers 10
.param p0, "loggerName" # Ljava/lang/String;
.line 74
if-nez p0, :cond_5
.line 75
const-string v0, "null"
return-object v0
.line 78
:cond_5
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
.line 79
.local v0, "length":I
const/16 v1, 0x17
if-gt v0, v1, :cond_e
.line 80
return-object p0
.line 83
:cond_e
const/4 v2, 0x0
.line 84
.local v2, "tagLength":I
const/4 v3, 0x0
.line 86
.local v3, "lastTokenIndex":I
new-instance v4, Ljava/lang/StringBuilder;
const/16 v5, 0x1a
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(I)V
.line 87
.local v4, "tagName":Ljava/lang/StringBuilder;
:goto_17
const/16 v5, 0x2e
invoke-virtual {p0, v5, v3}, Ljava/lang/String;->indexOf(II)I
move-result v6
move v7, v6
.local v7, "lastPeriodIndex":I
const/4 v8, -0x1
if-eq v6, v8, :cond_43
.line 88
invoke-virtual {p0, v3}, Ljava/lang/String;->charAt(I)C
move-result v6
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 90
sub-int v6, v7, v3
.line 91
.local v6, "tokenLength":I
const/4 v8, 0x1
if-le v6, v8, :cond_32
.line 92
const/16 v8, 0x2a
invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 94
:cond_32
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 95
add-int/lit8 v3, v7, 0x1
.line 98
invoke-virtual {v4}, Ljava/lang/StringBuilder;->length()I
move-result v2
.line 99
if-le v2, v1, :cond_42
.line 100
invoke-static {p0}, Lorg/slf4j/impl/AndroidLoggerFactory;->getSimpleName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
return-object v1
.line 102
.end local v6 # "tokenLength":I
:cond_42
goto :goto_17
.line 106
:cond_43
sub-int v5, v0, v3
.line 107
.local v5, "tokenLength":I
if-eqz v2, :cond_54
add-int v6, v2, v5
if-le v6, v1, :cond_4c
goto :goto_54
.line 112
:cond_4c
invoke-virtual {v4, p0, v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
.line 113
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
return-object v1
.line 108
:cond_54
:goto_54
invoke-static {p0}, Lorg/slf4j/impl/AndroidLoggerFactory;->getSimpleName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
return-object v1
.end method
# virtual methods
.method public getLogger(Ljava/lang/String;)Lorg/slf4j/Logger;
.registers 7
.param p1, "name" # Ljava/lang/String;
.line 49
invoke-static {p1}, Lorg/slf4j/impl/AndroidLoggerFactory;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 50
.local v0, "tag":Ljava/lang/String;
iget-object v1, p0, Lorg/slf4j/impl/AndroidLoggerFactory;->loggerMap:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v1, v0}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/slf4j/Logger;
.line 51
.local v1, "logger":Lorg/slf4j/Logger;
if-nez v1, :cond_21
.line 52
new-instance v2, Lorg/slf4j/impl/AndroidLoggerAdapter;
invoke-direct {v2, v0}, Lorg/slf4j/impl/AndroidLoggerAdapter;-><init>(Ljava/lang/String;)V
.line 53
.local v2, "newInstance":Lorg/slf4j/Logger;
iget-object v3, p0, Lorg/slf4j/impl/AndroidLoggerFactory;->loggerMap:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v3, v0, v2}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lorg/slf4j/Logger;
.line 54
.local v3, "oldInstance":Lorg/slf4j/Logger;
if-nez v3, :cond_1f
move-object v4, v2
goto :goto_20
:cond_1f
move-object v4, v3
:goto_20
move-object v1, v4
.line 56
.end local v2 # "newInstance":Lorg/slf4j/Logger;
.end local v3 # "oldInstance":Lorg/slf4j/Logger;
:cond_21
return-object v1
.end method