Annotation + interceptor

5 respostas
jingle

Oi não estou entendendo porque nao ta chegando minha annotation na interceptor... preciso annotar algo na minha annotation?

meu interceptor:

@Override
	public boolean accepts(ResourceMethod method) {
		// intercepta todos.
		Annotation[] methodAnnotations = method.getMethod().getAnnotations();
		for (Annotation methodAnnotation : methodAnnotations) {
			if (methodAnnotation.getClass().equals(NotLoggedIn.class)) {
				return false;
			}
		}

		Annotation[] classAnnotations = method.getMethod().getDeclaringClass()
				.getAnnotations();
		for (Annotation classAnnotation : classAnnotations) {
			if (classAnnotation.getClass().equals(NotLoggedIn.class)) {
				return false;
			}
		}
		return true;
	}
já tentei :
method.getMethod().getAnnotation(NotLoggedIn.class)
Também não veio nada, vem só as annotation que tem do v-raptor (resource, paht...)

minha annotation não tem nada implementado.

public @interface NotLoggedIn {

}

5 Respostas

mgarcia

Insira na sua annotation:

@Retention(RetentionPolicy.RUNTIME)
Lavieri

aqui há um exemplo

http://vraptor.caelum.com.br/cookbook/interceptando-recursos-anotados/

mas provavelmente o seu problema é o que o colega acima falou

Lucas_Cavalcanti

vc precisa colocar na sua anotação, alem do retention, o target…

e um jeito melhor de verificar se a anotação existe é:

public boolean accepts(ResourceMethod method) {
   return method.containsAnnotation(NotLoggedIn.class);
}

assim, tanto se a anotação estiver no método ou na classe da lógica, isso vai retornar true…

se vc quiser usar anotação só no método:

public boolean accepts(ResourceMethod method) {
   return method.getMethod().isAnnotationPresent(NotLoggedIn.class);
}
jingle

valeu funcionou com só com o retention pra que serve o target??

valeu pelas dica vo usa dessa forma.

Lucas_Cavalcanti

o @Target na anotação diz onde ela pode ser usada, pode ser no método, na classe, no atributo, parametro de método, etc

Criado 3 de maio de 2010
Ultima resposta 3 de mai. de 2010
Respostas 5
Participantes 4