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;
> }
>
> I don't get how it works. ConditionManager.resetInstance will set the
> static thread local fieldInstance to null: doesn't this invalidate also
> instances of every other thread using the ConditionManager ? Shouldn't
> resetInstance simply remove the conditionManager from the fieldInstance
> ThreadLocal using a fieldInstance.set(null) ?
Forgot to say that if this is the case it should be pretty easy to
create a test case to prove it.
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).
Stefano
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]