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]