Java Reference
In-Depth Information
its responsibilities by calling various classes such as Order , OrderRepository , Pend-
ingOrder , and PendingOrderRepository . Each of its methods also calls the Lock-
Manager to acquire locks, to verify that locks are still held, and to release locks.
They pass the name of the Order class, order ID , and the caller as arguments to
the LockManager .
Listing 13.4
ModifyOrderServiceImpl
public class ModifyOrderServiceLockManagerImpl implements
ModifyOrderService {
private PendingOrderRepository pendingOrderRepository;
private OrderRepository orderRepository;
private LockManager lockManager;
private RestaurantRepository restaurantRepository;
B Creates
ModifyOrderServiceLock
ManagerImpl
public ModifyOrderServiceLockManagerImpl(
OrderRepository orderRepository,
PendingOrderRepository pendingOrderRepository,
RestaurantRepository restaurantRepository,
LockManager lockManager) {
this.pendingOrderRepository = pendingOrderRepository;
this.orderRepository = orderRepository;
this.restaurantRepository = restaurantRepository;
this.lockManager = lockManager;
}
public ModifyOrderServiceResult getOrderToModify(String caller,
String orderId) {
if (lockManager
.acquireLock(Order.class.getName(),
orderId,
caller)) {
Order order = orderRepository.findOrder(orderId);
PendingOrder pendingOrder =
createPendingOrder(order);
return new ModifyOrderServiceResult(
ModifyOrderServiceResult.OK,
pendingOrder);
} else {
return new ModifyOrderServiceResult(
ModifyOrderServiceResult.ALREADY_LOCKED);
C Locks
Order
D Creates
PendingOrder
E Returns
ModifyOrderServiceResult
}
}
 
Search WWH ::




Custom Search