package io.cattle.platform.lock.util;
import io.cattle.platform.lock.definition.BlockingLockDefinition;
import io.cattle.platform.lock.definition.LockDefinition;
import io.cattle.platform.lock.definition.MultiLockDefinition;
public class LockUtils {
public static String serializeLock(LockDefinition lockDef) {
if (lockDef == null)
return null;
if (lockDef instanceof MultiLockDefinition) {
StringBuilder buffer = new StringBuilder();
for (LockDefinition child : ((MultiLockDefinition) lockDef).getLockDefinitions()) {
if (buffer.length() > 0) {
buffer.append(",");
}
buffer.append(serializeLock(child));
}
return buffer.toString();
} else {
return serializeSingleLock(lockDef);
}
}
protected static String serializeSingleLock(LockDefinition lockDef) {
long blocking = 0;
String id = lockDef.getLockId();
if (lockDef instanceof BlockingLockDefinition) {
blocking = ((BlockingLockDefinition) lockDef).getWait();
}
return String.format("%s:%d", id, blocking);
}
}