From 3bfab5d1431bbc31d23c4eab04448066f4ed77d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sat, 8 May 2010 18:14:56 +0200 Subject: [PATCH] ItEr57S15RecalculosConexionEscenarios: Add class to execute different code depending if it's reentring or not --- .../zkoss/ganttz/data/GanttDiagramGraph.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 6aae85a39..fbfbe10ee 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -654,4 +654,28 @@ public class GanttDiagramGraph implements ICriticalPathCalculable { return result; } +} + +interface IReentranceCases { + public void ifNewEntrance(); +} + +class ReentranceGuard { + private final ThreadLocal inside = new ThreadLocal() { + protected Boolean initialValue() { + return false; + }; + }; + + public void entranceRequested(IReentranceCases reentranceCases) { + if (inside.get()) { + return; + } + inside.set(true); + try { + reentranceCases.ifNewEntrance(); + } finally { + inside.set(false); + } + } } \ No newline at end of file