HttpTestCase in das Modul test verschoben und schweren Fehler korrigiert
authorKai Moritz <kai@coolibri.de>
Thu, 8 Mar 2012 21:24:03 +0000 (22:24 +0100)
committerKai Moritz <kai@coolibri.de>
Thu, 2 Aug 2012 07:03:25 +0000 (09:03 +0200)
Schweren Denkfehler in der Klasse HttpTestCase und dem zugehörigen Response-
Wrapper behoben:
Der Servlet-Container ruft flush erst auf, wenn die Filter-Kette fertig
abgearbeitet wurde. Da hat er aber wieder nur den ursprünglichen Response
zur Verfügung und nicht mehr den Response-Wrapper, in den der Response hier
zu Test-Zwecken verpackt wurde. Dementsprechend kann der Servlet-Container
die Methode flush während der Finalisierung des Requests nur auf dem
ursprünglichen Response-Objekt aufrufen -- nicht aber auf dem Response-
Wrapper!
Wenn der Response-Wrapper also (wie hier der Fall) ein spezielles flush
benötigt, kann man sich dafür nicht auf den Servlet-Container verlassen!!
Der Flush muss explizit auf angestoßen werden, wenn der Response-Wrapper
keine Daten verschlucken soll.

Dabei:
 * Den bisher als innere Klasse implementierten Response-Wrapper in
   LoggingHttpServletResponseWrapper umbenannt und in eine eigenständige
   Klasse umgewandelt.
 * LoggingHttpServletResponseFilter implementiert, mit dem sich der
   Response-Wrapper auch in enier normalen Java-Webanwendung verwenden
   lässt, um zu Protokollieren, wie ein Response-Objekt benutzt wird.


No differences found