Galera estou fazendo um login, só que não consigo recuperar a sessão pra saber se tá logado da esse erro:
net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method isAllowed
at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
at br.com.caelum.brutauth.reflection.BrutauthMethod.invoke(BrutauthMethod.java:36)
at br.com.caelum.brutauth.reflection.DefaultMethodInvoker.invoke(DefaultMethodInvoker.java:13)
at br.com.caelum.brutauth.verifier.CustomBrutauthRulesVerifier.rulesAllows(CustomBrutauthRulesVerifier.java:51)
at br.com.caelum.brutauth.verifier.CustomBrutauthRulesVerifier.rulesOfTypeAllows(CustomBrutauthRulesVerifier.java:42)
at br.com.caelum.brutauth.interceptors.CustomBrutauthRuleInterceptor.intercept(CustomBrutauthRuleInterceptor.java:37)
at br.com.caelum.brutauth.interceptors.CustomBrutauthRuleInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93)
at br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.start(Unknown Source)
at br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:274)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:261)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:240)
at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:170)
at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:166)
at org.jboss.weld.event.TransactionalObserverNotifier.notifyObserver(TransactionalObserverNotifier.java:44)
at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:120)
at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:113)
at org.jboss.weld.event.EventImpl.fire(EventImpl.java:79)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:118)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at br.com.upper.upfrota.perfil.DeveSerAdmin.isAllowed(DeveSerAdmin.java:20)
at br.com.upper.upfrota.perfil.DeveSerAdmin$Proxy$_$$_WeldClientProxy.isAllowed(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
... 55 more
meu DAO
package br.com.upper.upfrota.dao;
import br.com.upper.upfrota.entidades.Usuario;
import java.util.HashSet;
import java.util.Set;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author FILIPE
*/
@Stateless
public class UsuarioDao {
private final EntityManager manager;
public UsuarioDao() {
this.manager = null;
}
@Inject
public UsuarioDao(EntityManager manager) {
this.manager = manager;
}
public Usuario autenticaUsuario(String login, String senha) {
Query query = manager.createQuery("select u from Usuario u where u.login = :login and u.senha = :senha");
query.setParameter("login", login);
query.setParameter("senha", senha);
return (Usuario) query.getSingleResult();
}
}
meu objeto pra colocar na sessão
@SessionScoped
public class UsuarioLogado implements Serializable {
@Inject
private Usuario usuario;
public void logar(Usuario usuario){
this.usuario = usuario;
}
public Usuario getUsuario(){
return usuario;
}
public boolean estaLogado(){
return usuario != null;
}
}
minha validação de role
@RequestScoped
public class DeveSerAdmin implements CustomBrutauthRule {
@Inject
private UsuarioLogado usuarioLogado;
public boolean isAllowed() {
if (usuarioLogado.getUsuario().getPerfil().equals("admin")){
return true;
}
return false;
}
}
meu controller
package br.com.upper.upfrota.controllers;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Get;
import
br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.validator.I18nMessage;
import br.com.caelum.vraptor.validator.Validator;
import br.com.upper.upfrota.dao.UsuarioDao;
import br.com.upper.upfrota.entidades.Usuario;
import javax.inject.Inject;
/**
*
* @author FILIPE
*/
@Controller
public class LoginController {
private Result result;
private UsuarioLogado logado;
private UsuarioDao usuario;
private Validator validator;
public LoginController() {
this(null,null,null,null);
}
@Inject
public LoginController(Result result, UsuarioLogado logado, UsuarioDao usuario, Validator validator) {
this.result = result;
this.logado = logado;
this.usuario = usuario;
this.validator = validator;
}
@Get("/login")
public void formLogin() {
}
@Post("/login")
public void login(Usuario usuario) {
Usuario us = this.usuario.autenticaUsuario(usuario.getLogin(), usuario.getSenha());
if (us == null) {
result.redirectTo(this).formLogin();
}
//validator.onErrorRedirectTo(this).formLogin();
logado.logar(usuario);
result.redirectTo(PrincipalController.class).principal();
}
}
OBS.: estou usando vraptor-jpa e vraptor-brutauth
se puderem me ajudar eu agradeço muito.