ItEr57S15RecalculosConexionEscenarios: Add class to execute different code depending if it's reentring or not

This commit is contained in:
Óscar González Fernández 2010-05-08 18:14:56 +02:00
parent 267d9afda0
commit 3bfab5d143

View file

@ -654,4 +654,28 @@ public class GanttDiagramGraph implements ICriticalPathCalculable<Task> {
return result;
}
}
interface IReentranceCases {
public void ifNewEntrance();
}
class ReentranceGuard {
private final ThreadLocal<Boolean> inside = new ThreadLocal<Boolean>() {
protected Boolean initialValue() {
return false;
};
};
public void entranceRequested(IReentranceCases reentranceCases) {
if (inside.get()) {
return;
}
inside.set(true);
try {
reentranceCases.ifNewEntrance();
} finally {
inside.set(false);
}
}
}