Update of /cvsroot/httpunit/httpunit/src/com/meterware/servletunit
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22771/src/com/meterware/servletunit
Modified Files:
InvocationContextImpl.java ServletUnitHttpRequest.java
Log Message:
bug #872129: Cookie header set on a web request was ignored in servletunit
Index: InvocationContextImpl.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/servletunit/InvocationContextImpl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- InvocationContextImpl.java 26 Feb 2004 17:36:47 -0000 1.15
+++ InvocationContextImpl.java 15 Mar 2004 02:42:16 -0000 1.16
@@ -26,10 +26,8 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Stack;
-import java.util.StringTokenizer;
import javax.servlet.*;
@@ -185,9 +183,6 @@
URL requestURL = request.getURL();
final ServletUnitHttpRequest suhr = new ServletUnitHttpRequest( _application.getServletRequest( requestURL ), request,
runner.getContext(), clientHeaders, messageBody );
- Cookie[] cookies = getCookies( clientHeaders );
- for (int i = 0; i < cookies.length; i++) suhr.addCookie( cookies[i] );
-
if (_application.usesBasicAuthentication()) suhr.readBasicAuthentication();
else if (_application.usesFormAuthentication()) suhr.readFormAuthentication();
@@ -200,7 +195,6 @@
}
-
private URL computeEffectiveUrl( HttpServletRequest request, URL requestURL ) {
if (!_application.requiresAuthorization( requestURL ) || userIsAuthorized( request, requestURL ) ) {
return requestURL;
@@ -320,9 +314,6 @@
//------------------------------ private members ---------------------------------------
- final private static Cookie[] NO_COOKIES = new Cookie[0];
-
-
private ServletUnitClient _client;
private WebApplication _application;
private String _target;
@@ -330,23 +321,6 @@
private WebResponse _webResponse;
- private Cookie[] getCookies( Dictionary clientHeaders ) {
- String cookieHeader = (String) clientHeaders.get( "Cookie" );
- if (cookieHeader == null) return NO_COOKIES;
- ArrayList cookies = new ArrayList();
-
- StringTokenizer st = new StringTokenizer( cookieHeader, "=;" );
- while (st.hasMoreTokens()) {
- String name = st.nextToken();
- if (st.hasMoreTokens()) {
- String value = st.nextToken();
- cookies.add( new Cookie( name, value ) );
- }
- }
- return (Cookie[]) cookies.toArray( new Cookie[ cookies.size() ] );
- }
-
-
private ExecutionContext getContext() {
return (ExecutionContext) _contextStack.lastElement();
}
Index: ServletUnitHttpRequest.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/servletunit/ServletUnitHttpRequest.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- ServletUnitHttpRequest.java 14 Mar 2004 22:59:49 -0000 1.32
+++ ServletUnitHttpRequest.java 15 Mar 2004 02:42:16 -0000 1.33
@@ -63,6 +63,7 @@
_headers = new WebClient.HeaderDictionary();
_headers.addEntries( clientHeaders );
_headers.addEntries( request.getHeaders() );
+ setCookiesFromHeader( _headers );
_messageBody = messageBody;
_secure = request.getURL().getProtocol().equalsIgnoreCase( "https" );
@@ -695,7 +696,7 @@
//--------------------------------------------- package members ----------------------------------------------
- void addCookie( Cookie cookie ) {
+ private void addCookie( Cookie cookie ) {
_cookies.addElement( cookie );
if (cookie.getName().equalsIgnoreCase( ServletUnitHttpSession.SESSION_COOKIE_NAME )) {
_sessionID = cookie.getValue();
@@ -765,6 +766,20 @@
}
+ private void setCookiesFromHeader( Dictionary clientHeaders ) {
+ String cookieHeader = (String) clientHeaders.get( "Cookie" );
+ if (cookieHeader == null) return;
+
+ StringTokenizer st = new StringTokenizer( cookieHeader, "=;" );
+ while (st.hasMoreTokens()) {
+ String name = st.nextToken();
+ if (st.hasMoreTokens()) {
+ addCookie( new Cookie( name, st.nextToken() ) );
+ }
+ }
+ }
+
+
static class PrioritizedLocale implements Comparable {
private Locale _locale;
|