olá, estou aqui denovo, agora com uma duvida, implementei denovo, agora em outro projeto, com base no goodbuy… no codigo que autentica o usuario… recebo e seguinte exception… fiquei meio perdido, agora nao sei onde pode estar o erro, sendo que o login e a senha na qual estou usando, esta devidamente na tabela Usuario no mysql
25/04/2011 23:55:53 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [default] in context with path [/agenda] threw exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at com.agenda.dao.UsuarioDAO.buscaUsuarioPorLoginESenha(UsuarioDAO.java:21)
at com.agenda.controller.LoginController.autentica(LoginController.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
… 48 more
Aqui seguem as classes responsaveis.
package com.agenda.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class DAO<T> {
@SuppressWarnings("rawtypes")
private Class pesistente;
private Session session;
@SuppressWarnings("rawtypes")
public DAO(Class pesistente, Session session) {
this.pesistente = pesistente;
this.session = session;
}
public void save(T t) {
this.session.save(t);
}
public void update(T t) {
this.session.update(t);
}
public void delete(T t) {
this.session.delete(t);
}
@SuppressWarnings("unchecked")
public List<T> busca(String nome) {
return session.createCriteria(pesistente).add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE)).list();
}
@SuppressWarnings("unchecked")
public T load(Long id) {
return (T) this.session.load(pesistente, id);
}
@SuppressWarnings("unchecked")
public List<T> list() {
return this.session.createCriteria(pesistente).list();
}
}
package com.agenda.dao;
import org.hibernate.Query;
import org.hibernate.Session;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.RequestScoped;
import com.agenda.modelo.Usuario;
@Component
@RequestScoped
public class UsuarioDAO extends DAO<Usuario>{
private Session session;
public UsuarioDAO(Session session) {
super(Usuario.class, session);
}
public Usuario buscaUsuarioPorLoginESenha(Usuario usuario) {
Query query = this.session.createQuery("from Usuario where login = :pLogin and senha = :pSenha");
query.setParameter("pLogin", usuario.getLogin());
query.setParameter("pSenha", usuario.getSenha());
return (Usuario) query.uniqueResult();
}
}
package com.agenda.controller;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import com.agenda.dao.UsuarioDAO;
import com.agenda.infra.UsuarioLogado;
import com.agenda.modelo.Usuario;
@Resource
public class LoginController {
private UsuarioDAO usuarioDao;
private UsuarioLogado usuarioLogado;
private Result result;
public LoginController(UsuarioDAO usuarioDao, UsuarioLogado usuarioLogado, Result result) {
this.usuarioDao = usuarioDao;
this.usuarioLogado = usuarioLogado;
this.result = result;
}
public void autentica(Usuario usuario) {
Usuario autenticado = usuarioDao.buscaUsuarioPorLoginESenha(usuario);
if (autenticado != null) {
usuarioLogado.efetuaLogin(autenticado);
result.redirectTo(ContatosController.class).lista();
return;
}
result.redirectTo(LoginController.class).formulario();
}
@Get @Path("/")
public void formulario() {}
@Post @Path("/login/novo")
public void novo() {}
}
package com.agenda.interceptors;
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.ResourceClass;
import br.com.caelum.vraptor.resource.ResourceMethod;
import com.agenda.controller.LoginController;
import com.agenda.infra.UsuarioLogado;
@Intercepts
public class LoginInterceptor implements Interceptor {
private UsuarioLogado usuarioLogado;
private Result result;
public LoginInterceptor(UsuarioLogado usuarioLogado, Result result) {
this.usuarioLogado = usuarioLogado;
this.result = result;
}
public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
if (usuarioLogado.getUsuarioLogado() != null) {
stack.next(method, instance);
} else {
result.redirectTo(LoginController.class).formulario();
}
}
public boolean accepts(ResourceMethod method) {
ResourceClass resource = method.getResource();
return !resource.getType().isAssignableFrom(LoginController.class);
}
}