package org.apache.examples.struts.actions.data;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.examples.struts.models.Order;
import org.apache.examples.struts.services.OrdersService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
import org.apache.struts2.rest.RestActionSupport;
import java.util.Collection;
public class OrderController extends RestActionSupport implements ModelDriven<Object> {
private static final Logger log = LogManager.getLogger(OrderController.class);
private Order model = new Order();
private String id;
private Collection<Order> list = null;
private OrdersService ordersService = new OrdersService();
// GET /data/order/1
public HttpHeaders show() {
return new DefaultHttpHeaders("show");
}
// GET /data/order
public HttpHeaders index() {
list = ordersService.getAll();
return new DefaultHttpHeaders("index")
.disableCaching();
}
// DELETE /data/order/1
public String destroy() {
log.debug("Delete order with id: {}", id);
// To demonstrate exception handling we throw an exception when someone tries to delete an order
if(id != null) {
throw new RuntimeException(getText("exception.operation.not.supported"));
}
ordersService.remove(id);
return "success";
}
// POST /data/order
public HttpHeaders create() {
log.debug("Create new order: {}", model);
ordersService.save(model);
return new DefaultHttpHeaders("success")
.setLocationId(model.getId());
}
// PUT /data/order/1
public String update() {
log.debug("Update order: {}", model);
ordersService.save(model);
return "success";
}
public void setId(String id) {
if (id != null) {
this.model = ordersService.get(id);
}
this.id = id;
}
public Object getModel() {
if(list != null) {
return list;
} else {
if(model == null) {
model = new Order();
}
return model;
}
}
}