boolean newLock = entryMsg.getKey().isLocked();
Member newOwner = entryMsg.getKey().getOwner();
long newLockExpiration = newLock ? entryMsg.getKey()
.getLockExpiration() : 0l;
if (isCoordinator() && !entryMsg.isMapUpdate()) {
EntryKey originalKey = getKey(entryMsg.getKey().getKey());
if (originalKey != null) {
if (originalKey.isLocked()) {
if (!originalKey.getOwner().equals(
entryMsg.getKey().getOwner())) {
Serializable reply = new GroupUpdateException(
"Owned by " + originalKey.getOwner());
sendReply(reply, replyTo, correlationId);
} else {
originalKey.setLocked(newLock);
originalKey.setOwner(newOwner);
originalKey.setLockExpiration(newLockExpiration);
broadcastMapUpdate(entryMsg, correlationId);
}
} else {
originalKey.setLocked(newLock);
originalKey.setOwner(newOwner);
originalKey.setLockExpiration(newLockExpiration);
broadcastMapUpdate(entryMsg, correlationId);
}
}
} else {
EntryKey originalKey = getKey(entryMsg.getKey().getKey());
if (originalKey != null) {
originalKey.setLocked(newLock);
originalKey.setOwner(newOwner);
originalKey.setLockExpiration(newLockExpiration);
}
}
}
}