private synchronized void evaluateConditions ( ) { // Copy the current Conditions ... Set < IWatchedCondition > copiedConditions = this . copyConditions ( ) ; // check the conditions .... for ( Iterator < IWatchedCondition > iterator = copiedConditions . iterator ( ) ; iterator . hasNext ( ) ; ) { IWatchedCondition cond = iterator . next ( ) ; synchronized ( cond ) { // the conditions are not accessed in a synchronized way. This has to be make sure by the Implementations if ( cond . isActive ( ) && ! cond . checkCondition ( ) ) { cond . conditionViolated ( ) ; } } } return ; }
evaluate the conditions