public class org.apache.cassandra.cql3.statements.AlterRoleStatement extends org.apache.cassandra.cql3.statements.AuthenticationStatement
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.cassandra.cql3.statements.AlterRoleStatement
super_class: org.apache.cassandra.cql3.statements.AuthenticationStatement
{
private final org.apache.cassandra.auth.RoleResource role;
descriptor: Lorg/apache/cassandra/auth/RoleResource;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.apache.cassandra.auth.RoleOptions opts;
descriptor: Lorg/apache/cassandra/auth/RoleOptions;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.apache.cassandra.cql3.RoleName, org.apache.cassandra.auth.RoleOptions);
descriptor: (Lorg/apache/cassandra/cql3/RoleName;Lorg/apache/cassandra/auth/RoleOptions;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial org.apache.cassandra.cql3.statements.AuthenticationStatement.<init>:()V
1: aload 0
aload 1
invokevirtual org.apache.cassandra.cql3.RoleName.getName:()Ljava/lang/String;
invokestatic org.apache.cassandra.auth.RoleResource.role:(Ljava/lang/String;)Lorg/apache/cassandra/auth/RoleResource;
putfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
2: aload 0
aload 2
putfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/cassandra/cql3/statements/AlterRoleStatement;
0 4 1 name Lorg/apache/cassandra/cql3/RoleName;
0 4 2 opts Lorg/apache/cassandra/auth/RoleOptions;
MethodParameters:
Name Flags
name
opts
public void validate(org.apache.cassandra.service.ClientState);
descriptor: (Lorg/apache/cassandra/service/ClientState;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.validate:()V
1: aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.isEmpty:()Z
ifeq 3
2: new org.apache.cassandra.exceptions.InvalidRequestException
dup
ldc "ALTER [ROLE|USER] can't be empty"
invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.cassandra.service.ClientState.ensureNotAnonymous:()V
4: invokestatic org.apache.cassandra.config.DatabaseDescriptor.getRoleManager:()Lorg/apache/cassandra/auth/IRoleManager;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
invokeinterface org.apache.cassandra.auth.IRoleManager.isExistingRole:(Lorg/apache/cassandra/auth/RoleResource;)Z
ifne 6
5: new org.apache.cassandra.exceptions.InvalidRequestException
dup
ldc "%s doesn't exist"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
invokevirtual org.apache.cassandra.auth.RoleResource.getRoleName:()Ljava/lang/String;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/cassandra/cql3/statements/AlterRoleStatement;
0 7 1 state Lorg/apache/cassandra/service/ClientState;
Exceptions:
throws org.apache.cassandra.exceptions.RequestValidationException
MethodParameters:
Name Flags
state
public void checkAccess(org.apache.cassandra.service.ClientState);
descriptor: (Lorg/apache/cassandra/service/ClientState;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.apache.cassandra.service.ClientState.getUser:()Lorg/apache/cassandra/auth/AuthenticatedUser;
astore 2
start local 2 1: aload 2
invokevirtual org.apache.cassandra.auth.AuthenticatedUser.isSuper:()Z
istore 3
start local 3 2: aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.getSuperuser:()Lcom/google/common/base/Optional;
invokevirtual com.google.common.base.Optional.isPresent:()Z
ifeq 4
aload 2
invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getRoles:()Ljava/util/Set;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 4
3: new org.apache.cassandra.exceptions.UnauthorizedException
dup
ldc "You aren't allowed to alter your own superuser status or that of a role granted to you"
invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: org.apache.cassandra.auth.AuthenticatedUser int
StackMap stack:
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.getSuperuser:()Lcom/google/common/base/Optional;
invokevirtual com.google.common.base.Optional.isPresent:()Z
ifeq 6
iload 3
ifne 6
5: new org.apache.cassandra.exceptions.UnauthorizedException
dup
ldc "Only superusers are allowed to alter superuser status"
invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
iload 3
ifeq 8
7: return
8: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getName:()Ljava/lang/String;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
invokevirtual org.apache.cassandra.auth.RoleResource.getRoleName:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 15
9: aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.getOptions:()Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 5
goto 13
StackMap locals: org.apache.cassandra.cql3.statements.AlterRoleStatement org.apache.cassandra.service.ClientState org.apache.cassandra.auth.AuthenticatedUser int top java.util.Iterator
StackMap stack:
10: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.auth.IRoleManager$Option
astore 4
start local 4 11: invokestatic org.apache.cassandra.config.DatabaseDescriptor.getRoleManager:()Lorg/apache/cassandra/auth/IRoleManager;
invokeinterface org.apache.cassandra.auth.IRoleManager.alterableOptions:()Ljava/util/Set;
aload 4
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 13
12: new org.apache.cassandra.exceptions.UnauthorizedException
dup
ldc "You aren't allowed to alter %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
athrow
end local 4 13: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
14: goto 16
15: StackMap locals: org.apache.cassandra.cql3.statements.AlterRoleStatement org.apache.cassandra.service.ClientState org.apache.cassandra.auth.AuthenticatedUser int
StackMap stack:
aload 0
aload 1
getstatic org.apache.cassandra.auth.Permission.ALTER:Lorg/apache/cassandra/auth/Permission;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
invokespecial org.apache.cassandra.cql3.statements.AuthenticationStatement.checkPermission:(Lorg/apache/cassandra/service/ClientState;Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/RoleResource;)V
16: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/apache/cassandra/cql3/statements/AlterRoleStatement;
0 17 1 state Lorg/apache/cassandra/service/ClientState;
1 17 2 user Lorg/apache/cassandra/auth/AuthenticatedUser;
2 17 3 isSuper Z
11 13 4 option Lorg/apache/cassandra/auth/IRoleManager$Option;
Exceptions:
throws org.apache.cassandra.exceptions.UnauthorizedException
MethodParameters:
Name Flags
state
public org.apache.cassandra.transport.messages.ResultMessage execute(org.apache.cassandra.service.ClientState);
descriptor: (Lorg/apache/cassandra/service/ClientState;)Lorg/apache/cassandra/transport/messages/ResultMessage;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokevirtual org.apache.cassandra.auth.RoleOptions.isEmpty:()Z
ifne 2
1: invokestatic org.apache.cassandra.config.DatabaseDescriptor.getRoleManager:()Lorg/apache/cassandra/auth/IRoleManager;
aload 1
invokevirtual org.apache.cassandra.service.ClientState.getUser:()Lorg/apache/cassandra/auth/AuthenticatedUser;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.role:Lorg/apache/cassandra/auth/RoleResource;
aload 0
getfield org.apache.cassandra.cql3.statements.AlterRoleStatement.opts:Lorg/apache/cassandra/auth/RoleOptions;
invokeinterface org.apache.cassandra.auth.IRoleManager.alterRole:(Lorg/apache/cassandra/auth/AuthenticatedUser;Lorg/apache/cassandra/auth/RoleResource;Lorg/apache/cassandra/auth/RoleOptions;)V
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/cql3/statements/AlterRoleStatement;
0 3 1 state Lorg/apache/cassandra/service/ClientState;
Exceptions:
throws org.apache.cassandra.exceptions.RequestValidationException, org.apache.cassandra.exceptions.RequestExecutionException
MethodParameters:
Name Flags
state
}
SourceFile: "AlterRoleStatement.java"
InnerClasses:
public final Option = org.apache.cassandra.auth.IRoleManager$Option of org.apache.cassandra.auth.IRoleManager