-
Enhancement
-
Resolution: Done
-
Critical
-
None
-
None
-
Critical Issues, Warp Alpha3
We can do similar processing as we did with CommandService here:
https://github.com/arquillian/arquillian-extension-warp/blob/aa0745237f5df939af587c7f4682c441299713ca/impl/src/main/java/org/jboss/arquillian/warp/impl/server/execution/WarpFilter.java#L93
The CommandService communicates with the WarpFilter asynchronously and its requests are not processed directly, they delegates to the request-serving routine.
This way, Warp could:
0. request is issued against proxy
1. catch the request on the proxy
2. register the RequestPayload (with Inspection) in the registry via the WarpFilter (under generated request-specific UUID)
3. proxy passes request to WarpFilter with a request header which contains UUID
4. WarpFilter associates Inspection from the registry with given request
5. Warp proceeds with a request inspection
6. response is commited and sent back to the proxy (with given UUID as response header)
7. proxy catches the response and obtains ResponsePayload (with Inspection result) from the WarpFilter (using UUID)
8. proxy processes the ResponsePayload and passes the request to the client
9. the client processes response
This would avoid a need for piggy-backing on request/response, so it will also eliminate need for response-wrapping (NonWritingResponse).