Commit f52b6c86 by Patryk Czarnik

Wiele formatów w @Consumes i @Produces

parent 64ab8675
package rest; package rest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE; import javax.ws.rs.DELETE;
...@@ -17,6 +16,7 @@ import sklep.db.DBException; ...@@ -17,6 +16,7 @@ import sklep.db.DBException;
import sklep.db.ProductDAO; import sklep.db.ProductDAO;
import sklep.db.RecordNotFound; import sklep.db.RecordNotFound;
import sklep.model.Product; import sklep.model.Product;
import sklep.model.ProductList;
import sklep.photo.PhotoUtil; import sklep.photo.PhotoUtil;
// JAX-RS - część Javy EE // JAX-RS - część Javy EE
...@@ -27,19 +27,20 @@ import sklep.photo.PhotoUtil; ...@@ -27,19 +27,20 @@ import sklep.photo.PhotoUtil;
@Path("/products") @Path("/products")
public class RProduct { public class RProduct {
// Gdy w Produces jest wiele formatów, to klient może wybrać za pomocą nagłówka Accept
// Gdy w Consumes jest wiele formatów, to klient może przysłać dane w dowolnym z nich (nagłówek Content-Type)
@GET @GET
@Produces("application/json") @Produces({"application/json", "application/xml", "text/plain"})
public List<Product> readAllProducts() throws DBException { public ProductList readAllProducts() throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
return productDAO.readAll(); return new ProductList(productDAO.readAll());
} }
} }
@Path("/{id}") @Path("/{id}")
@GET @GET
@Produces("application/json") @Produces({"application/json", "application/xml", "text/plain"})
public Product readOneProduct(@PathParam("id") int productId) throws DBException, RecordNotFound { public Product readOneProduct(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
...@@ -56,7 +57,7 @@ public class RProduct { ...@@ -56,7 +57,7 @@ public class RProduct {
@Path("/{id}/price") @Path("/{id}/price")
@GET @GET
@Produces("application/json") @Produces({"application/json", "text/plain"})
public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound { public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
...@@ -71,7 +72,7 @@ public class RProduct { ...@@ -71,7 +72,7 @@ public class RProduct {
// Właśnie poprzez ten parametr przekazywane są dane przysłane w treści zapytania (w praktyce: POST i PUT). // Właśnie poprzez ten parametr przekazywane są dane przysłane w treści zapytania (w praktyce: POST i PUT).
@Path("/{id}/price") @Path("/{id}/price")
@PUT @PUT
@Consumes("application/json") @Consumes({"application/json", "text/plain"})
public void setPrice(@PathParam("id") int productId, BigDecimal newPrice) throws DBException, RecordNotFound { public void setPrice(@PathParam("id") int productId, BigDecimal newPrice) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
...@@ -84,7 +85,7 @@ public class RProduct { ...@@ -84,7 +85,7 @@ public class RProduct {
@Path("/{id}") @Path("/{id}")
@PUT @PUT
@Consumes("application/json") @Consumes({"application/json", "application/xml"})
public void updateProduct(@PathParam("id") int productId, Product product) throws DBException { public void updateProduct(@PathParam("id") int productId, Product product) throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
...@@ -105,8 +106,8 @@ public class RProduct { ...@@ -105,8 +106,8 @@ public class RProduct {
// a aplikacja sama wybierze nowe ID z sekwencjii // a aplikacja sama wybierze nowe ID z sekwencjii
// w wyniku zostanie odesłany uzupełniony produkt // w wyniku zostanie odesłany uzupełniony produkt
@POST @POST
@Consumes("application/json") @Consumes({"application/json", "application/xml"})
@Produces("application/json") @Produces({"application/json", "application/xml"})
public Product addProduct(Product product) throws DBException { public Product addProduct(Product product) throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment