Duvida sobre privilegios...@Role...interceptor Vraptor[Resolvido]

bom dia…seguindo a apostila da caelum j-28…mais precisamente pg. 100
esta ocorrendo um erro ao remover um usuario…

** estou logado como admin, tenho o privilegio para isto, pois na anotação passei como admin --@Role(“admin”) e o add no meu metodo remove() da classe UsuarioLogic…

**outra coisa é que na classe AutorizadorInterceptor.java dentro do metodo intercept() é passada a seguinte logica:

public void intercept(LogicFlow flow) throws LogicException, ViewException {
 // pega request e response
 HttpServletRequest request = flow.getLogicRequest().getRequest();
 HttpServletResponse response = flow.getLogicRequest().getResponse();
 try {
 // usuario nao esta logado
 if (this.usuario == null) {
 // redireciona pro login
 response.sendRedirect("admin.login.logic");
 } else { // usuario esta logado
 // pega anotacao @Role no método da lógica
 Role role = flow.getLogicRequest().getLogicMethod()
 .getMetadata().getAnnotation(Role.class);
 // tem role definido
 if (role != null) {
 // se usuario tem o role pedido, executa
 if (this.usuario.hasRole(role.value())) {
 flow.execute();
 } else {
 // sem permissao, vai pra admin.semrole.logic
 request.getRequestDispatcher("semrole.jsp")
 .forward(request, response);
 }
 } else {
 // nao tem role, entao pode executar
 flow.execute();
 }
 }
 } catch (Exception e) {
 throw new LogicException(e);
 }
 }

especificamente na logica:

// pega anotacao @Role no método da lógica
 Role role = flow.getLogicRequest().getLogicMethod()
 .getMetadata().getAnnotation(Role.class);

nao aceita o metodo getLogicMethod(), o eclipse gera erro…por acasiao troquei por

//pega anotacao @Role no método da lógica
 		    Role role = flow.getLogicRequest().getLogicDefinition().getLogicMethod()
 		                .getMetadata().getAnnotation(Role.class);

mas continua gerando erro…

ja refiz o exemplo, mas nao consigo resolver…quando logo com outro role sem ser “admin” ele reconhece e me redireciona para uma outra pg dizendo que nao tenho permissão…
mas quando logo como admin gera o seguinte erro:

21/06/2007 14:51:40 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet vraptor2 threw exception org.hibernate.PropertyValueException: not-null property references a null or transient value: br.com.ricardo.lojavirtual.modelo.Usuario.login at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72) at org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:250) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:141) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:52) at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:766) at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:744) at br.com.ricardo.lojavirtual.dao.Dao.remove(Dao.java:31) at br.com.ricardo.lojavirtual.logic.UsuarioLogic.remove(UsuarioLogic.java:47) 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.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117) at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at br.com.ricardo.lojavirtual.logic.DaoInterceptor.intercept(DaoInterceptor.java:24) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at br.com.ricardo.lojavirtual.logic.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:50) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:88) at org.vraptor.core.DefaultController.execute(DefaultController.java:42) at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)

valeuuu…

bom dia…o guilherme me respondeu assim:

como q to seguindo a apostila, ela usa o HibernateValidator, mas como fazer o load do objeto Usuario…tentei fazer assim mas tem erro:

//remova usuario
 	@Role("admin")
 	public void remove (Usuario usuario) {
 		
 		this.daoFactory.beginTransaction();
 		this.session.load(Usuario.class, usuario);
 		this.daoFactory.getUsuarioDao().remove(usuario);
 		this.daoFactory.commit();
 	}

ele nao aceita a variavel usuario…
valeu…