Pessoal, estou seguindo a parte de interceptadores criei a annotation @Restrito fiz tudo certo a parte dos Interceptadores e me resulta esse erro
GRAVE: Exception starting filter vraptor
br.com.caelum.vraptor.VRaptorException: Annotation interface br.com.caelum.vraptor.Intercepts found in interface br.com.tga.vraptor.anotacoes.Restrito, but it is neither an Interceptor nor an InterceptorSequence.
at br.com.caelum.vraptor.ioc.InterceptorStereotypeHandler.handle(InterceptorStereotypeHandler.java:52)
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.handleRefresh(StereotypedBeansRegistrar.java:63)
at br.com.caelum.vraptor.ioc.spring.StereotypedBeansRegistrar.onApplicationEvent(StereotypedBeansRegistrar.java:46)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)
at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
22/03/2012 17:27:09 org.apache.catalina.core.StandardContext start
Controller
@Put @Path("/produtos/{produto.id}")
@Restrito
public void altera(Produto produto) {
dao.atualiza(produto);
result.redirectTo(this).lista();
}
/* View */
@Path("/produtos/novo")
@Restrito
public void formulario(){
}
@Get @Path("/produtos")
@Restrito
public List<Produto> lista() {
return dao.listaTudo();
}
Interceptador
package br.com.tga.vraptor.diversos;
import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.tga.vraptor.anotacoes.Restrito;
import br.com.tga.vraptor.controller.UsuarioController;
import br.com.tga.vraptor.entidades.UsuarioWeb;
@Intercepts
public class AutorizacaoInterceptor implements Interceptor {
private final UsuarioWeb usuario;
private final Result result;
public AutorizacaoInterceptor(UsuarioWeb usuario, Result result) {
this.usuario = usuario;
this.result = result;
}
@Override
public boolean accepts(ResourceMethod method) {
return !this.usuario.isLogado() && method.containsAnnotation(Restrito.class);
}
@Override
public void intercept(InterceptorStack arg0, ResourceMethod arg1,
Object arg2) throws InterceptionException {
result.redirectTo(UsuarioController.class).loginForm();
}
}
E Anotação
@Intercepts
@Retention(RetentionPolicy.RUNTIME) //a anotação vai ficar disponível em tempo de execucao
@Target(ElementType.METHOD) // anotação para métodos
public @interface Restrito {
}