On 8/9/07, Stefano Bagnara <[EMAIL PROTECTED]> wrote: > Stefano Bagnara ha scritto: > > /** > > * Method execute executes a Block within the context of a new > > ConditionManager. > > * @param mail > > * @param block > > * @return Object > > * @throws SieveException > > */ > > protected Object execute(MailAdapter mail, Block block) throws > > SieveException { > > // Switch to a new ConditionManager > > ConditionManager oldManager = ConditionManager.getInstance(); > > ConditionManager.resetInstance(); > > > > // Execute the Block > > Object result = block.execute(mail); > > > > // Restore the old ConditionManager > > ConditionManager.setInstance(oldManager); > > > > return result; > > }
<snip> > Furthermore, I see that this block is allowed to send SieveException. > Maybe the setInstance(oldManager) should be called in a finally to make > sure we place back the status to the right one (well, maybe after an > exception the ConditionManager is ignored, but I think it is anyway > better to cleanup). http://svn.apache.org/repos/asf/james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/AbstractConditionalCommand.java already has protected Object execute(MailAdapter mail, Block block) throws SieveException { // Switch to a new ConditionManager ConditionManager oldManager = ConditionManager.getInstance(); ConditionManager.resetInstance(); try { // Execute the Block Object result = block.execute(mail); return result; } finally { // Always restore the old ConditionManager ConditionManager.setInstance(oldManager); } } hope that this should cover it - robert --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]