package org.jboss.resteasy.test.providers.jaxb.resource;
import org.junit.Assert;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import java.io.InputStream;
@Path("/jaxb/orders")
@Consumes({"application/xml", "application/fastinfoset", "application/json"})
@Produces({"application/xml", "application/fastinfoset", "application/json"})
public class XmlJaxbProvidersOrderResource {
@GET
@Path("/{orderId}")
public Order getOrderById(@PathParam("orderId") String orderId) {
Order order = getOrderFromFileSystem(orderId);
return order;
}
@POST
public Response createOrder(Order order) {
return null;
}
@PUT
@Path("/{orderId}")
public Order updateOrder(Order order, @PathParam("orderId") String orderId) {
Item updatedItem = order.getItem(0);
updatedItem.setQuantity(updatedItem.getQuantity() + 1);
Item item = new Item();
item.setNote("New Item");
item.setPrice(21.99d);
item.setQuantity(1);
item.setTitle("New Thing");
order.addItem(item);
return order;
}
private Order getOrderFromFileSystem(String orderId) {
StringBuilder order = new StringBuilder("orders/");
order.append(orderId).append(".xml");
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("org/jboss/resteasy/test/providers/jaxb/" + order.toString());
Assert.assertNotEquals(null, in);
return XmlJaxbProvidersHelper.unmarshall(Order.class, in).getValue();
}
}