ServicePermissionCollection.smali
.class final Lorg/osgi/framework/ServicePermissionCollection;
.super Ljava/security/PermissionCollection;
.source "ServicePermission.java"
# instance fields
.field private all_allowed:Z
.field private permissions:Ljava/util/Hashtable;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Hashtable",
"<",
"Ljava/lang/String;",
"Ljava/security/Permission;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>()V
.registers 2
.prologue
.line 390
invoke-direct {p0}, Ljava/security/PermissionCollection;-><init>()V
.line 391
new-instance v0, Ljava/util/Hashtable;
invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
iput-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
.line 392
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->all_allowed:Z
.line 393
return-void
.end method
# virtual methods
.method public add(Ljava/security/Permission;)V
.registers 7
.prologue
.line 406
instance-of v0, p1, Lorg/osgi/framework/ServicePermission;
if-nez v0, :cond_1d
.line 407
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, p1}, 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/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 409
:cond_1d
invoke-virtual {p0}, Lorg/osgi/framework/ServicePermissionCollection;->isReadOnly()Z
move-result v0
if-eqz v0, :cond_2b
.line 410
new-instance v0, Ljava/lang/SecurityException;
const-string v1, "attempt to add a Permission to a readonly PermissionCollection"
invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
throw v0
:cond_2b
move-object v0, p1
.line 413
check-cast v0, Lorg/osgi/framework/ServicePermission;
.line 414
invoke-virtual {v0}, Lorg/osgi/framework/ServicePermission;->getName()Ljava/lang/String;
move-result-object v2
.line 416
iget-object v1, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
.line 417
invoke-virtual {v1, v2}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/osgi/framework/ServicePermission;
.line 419
if-eqz v1, :cond_61
.line 420
invoke-virtual {v1}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v1
.line 421
invoke-virtual {v0}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v0
.line 422
if-eq v1, v0, :cond_51
.line 423
iget-object v3, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
new-instance v4, Lorg/osgi/framework/ServicePermission;
or-int/2addr v0, v1
invoke-direct {v4, v2, v0}, Lorg/osgi/framework/ServicePermission;-><init>(Ljava/lang/String;I)V
invoke-virtual {v3, v2, v4}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 431
:cond_51
:goto_51
iget-boolean v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->all_allowed:Z
if-nez v0, :cond_60
.line 432
const-string v0, "*"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_60
.line 433
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->all_allowed:Z
.line 435
:cond_60
return-void
.line 428
:cond_61
iget-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
invoke-virtual {v0, v2, p1}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_51
.end method
.method public elements()Ljava/util/Enumeration;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Enumeration",
"<",
"Ljava/security/Permission;",
">;"
}
.end annotation
.prologue
.line 514
iget-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
invoke-virtual {v0}, Ljava/util/Hashtable;->elements()Ljava/util/Enumeration;
move-result-object v0
return-object v0
.end method
.method public implies(Ljava/security/Permission;)Z
.registers 11
.prologue
const/4 v4, 0x1
const/4 v2, 0x0
.line 448
instance-of v0, p1, Lorg/osgi/framework/ServicePermission;
if-nez v0, :cond_7
.line 502
:cond_6
:goto_6
return v2
.line 451
:cond_7
check-cast p1, Lorg/osgi/framework/ServicePermission;
.line 454
invoke-virtual {p1}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v5
.line 458
iget-boolean v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->all_allowed:Z
if-eqz v0, :cond_85
.line 459
iget-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
const-string v1, "*"
invoke-virtual {v0, v1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/ServicePermission;
.line 460
if-eqz v0, :cond_85
.line 461
invoke-virtual {v0}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v0
or-int/2addr v0, v2
.line 462
and-int v1, v0, v5
if-ne v1, v5, :cond_28
move v2, v4
.line 463
goto :goto_6
:cond_28
move v1, v0
.line 471
:goto_29
invoke-virtual {p1}, Lorg/osgi/framework/ServicePermission;->getName()Ljava/lang/String;
move-result-object v3
.line 473
iget-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
invoke-virtual {v0, v3}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/ServicePermission;
.line 475
if-eqz v0, :cond_42
.line 477
invoke-virtual {v0}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v0
or-int/2addr v1, v0
.line 478
and-int v0, v1, v5
if-ne v0, v5, :cond_42
move v2, v4
.line 479
goto :goto_6
.line 485
:cond_42
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v0
add-int/lit8 v0, v0, -0x1
move-object v8, v3
move v3, v1
move-object v1, v8
.line 487
:goto_4b
const-string v6, "."
invoke-virtual {v1, v6, v0}, Ljava/lang/String;->lastIndexOf(Ljava/lang/String;I)I
move-result v6
const/4 v0, -0x1
if-eq v6, v0, :cond_6
.line 489
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
add-int/lit8 v7, v6, 0x1
invoke-virtual {v1, v2, v7}, Ljava/lang/String;->substring(II)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 v1
.line 490
iget-object v0, p0, Lorg/osgi/framework/ServicePermissionCollection;->permissions:Ljava/util/Hashtable;
invoke-virtual {v0, v1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/ServicePermission;
.line 492
if-eqz v0, :cond_82
.line 493
invoke-virtual {v0}, Lorg/osgi/framework/ServicePermission;->getMask()I
move-result v0
or-int/2addr v3, v0
.line 494
and-int v0, v3, v5
if-ne v0, v5, :cond_82
move v2, v4
.line 495
goto :goto_6
.line 497
:cond_82
add-int/lit8 v0, v6, -0x1
goto :goto_4b
:cond_85
move v1, v2
goto :goto_29
.end method