Ajuda com sistema de Login Vraptor

2 respostas
V

Ola pessoal!
Estou tendo dificulades para realizar uma HQL. Esta dando a exceçao acima. Alguem pode ajudar? :(

exception

javax.servlet.ServletException
	org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:69)
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException
	br.com.guiadesaloes.dao.UsuarioDao.existeUnico(UsuarioDao.java:29)
	br.com.guiadesaloes.logic.UsuarioLogic.efetuaLogin(UsuarioLogic.java:61)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:61)
	org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:32)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:130)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:57)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	br.com.guiadesaloes.dao.DaoInterceptor.intercept(DaoInterceptor.java:17)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
	org.vraptor.core.DefaultController.execute(DefaultController.java:46)
	org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Classe UsuarioDao

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.guiadesaloes.beans.Usuario;

public class UsuarioDao extends Dao<Usuario> {

	private Session session;
	
	UsuarioDao(Session session) {
		super(session, Usuario.class);
	}
	
	public Usuario existeUnico(Usuario u) {
		String hql = "select u " +
					 "from Usuario as u " +
					 "where u.login = :login " +
					 "and u.senha = :senha ";
		//teste
		System.out.println(hql);
		
		Query query = getSession().createQuery(hql);
		query.setParameter("login", u.getLogin());
		query.setParameter("senha", u.getSenha());
		return (Usuario) query.uniqueResult();
	}
	
	public void adiciona(Usuario u) {
		this.session.save(u);
	}
	
	public void remove(Usuario u) {
		this.session.delete(u);
	}
	
	public void atualiza(Usuario u) {
		this.session.merge(u);
	}
	
	@SuppressWarnings("unchecked")
	public List<Usuario> listaTudo() {
		return this.session.createCriteria(Usuario.class).list();
	}
	
	public Usuario procura(Long id) {
		return (Usuario) session.load(Usuario.class, id);
	}
}

Classe Usuario

package br.com.guiadesaloes.beans;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@SuppressWarnings("serial")
@Entity
public abstract class Usuario implements Serializable {
	
	private Long 		 id;
	private String 		 nome;
	private String		 cpf;
	private int 	 	 rg;
	private String 		 email;
	private int 		 telefone;
	private String	 	 login;
	private String 		 senha;
	private String 		 role;
	private Endereco 	 endereco;
	private	 Set<Salao>	 salao;
	
	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String i) {
		this.cpf = i;
	}
	public int getRg() {
		return rg;
	}
	public void setRg(int rg) {
		this.rg = rg;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getTelefone() {
		return telefone;
	}
	public void setTelefone(int i) {
		this.telefone = i;
	}

	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	@OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="endereco_id")
	public Endereco getEndereco() {
		return endereco;
	}

	public void setUsuarioSalao(Set<Salao> salao) {
		this.salao = salao;
	}
	
	@OneToMany
    @JoinTable(
            name="usuarioSalao",
            joinColumns = @JoinColumn( name="usuario_id"),
            inverseJoinColumns = @JoinColumn( name="salao_id")
    )
	public Set<Salao> getUsuarioSalao() {
		return salao;
	}

	public void setRole(String role) {
		this.role = role;
	}

	public String getRole() {
		return role;
	}
	
	public boolean hasRole(String s) {
		String role = " " + this.role + " " ;
		return role.contains(s);
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getLogin() {
		return login;
	}
}

MInha Logica

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.scope.ScopeType;

import br.com.guiadesaloes.beans.Role;
import br.com.guiadesaloes.beans.Usuario;
import br.com.guiadesaloes.dao.DaoFactory;
import br.com.guiadesaloes.dao.DaoInterceptor;
import br.com.guiadesaloes.dao.UsuarioDao;

@Component
@InterceptedBy(DaoInterceptor.class)
public class UsuarioLogic {
	
	private final DaoFactory daoFactory;
	private Usuario usuario;
	
	public UsuarioLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}
	
	@Out(scope=ScopeType.SESSION)
	public Usuario getUsuario() {
		return usuario;
	}
	
	@Role("admin")
	public void adiciona(Usuario usuario) {
		
	}
	
	@Role("admin")
	public void remove(Usuario usuario) {
		
	}
	
	@Role("admin")
	public void altera(Usuario usuario) {
		
	}
	
	
	public void lista(Usuario usuario) {
		
	}
	
	
	public void busca(Usuario usuario) {
		
	}
	
	public void login() {	
		
	}
	
	public String efetuaLogin(Usuario usuario) {
		UsuarioDao dao = this.daoFactory.getUsuarioDao();
		this.usuario = dao.existeUnico(usuario);
			if (this.usuario != null) {
				return "ok";
			} else {
				return "invalid";
			}
	}
	
	public void logout() {
		this.usuario = null;
	}
}

Meu Jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guia de Saloes - Login</title>
</head>
<body>
<h3>Formulario</h3>
<form action="usuario.efetuaLogin.logic" method="POST" >
	Login: <input name="usuario.login" type="text" size="20" maxlength="20" />
    Senha: <input name="usuario.senha" type="password" size="20" maxlength="20" />
    <input type="submit" value="Enviar" />
</form>
</body>
</html>

2 Respostas

Lucas_Cavalcanti

O problema não é a hql…

ou o getSession() tá retornando null ou o usuário tá vindo null… dá uma olhada…

V

Vlw pela resposta Lucascs!

O problema era na classe Usuario.
Eu a declarei como abstract! Por isso o objeto nao estava sendo criado… :oops:
Agora ta certinho… vlw! :wink:

Criado 22 de setembro de 2009
Ultima resposta 22 de set. de 2009
Respostas 2
Participantes 2