Utilizando o projeto que foi disponibilizado pelo video do exercício e mesmo seguindo passo a passo, o Tomcat continua apresentando a mesma mensagem
: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public br.com.caelum.vraptor.dao.ProdutoDao(EntityManager)
at br.com.caelum.vraptor.dao.ProdutoDao.<init>(ProdutoDao.java:0)
As classes: ProdutoDao
package br.com.caelum.vraptor.dao;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import br.com.caelum.vraptor.model.Produto;
@RequestScoped
public class ProdutoDao {
private final EntityManager em;
@Inject
public ProdutoDao(EntityManager em) {
this.em = em;
}
@Deprecated
public ProdutoDao(){
this(null);
}
public void adiciona(Produto produto) {
em.getTransaction().begin();
em.persist(produto);
em.getTransaction().commit();
}
public void remove(Produto produto) {
em.getTransaction().begin();
em.remove(busca(produto));
em.getTransaction().commit();
}
public Produto busca(Produto produto) {
return em.find(Produto.class, produto.getId());
}
@SuppressWarnings("unchecked")
public List<Produto> lista() {
return em.createQuery("select p from Produto p").getResultList();
}
}
ProdutoController
package br.com.caelum.vraptor.controller;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import org.hibernate.annotations.Index;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.dao.ProdutoDao;
import br.com.caelum.vraptor.model.Produto;
import br.com.caelum.vraptor.util.JPAUtil;
import br.com.caelum.vraptor.view.Results;
@Controller
public class ProdutoController {
private final Result result;
private final ProdutoDao produtoDao;
@Inject
public ProdutoController(Result result, ProdutoDao produtoDao) {
this.result = result;
this.produtoDao = produtoDao;
}
@Deprecated
public ProdutoController() {
this(null,null);
}
@Get("/")
public void inicio(){
}
@Get
public List<Produto> lista(){
return produtoDao.lista();
}
@Get
public void listaXML(){
result.use(Results.xml()).from(produtoDao.lista()).serialize();
}
@Get
public void sobre(){
}
@Get
public void formulario(){
}
@Post
public void adiciona(Produto produto){
produtoDao.adiciona(produto);
result.include("mensagem", "Produto adicionado com sucesso!");
result.redirectTo(ProdutoController.class).lista();
}
@Get
public void remove(Produto produto){
produtoDao.remove(produto);
result.redirectTo(ProdutoController.class).lista();
}
}
EntityManagerProducer
package br.com.caelum.vraptor.util;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
public class EntityManagerProducer {
@Produces @RequestScoped
public EntityManager criaEM(){
return JPAUtil.criaEntityManager();
}
}