packagebr.com.ampix.cliente.permissoes;importbr.com.ampix.cliente.Cliente;publicaspectPermissoes{publicpointcutinserir():call(void*.inserir());before():inserir(){if(!Cliente.getUsuario().isInserivel(getClass().getSimpleName()))System.out.println("Não pode inserir.");}}
O método “isInserivel” do usuário, pesquisa nas permissões que ele tem se ele pode inserir nesta ‘tela’ (JInternalFrame). O problema é que preciso pegar o nome da classe (isso seria a chave da permissão num Map) mas não consigo, pois o
getClass().getSimpleName()) retorna o nome do meu aspecto.
Alguem sabe como fazer isto? ou alguma outra sugestão?
Mas ele continua enviando a classe ApxInternalFrame (que extende de JInternalFrame, e é abstrata). Então não sei qual a classe (tela) que testa a permissão do Usuário.
Tens alguma indéia?
Rodrigo
Mauricio_Linhares
Esse método é implementado em ApxInternalFrame ou na classe filha?
R
rodrigow
Ops,
o método inserir() é abstrato na classe ApxInternalFrame (que também é asbtrata ), então todas nossas ‘telas’ implementam esse método.
alias, existem os métodos:
inserir;alterar;excluir;consultar;
Pensei em tratar eles com AOP para justamente verificar se o usuário logado tem permissão de fazer alguma dessas ações…
Rodrigo
R
rodrigow
Mauricio,
descobri uma outra coisa. O advice() before não serve para meu caso… eu tenho que usar o around(). Fiz uns testes assim:
Agora deu certo, mas ainda tenho dificuldade em descobrir o que realmente preciso: a classe que ele esta usando… acho que qdo entrar vou guardar esta informação em algum lugar :roll: … depois vejo se acho alguma coisa…