package de.codecentric.wundershop.fakeshopservice;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import javax.jws.WebService;
import org.apache.log4j.Logger;
import de.codecentric.wundershop.shopservice.ShopStatus;
import de.codecentric.wundershop.shopservice.Shopservice;
import de.codecentric.wundershop.shopservice.to.GetUnprocessedPaymentsResponse;
@WebService(endpointInterface = "de.codecentric.wundershop.shopservice.Shopservice", targetNamespace = "http://shop.de/services")
public class FakeShopserviceImplementation implements Shopservice {
private static Logger logger = Logger.getLogger(FakeShopserviceImplementation.class);
private Set<String> paidAndUnprocessedOrders = new LinkedHashSet<>();
private Map<String, ShopStatus> orderStatus = new HashMap<>();
@Override
public synchronized GetUnprocessedPaymentsResponse getUnprocessedPayments() {
GetUnprocessedPaymentsResponse result = new GetUnprocessedPaymentsResponse();
result.setPayments(new ArrayList<>(paidAndUnprocessedOrders));
return result;
}
@Override
public synchronized String markPaymentProcessed(String id) {
paidAndUnprocessedOrders.remove(id);
return id;
}
@Override
public synchronized void setStatus(String id, ShopStatus status) {
logger.info("set status of order \"" + id + "\" to " + status);
orderStatus.put(id, status);
}
/**
* <em>Not</em> a WebMethod!
* @param id Order ID
*/
public synchronized void markOrderAsPaid(String id) {
paidAndUnprocessedOrders.add(id);
}
/**
* <em>Not</em> a WebMethod!
* @param id Order ID
* @return Status of order.
*/
public synchronized ShopStatus getStatus(String id) {
return orderStatus.get(id);
}
}