Como pegar uma anotação de uma atributo ? (Resolvido)

1 resposta
usphisics

Olá a todos…
Estou c um problema…

Defini uma anotação assim:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface RequiredAction {
	public String action();
}

e outra assim:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SecureModule {
	public String name();
	public String requiredAction();
}

e defini um método assim:

@SecureModule(name="Administracao", requiredAction="execution")
public void removeUsuario(@RequiredAction(action = "write")
							  String usuario) {
		System.out.println("Finalmente eu posso fazer isso.");
		System.out.println("Removendo usuário: "+usuario);
}

e p pegar a anotação do método eu faço assim:

Class classe = obj.getClass();                 
Method[] methods = classe.getDeclaredMethods();

if (methods[0].is.isAnnotationPresent(SecureModule.class)) {
     String nameModule = methods[0].getAnnotation(SecureModule.class).name();
     String actionModule = methods[0].getAnnotation(SecureModule.class).requiredAction();
}

Bom oq eu quero fazer e não estou conseguindo é fazer algo parecido mas agora para os atributod que eu passo p o método … q nesse quaso é a String usuario, q está anotada c @RequiredAction(action = “write”).

Eu quero pegar o parametro, verificar se ele está anotado e depois pegar o valor dos atributos da anotação q nesse quaso é a public String action() q recebe write.

O grande problema é q não existe nenhum getDeclaredParameter() e nem um tipo de dado do tipo Parameter, só Field, Method etc…

Alguém saberia como resolver isso…estou me matando e nada…
Até +

1 Resposta

usphisics

Blz pessoal então é assim q se faz…

Class classe = obj.getClass();                   
Method[] methods = classe.getDeclaredMethods();  
Annotation[][] attributesNoted = method.getParameterAnnotations();
RequiredAction attribute = (RequiredAction)attributesNoted[0][0];

String actionAttrib = attribute.action();
Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 1
Participantes 1