Send Synapse generated Hessian faults with HTTP status 200
----------------------------------------------------------
Key: SYNAPSE-521
URL: https://issues.apache.org/jira/browse/SYNAPSE-521
Project: Synapse
Issue Type: Improvement
Components: Transports
Affects Versions: 1.2
Reporter: Eric Hubert
Priority: Minor
Fix For: 1.3
If synapse generates faults using the fault mediator using the nhttp transport
they are currently always send using HTTP status 500. Hessian clients requires
all messages to arrive with HTTP status 200 (no differentiation between normal
messages and fault messages). HTTP 500 is reserved for real internal server
errors.
The attached patch introduces a message context property to advice the nhttp
transport to use a HTTP 200 status code. For the Hessian case the message
builder set this advice and the HttpCoreNIOSender picks up this advice in case
of fault messages. The logic to detect the proper HTTP status has been
extracted to a separate private method to improve readability.
I think this approach is even better than the approach discussed on the dev
list modifying the FaultMediator to set just another property with the value of
the HTTP status. The FaultMediator stays transport independent and the property
is directly evaluated from the transport.
Regarding the naming and place of the new Constants in NhttpConstants I would
appreciate a review. The same applies to the extracted status code logic, which
should not change the existing bahavior. I just tried to make it a bit more
readable, also changing some comments.
Feedback welcome!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]