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

envio meu POST para o SERVER ele retorna a mensagem de sucesso , maas quando faço o GET ele me retorna o código XML sem nehuma alteração .

Oláaa,estou utilizando o POSTMAN pois meu sistema op é o Windows,executei os testes direitinho, quando faço a alteração e envio meu POST para o SERVER ele retorna a mensagem de sucesso , maas quando faço o GET ele me retorna o código XML sem nehuma alteração ! e tambem percebo se eu botar na minha URI "carrinhos/qualquer ID" ele sempre vai acessar , mesmo que o ID não exista , ele acessa de todo o jeito. O que pode ser feito nesse caso?

5 respostas

Oi Mateus, desconfio que pode ter algo estranho no seu código. Pode postar aqui? Já da uma olhada e confere se o método que recebe o post ta realmente criando ou mudando algo.

classe do carrinhoResource

package br.com.alura.loja.resource;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.thoughtworks.xstream.XStream;

import br.com.alura.loja.dao.CarrinhoDAO;
import br.com.alura.loja.modelo.Carrinho;

@Path("carrinhos")
public class CarrinhoResource {

    @Path("{id}")//indica que vai receber um parametro atraves da uri
    @GET
    @Produces(MediaType.APPLICATION_XML)
    public String busca(@PathParam("id") long id) {
        Carrinho carrinho = new CarrinhoDAO().busca(1l);
        return carrinho.toXML();

    }

    @POST//vai enviar uma representação do cliente para o servidor
    @Produces(MediaType.APPLICATION_XML)
    public String adiciona(String conteudo) {
        Carrinho carrinho = (Carrinho) new XStream().fromXML(conteudo);//criando carro
        new CarrinhoDAO().adiciona(carrinho);//adicionando ao banco
        return "<status>success</status>";

    }


}

classe carrinhoDAO

package br.com.alura.loja.dao;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;

import br.com.alura.loja.modelo.Carrinho;
import br.com.alura.loja.modelo.Produto;

public class CarrinhoDAO {

    private static Map<Long, Carrinho> banco = new HashMap<Long, Carrinho>();
    private static AtomicLong contador = new AtomicLong(1);

    static {
        Produto videogame = new Produto(6237, "Videogame 4", 4000, 1);
        Produto esporte = new Produto(3467, "Jogo de esporte", 60, 2);
        Carrinho carrinho = new Carrinho()
                                .adiciona(videogame)
                                .adiciona(esporte)
                                .para("Rua Vergueiro 3185, 8 andar", "S‹o Paulo")
                                .setId(1l);
        banco.put(1l, carrinho);
    }

    public void adiciona(Carrinho carrinho) {
        long id = contador.incrementAndGet();
        carrinho.setId(id);
        banco.put(id, carrinho);
    }

Você precisa verificar como que ta ficando o mapa. Cada vez que você adiciona, uma nova chave está sendo adicionada? Aí não tem jeito, você precisa debugar o código.

insira seu código aqui
solução!

Consegui resolver obrigado =)