Boa tarde, estou tendo problemas ao tentar excluir um item do carrinho. Esta passando pelo controller e pelo metodo de excluir, porem nada acontece. Acho que alguma coisa na minha classe CarrinhoCompras ou na classe CarrinhoItem pode estar errado. Notei tambem que ao inserir dois itens iguais nao esta atualizando quantidade e sim criando outro item no carrinho.
Segue as classes: CarrinhoItem
package br.com.casadocodigo.loja.models;
import java.math.BigDecimal;
import org.springframework.stereotype.Component;
public class CarrinhoItem {
private Produto produto;
private TipoPreco tipoPreco;
public CarrinhoItem(Produto produto, TipoPreco tipoPreco) {
this.produto = produto;
this.tipoPreco = tipoPreco;
}
public BigDecimal getPreco(){
return produto.precoPara(tipoPreco);
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public TipoPreco getTipoPreco() {
return tipoPreco;
}
public void setTipoPreco(TipoPreco tipoPreco) {
this.tipoPreco = tipoPreco;
}
public BigDecimal getTotal(int quantidade) {
return this.getPreco().multiply(new BigDecimal(quantidade));
}
}
CarrinhoCompras
package br.com.casadocodigo.loja.models;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
@Component
@Scope(value=WebApplicationContext.SCOPE_SESSION, proxyMode=ScopedProxyMode.TARGET_CLASS)
public class CarrinhoCompras implements Serializable{
private static final long serialVersionUID = 1L;
private Map<CarrinhoItem, Integer> itens = new LinkedHashMap<CarrinhoItem, Integer>();
public Collection<CarrinhoItem> getItens() {
return itens.keySet();
}
public void add(CarrinhoItem item){
itens.put(item, getQuantidade(item)+1);
}
public Integer getQuantidade(CarrinhoItem item) {
if(!itens.containsKey(item)){
itens.put(item, 0);
}
return itens.get(item);
}
public int getQuantidade(){
return itens.values().stream().reduce(0, (proximo,acumulador) -> proximo + acumulador);
}
public BigDecimal getTotal(CarrinhoItem item){
return item.getTotal(getQuantidade(item));
}
public BigDecimal getTotal(){
BigDecimal total = BigDecimal.ZERO;
for(CarrinhoItem item: itens.keySet()){
total=total.add(getTotal(item));
}
return total;
}
public void remover(Integer produtoId, TipoPreco tipoPreco) {
Produto produto = new Produto();
System.out.println("Passou pelo model do carrinho de compras");
produto.setId(produtoId);
itens.remove(new CarrinhoItem(produto, tipoPreco));
}
}