Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo fazer o meu 'cast no FiltroDeAuditoria'

Quando eu rodo meu servidor está retornando a seguinte mensagem:

HTTP Status 500 - br.com.alura.gerenciador.dao.UsuarioDAO cannot be cast to br.com.alura.gerenciador.Usuario


exception:

java.lang.ClassCastException: br.com.alura.gerenciador.dao.UsuarioDAO cannot be cast to br.com.alura.gerenciador.Usuario
    br.com.alura.gerenciador.web.FiltroDeAuditoria.doFilter(FiltroDeAuditoria.java:49)

Logo eu fui na pagina de FiltroDe Auditoria e não consigo encontrar o erro. Até mesmo peguei uma parte do código do professor pra ver estava fazendo algo de errado,porém esta dando o mesmo erro.

Veja o codigo:

FiltroDeAuditoria:

package br.com.alura.gerenciador.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import br.com.alura.gerenciador.Usuario;
@WebFilter(urlPatterns="/*")
public class FiltroDeAuditoria implements Filter {

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;

                   //    USANDO SESSÃO

        HttpSession session = req.getSession();

        Usuario usuarioLogado = (Usuario) session.getAttribute("usuario.logado");
        String usuario = "<deslogado>";



        if(usuarioLogado != null){//Se o retorno for diferente de nulo pegue o valor e setta no print
            usuario = usuarioLogado.getEmail();
        }

        System.out.print("O usuário:"+usuario+" está acessando a URI"+req.getRequestURI());


        chain.doFilter(request, response);


    }

    @Override
    public void init(FilterConfig config) throws ServletException {

    }
2 respostas
solução!

Olá, Pedro!

Pelo erro, lá na Servlet de Login, na hora de você dar o session.setAttribute(...) você colocou o UsuarioDAO e não o Usuario.

Veja a mensagem de erro:

java.lang.ClassCastException: br.com.alura.gerenciador.dao.UsuarioDAO cannot be cast to br.com.alura.gerenciador.Usuario

Ou seja, não pode fazer cast de UsuarioDAO para Usuario.

Valeu professor Alexandre. Era isso mesmo !