On 29/10/2014 18:28, Rémy Maucherat wrote:
> 2014-10-29 19:22 GMT+01:00 Mark Thomas <[email protected]>:
> 
>> OK. Try again :)
>>
>> -1 veto.
>>
>> This breaks a requirement of the Servlet 3.1 spec that an ISE should be
>> thrown if get[Request|Response]() is called after complete() is called.
>>
>> This commit breaks the unit tests that check this (the calls do not
>> thrown any exception).
>>
>> The commit did not include any test cases. What problem are you trying
>> to solve? And where in the spec does it mandate the behaviour you are
>> trying to achieve?
>>
> 
> The problem I am trying to solve is that the listener onComplete should be
> able to call getResponse and write things. Basically complete is not done
> until onComplete is done.

OK. That makes sense.

My initial reading of the spec was that the ISE was required as soon as
complete() was called. After all, that is what the Javadoc says.

However...  the Javadoc for complete() says:
<quote>
If this method is called before the container-initiated dispatch that
called startAsync has returned to the container, then the call will not
take effect (and any invocations of AsyncListener.onComplete(AsyncEvent)
will be delayed) until after the container-initiated dispatch has
returned to the container.
</quote>

It is certainly possible to read the Javadoc for complete() as meaning
that the ISE should not be thrown until after onComplete() finishes
although that isn't how I have been reading it.

I withdraw my veto (again) and I don't see the need for those
STRICT_SERVLET_COMPLIANCE checks either.

I'll take a look at the failing unit tests and see what I can do to get
them to pass.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to