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]

Reply via email to