ServicePermission.smali
.class public final Lorg/osgi/framework/ServicePermission;
.super Ljava/security/BasicPermission;
.source "ServicePermission.java"
# static fields
.field private static final ACTION_ALL:I = 0x3
.field private static final ACTION_GET:I = 0x1
.field private static final ACTION_NONE:I = 0x0
.field private static final ACTION_REGISTER:I = 0x2
.field public static final GET:Ljava/lang/String; = "get"
.field private static final REGISTER:Ljava/lang/String; = "register"
# instance fields
.field private transient action_mask:I
.field private actions:Ljava/lang/String;
# direct methods
.method constructor <init>(Ljava/lang/String;I)V
.registers 4
.prologue
.line 116
invoke-direct {p0, p1}, Ljava/security/BasicPermission;-><init>(Ljava/lang/String;)V
.line 73
const/4 v0, 0x0
iput v0, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
.line 80
const/4 v0, 0x0
iput-object v0, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
.line 118
invoke-direct {p0, p2}, Lorg/osgi/framework/ServicePermission;->init(I)V
.line 119
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/String;)V
.registers 4
.prologue
.line 106
invoke-static {p2}, Lorg/osgi/framework/ServicePermission;->getMask(Ljava/lang/String;)I
move-result v0
invoke-direct {p0, p1, v0}, Lorg/osgi/framework/ServicePermission;-><init>(Ljava/lang/String;I)V
.line 107
return-void
.end method
.method private static getMask(Ljava/lang/String;)I
.registers 13
.prologue
const/16 v10, 0x47
const/4 v9, -0x1
const/16 v8, 0x65
const/16 v7, 0x45
const/4 v3, 0x0
.line 142
.line 146
if-nez p0, :cond_c
move v0, v3
.line 223
:goto_b
return v0
.line 150
:cond_c
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object v5
.line 152
array-length v0, v5
add-int/lit8 v2, v0, -0x1
.line 153
if-gez v2, :cond_142
move v0, v3
.line 154
goto :goto_b
.line 215
:cond_17
sub-int v0, v4, v0
move v11, v0
move v0, v2
move v2, v11
.line 156
:goto_1c
if-eq v2, v9, :cond_124
.line 160
:goto_1e
if-eq v2, v9, :cond_39
aget-char v0, v5, v2
const/16 v4, 0x20
if-eq v0, v4, :cond_36
const/16 v4, 0xd
if-eq v0, v4, :cond_36
const/16 v4, 0xa
if-eq v0, v4, :cond_36
const/16 v4, 0xc
if-eq v0, v4, :cond_36
const/16 v4, 0x9
if-ne v0, v4, :cond_39
.line 165
:cond_36
add-int/lit8 v2, v2, -0x1
goto :goto_1e
.line 170
:cond_39
const/4 v0, 0x2
if-lt v2, v0, :cond_8b
add-int/lit8 v0, v2, -0x2
aget-char v0, v5, v0
const/16 v4, 0x67
if-eq v0, v4, :cond_4a
add-int/lit8 v0, v2, -0x2
aget-char v0, v5, v0
if-ne v0, v10, :cond_8b
:cond_4a
add-int/lit8 v0, v2, -0x1
aget-char v0, v5, v0
if-eq v0, v8, :cond_56
add-int/lit8 v0, v2, -0x1
aget-char v0, v5, v0
if-ne v0, v7, :cond_8b
:cond_56
aget-char v0, v5, v2
const/16 v4, 0x74
if-eq v0, v4, :cond_62
aget-char v0, v5, v2
const/16 v4, 0x54
if-ne v0, v4, :cond_8b
.line 173
:cond_62
const/4 v0, 0x3
.line 174
or-int/lit8 v1, v1, 0x1
:goto_65
move v4, v2
move v2, v3
.line 196
:goto_67
if-lt v4, v0, :cond_17
if-nez v2, :cond_17
.line 197
sub-int v6, v4, v0
aget-char v6, v5, v6
sparse-switch v6, :sswitch_data_146
.line 208
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "invalid permission: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, 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}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 176
:cond_8b
const/4 v0, 0x7
if-lt v2, v0, :cond_106
add-int/lit8 v0, v2, -0x7
aget-char v0, v5, v0
const/16 v4, 0x72
if-eq v0, v4, :cond_9e
add-int/lit8 v0, v2, -0x7
aget-char v0, v5, v0
const/16 v4, 0x52
if-ne v0, v4, :cond_106
:cond_9e
add-int/lit8 v0, v2, -0x6
aget-char v0, v5, v0
if-eq v0, v8, :cond_aa
add-int/lit8 v0, v2, -0x6
aget-char v0, v5, v0
if-ne v0, v7, :cond_106
:cond_aa
add-int/lit8 v0, v2, -0x5
aget-char v0, v5, v0
const/16 v4, 0x67
if-eq v0, v4, :cond_b8
add-int/lit8 v0, v2, -0x5
aget-char v0, v5, v0
if-ne v0, v10, :cond_106
:cond_b8
add-int/lit8 v0, v2, -0x4
aget-char v0, v5, v0
const/16 v4, 0x69
if-eq v0, v4, :cond_c8
add-int/lit8 v0, v2, -0x4
aget-char v0, v5, v0
const/16 v4, 0x49
if-ne v0, v4, :cond_106
:cond_c8
add-int/lit8 v0, v2, -0x3
aget-char v0, v5, v0
const/16 v4, 0x73
if-eq v0, v4, :cond_d8
add-int/lit8 v0, v2, -0x3
aget-char v0, v5, v0
const/16 v4, 0x53
if-ne v0, v4, :cond_106
:cond_d8
add-int/lit8 v0, v2, -0x2
aget-char v0, v5, v0
const/16 v4, 0x74
if-eq v0, v4, :cond_e8
add-int/lit8 v0, v2, -0x2
aget-char v0, v5, v0
const/16 v4, 0x54
if-ne v0, v4, :cond_106
:cond_e8
add-int/lit8 v0, v2, -0x1
aget-char v0, v5, v0
if-eq v0, v8, :cond_f4
add-int/lit8 v0, v2, -0x1
aget-char v0, v5, v0
if-ne v0, v7, :cond_106
:cond_f4
aget-char v0, v5, v2
const/16 v4, 0x72
if-eq v0, v4, :cond_100
aget-char v0, v5, v2
const/16 v4, 0x52
if-ne v0, v4, :cond_106
.line 184
:cond_100
const/16 v0, 0x8
.line 185
or-int/lit8 v1, v1, 0x2
goto/16 :goto_65
.line 189
:cond_106
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "invalid permission: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, 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}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 199
:sswitch_11f
const/4 v2, 0x1
.line 211
:sswitch_120
add-int/lit8 v4, v4, -0x1
goto/16 :goto_67
.line 218
:cond_124
if-eqz v0, :cond_13f
.line 219
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "invalid permission: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, 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}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_13f
move v0, v1
.line 223
goto/16 :goto_b
:cond_142
move v1, v3
move v0, v3
goto/16 :goto_1c
.line 197
:sswitch_data_146
.sparse-switch
0x9 -> :sswitch_120
0xa -> :sswitch_120
0xc -> :sswitch_120
0xd -> :sswitch_120
0x20 -> :sswitch_120
0x2c -> :sswitch_11f
.end sparse-switch
.end method
.method private init(I)V
.registers 4
.prologue
.line 127
if-eqz p1, :cond_6
and-int/lit8 v0, p1, 0x3
if-eq v0, p1, :cond_e
.line 129
:cond_6
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "invalid action string"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 132
:cond_e
iput p1, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
.line 133
return-void
.end method
.method private declared-synchronized readObject(Ljava/io/ObjectInputStream;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/ClassNotFoundException;
}
.end annotation
.prologue
.line 357
monitor-enter p0
:try_start_1
invoke-virtual {p1}, Ljava/io/ObjectInputStream;->defaultReadObject()V
.line 358
iget-object v0, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
invoke-static {v0}, Lorg/osgi/framework/ServicePermission;->getMask(Ljava/lang/String;)I
move-result v0
invoke-direct {p0, v0}, Lorg/osgi/framework/ServicePermission;->init(I)V
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_f
.line 359
monitor-exit p0
return-void
.line 357
:catchall_f
move-exception v0
monitor-exit p0
throw v0
.end method
.method private declared-synchronized writeObject(Ljava/io/ObjectOutputStream;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 345
monitor-enter p0
:try_start_1
iget-object v0, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
if-nez v0, :cond_8
.line 346
invoke-virtual {p0}, Lorg/osgi/framework/ServicePermission;->getActions()Ljava/lang/String;
.line 347
:cond_8
invoke-virtual {p1}, Ljava/io/ObjectOutputStream;->defaultWriteObject()V
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_d
.line 348
monitor-exit p0
return-void
.line 345
:catchall_d
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method public equals(Ljava/lang/Object;)Z
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 300
if-ne p1, p0, :cond_5
.line 310
:cond_4
:goto_4
return v0
.line 304
:cond_5
instance-of v2, p1, Lorg/osgi/framework/ServicePermission;
if-nez v2, :cond_b
move v0, v1
.line 305
goto :goto_4
.line 308
:cond_b
check-cast p1, Lorg/osgi/framework/ServicePermission;
.line 310
iget v2, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
iget v3, p1, Lorg/osgi/framework/ServicePermission;->action_mask:I
if-ne v2, v3, :cond_21
.line 311
invoke-virtual {p0}, Lorg/osgi/framework/ServicePermission;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {p1}, Lorg/osgi/framework/ServicePermission;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_4
:cond_21
move v0, v1
goto :goto_4
.end method
.method public getActions()Ljava/lang/String;
.registers 5
.prologue
const/4 v0, 0x1
.line 256
iget-object v1, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
if-nez v1, :cond_2f
.line 257
new-instance v2, Ljava/lang/StringBuffer;
invoke-direct {v2}, Ljava/lang/StringBuffer;-><init>()V
.line 258
const/4 v1, 0x0
.line 260
iget v3, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
and-int/lit8 v3, v3, 0x1
if-ne v3, v0, :cond_32
.line 261
const-string v1, "get"
invoke-virtual {v2, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 265
:goto_16
iget v1, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
and-int/lit8 v1, v1, 0x2
const/4 v3, 0x2
if-ne v1, v3, :cond_29
.line 266
if-eqz v0, :cond_24
const/16 v0, 0x2c
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 267
:cond_24
const-string v0, "register"
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 270
:cond_29
invoke-virtual {v2}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
.line 273
:cond_2f
iget-object v0, p0, Lorg/osgi/framework/ServicePermission;->actions:Ljava/lang/String;
return-object v0
:cond_32
move v0, v1
goto :goto_16
.end method
.method getMask()I
.registers 2
.prologue
.line 332
iget v0, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
return v0
.end method
.method public hashCode()I
.registers 3
.prologue
.line 322
invoke-virtual {p0}, Lorg/osgi/framework/ServicePermission;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I
move-result v0
invoke-virtual {p0}, Lorg/osgi/framework/ServicePermission;->getActions()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/String;->hashCode()I
move-result v1
xor-int/2addr v0, v1
return v0
.end method
.method public implies(Ljava/security/Permission;)Z
.registers 6
.prologue
const/4 v1, 0x0
.line 237
instance-of v0, p1, Lorg/osgi/framework/ServicePermission;
if-eqz v0, :cond_1b
move-object v0, p1
.line 238
check-cast v0, Lorg/osgi/framework/ServicePermission;
.line 240
iget v2, p0, Lorg/osgi/framework/ServicePermission;->action_mask:I
iget v3, v0, Lorg/osgi/framework/ServicePermission;->action_mask:I
and-int/2addr v2, v3
iget v0, v0, Lorg/osgi/framework/ServicePermission;->action_mask:I
if-ne v2, v0, :cond_19
.line 241
invoke-super {p0, p1}, Ljava/security/BasicPermission;->implies(Ljava/security/Permission;)Z
move-result v0
if-eqz v0, :cond_19
const/4 v0, 0x1
.line 244
:goto_18
return v0
:cond_19
move v0, v1
.line 241
goto :goto_18
:cond_1b
move v0, v1
.line 244
goto :goto_18
.end method
.method public newPermissionCollection()Ljava/security/PermissionCollection;
.registers 2
.prologue
.line 285
new-instance v0, Lorg/osgi/framework/ServicePermissionCollection;
invoke-direct {v0}, Lorg/osgi/framework/ServicePermissionCollection;-><init>()V
return-object v0
.end method