in taverna-server-webapp/src/main/java/org/apache/taverna/server/master/TavernaServerSupport.java [609:663]
public void setPermission(TavernaSecurityContext context, String userName,
Permission permission) {
Set<String> permSet;
boolean doRead = false, doWrite = false, doKill = false;
switch (permission) {
case Destroy:
doKill = true;
case Update:
doWrite = true;
case Read:
doRead = true;
default:
break;
}
permSet = context.getPermittedReaders();
if (doRead) {
if (!permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.add(userName);
context.setPermittedReaders(permSet);
}
} else if (permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.remove(userName);
context.setPermittedReaders(permSet);
}
permSet = context.getPermittedUpdaters();
if (doWrite) {
if (!permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.add(userName);
context.setPermittedUpdaters(permSet);
}
} else if (permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.remove(userName);
context.setPermittedUpdaters(permSet);
}
permSet = context.getPermittedDestroyers();
if (doKill) {
if (!permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.add(userName);
context.setPermittedDestroyers(permSet);
}
} else if (permSet.contains(userName)) {
permSet = new HashSet<>(permSet);
permSet.remove(userName);
context.setPermittedDestroyers(permSet);
}
}