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…