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