package br.com.caelum.example.controller; import static br.com.caelum.vraptor.view.Results.representation; import static br.com.caelum.vraptor.view.Results.status; import br.com.caelum.example.infra.Payments; import br.com.caelum.example.model.Payment; import br.com.caelum.vraptor.Consumes; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.Result; @Resource public class PaymentsController { private final Result result; private final Baskets baskets; private final Payments payments; public PaymentsController(Result result, Baskets baskets, Payments payments) { this.result = result; this.baskets = baskets; this.payments = payments; } @Post @Path("/basket/{id}/payment") @Consumes("application/xml") public void create(Long id, Payment payment) { Basket basket = baskets.get(id); basket.pay(payment); payments.save(payment); result.use(status()).created("/payment/" + payment.getId()); } @Get @Path("/payment/{id}") public void show(Long id) { result.use(representation()).from(payments.get(id)).serialize(); } }