package io.cattle.platform.lock.definition;
public class Namespace {
String name;
public Namespace(String name) {
this.name = name;
}
public LockDefinition getLockDefinition(LockDefinition lockDef) {
if (lockDef == null) {
return null;
}
if (lockDef instanceof MultiLockDefinition) {
return getMultiLockDefinition((MultiLockDefinition) lockDef);
} else if (lockDef instanceof BlockingLockDefinition) {
return new DefaultBlockingLockDefinition(lockId(lockDef.getLockId()), ((BlockingLockDefinition) lockDef).getWait());
} else {
return new DefaultLockDefinition(lockId(lockDef.getLockId()));
}
}
protected LockDefinition getMultiLockDefinition(MultiLockDefinition lockDef) {
LockDefinition[] defs = lockDef.getLockDefinitions();
LockDefinition[] resultDefs = new LockDefinition[defs.length];
for (int i = 0; i < defs.length; i++) {
resultDefs[i] = getLockDefinition(getLockDefinition(defs[i]));
}
return new DefaultMultiLockDefinition(resultDefs);
}
protected String lockId(String id) {
return name + "/" + id;
}
}