Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java,v diff -u -r1.8 -r1.9 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java 17 Sep 2006 06:14:17 -0000 1.8 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java 28 May 2008 08:17:52 -0000 1.9 @@ -39,6 +39,8 @@ */ public class SynchGateActivityStrategy extends GateActivityStrategy { + private static final int MINIMUM_NUMBER_OF_LEARNERS = 2; + public SynchGateActivityStrategy(GateActivity gateActivity) { super(gateActivity); } @@ -49,7 +51,9 @@ /** *
Check up the waiting learners list and lesson learner list. If all * lesson learner appears in the waiting list, we assume the open condition - * for the sync gate is met.
+ * for the sync gate is met. A minimum no. of learners must also be waiting at + * the gate to prevent one from racing through it before others have even started + * (LDEV-1773). * *Given that the list of lessonLearners is everyone who has started * the lesson, we can assume that # waiting is less than or equal to # in lesson. @@ -61,14 +65,14 @@ */ protected boolean isOpenConditionMet(List lessonLearners) { + int numWaiting = gateActivity.getWaitingLearners().size(); if ( gateActivity != null ) { - int numWaiting = gateActivity.getWaitingLearners().size(); int numLesson = lessonLearners!=null?lessonLearners.size():0; if ( numWaiting < numLesson ) { return false; } } - return true; + return (numWaiting >= MINIMUM_NUMBER_OF_LEARNERS ? true : false); } /**