@Path("{id}/produtos/{produtoId}")
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response alteraProduto(@PathParam("id") long id, @PathParam("produtoId") long produtoId, String conteudo) {
Carrinho carrinho = new CarrinhoDAO().busca(id);
Produto produto = (Produto) new XStream().fromXML(conteudo);
carrinho.troca(produto);
return Response.ok().build();
}
@Path("{id}/produtos/{produtoId}/quantidade")
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response alteraProduto(@PathParam("id") long id, @PathParam("produtoId") long produtoId, String conteudo) {
Carrinho carrinho = new CarrinhoDAO().busca(id);
Produto produto = (Produto) new XStream().fromXML(conteudo);
carrinho.trocaQuantidade(produto);
return Response.ok().build();
}
Observei que o parâmetro id do carrinho foi utilizado internamente para localizar o objeto carrinho no BD, porém o parâmetro produtoId não é utilizado internamente no método, só está servindo para o path. Não seria importante validar se o Produto passado via o parâmetro conteudo refere-se ao produto identificado pelo produtoId passado no path?