morgand 01/08/20 13:26:51 Modified: latka/conf suite.dtd latka/src/java/org/apache/commons/latka/http Request.java RequestImpl.java latka/src/java/org/apache/commons/latka/util/xml BasicDelegateHandler.java latka/src/java/org/apache/commons/latka/xml RequestHandler.java Added: latka/src/java/org/apache/commons/latka/xml RequestHeaderHandler.java Log: added ability to set request headers Revision Changes Path 1.7 +9 -4 jakarta-commons/latka/conf/Attic/suite.dtd Index: suite.dtd =================================================================== RCS file: /home/cvs/jakarta-commons/latka/conf/Attic/suite.dtd,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- suite.dtd 2001/08/20 17:08:36 1.6 +++ suite.dtd 2001/08/20 20:26:51 1.7 @@ -10,8 +10,8 @@ %tests.ent; <!ELEMENT suite ( (session | request)+ )> -<!ATTLIST suite defaultHost CDATA #IMPLIED - defaultPort CDATA #IMPLIED +<!ATTLIST suite defaultHost CDATA #IMPLIED + defaultPort CDATA #IMPLIED label CDATA #IMPLIED> <!ELEMENT session (request+)> @@ -19,7 +19,7 @@ <!ATTLIST session sessionId CDATA #IMPLIED label CDATA #IMPLIED> -<!ELEMENT request (credentials?, param*, validate?)> +<!ELEMENT request (credentials?, requestHeader*, param*, validate?)> <!ATTLIST request path CDATA #REQUIRED method (post | get) "get" secure (true | false) "false" @@ -28,9 +28,14 @@ label CDATA #IMPLIED followRedirects (true | false) "true"> +<!-- fix me, credentials are currently ignored --> <!ELEMENT credentials EMPTY> -<!ATTLIST credentials user_name CDATA #REQUIRED +<!ATTLIST credentials userName CDATA #REQUIRED password CDATA #REQUIRED> + +<!ELEMENT requestHeader EMPTY> +<!ATTLIST requestHeader headerName CDATA #REQUIRED + headerValue CDATA #IMPLIED> <!ELEMENT param (paramName, paramValue)> 1.4 +11 -0 jakarta-commons/latka/src/java/org/apache/commons/latka/http/Request.java Index: Request.java =================================================================== RCS file: /home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/http/Request.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Request.java 2001/08/20 17:08:37 1.3 +++ Request.java 2001/08/20 20:26:51 1.4 @@ -60,6 +60,17 @@ public void setParameters(Map parameters); /** + * Sets a request header. + * + * @param headerName header name + * @param headerValue header value or null for a null header + */ + public void setHeader(String headerName, String headerValue); + + // getHeader method purposely ommitted. HttpClient does not retain + // header information after the request is submitted. + + /** * Retrieve the session associated with this request. * * @return a <code>Session</code> object 1.5 +4 -4 jakarta-commons/latka/src/java/org/apache/commons/latka/http/RequestImpl.java Index: RequestImpl.java =================================================================== RCS file: /home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/http/RequestImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- RequestImpl.java 2001/08/20 17:08:37 1.4 +++ RequestImpl.java 2001/08/20 20:26:51 1.5 @@ -172,13 +172,12 @@ } /** - * protected for now. Currently used only for setting the - * referer in session requests + * Set a header in the request * * @param headerName name of any HTTP request header * @param headerValue value of that header */ - protected void setHeader(String headerName, String headerValue) { + public void setHeader(String headerName, String headerValue) { _httpMethod.setHeader(headerName,headerValue); } @@ -192,7 +191,8 @@ } /** - * @return the amount of time it took to execute this request (in milliseconds) + * @return the amount of time it took to execute this request (in milliseconds), + * or -1 if the request has not yet been executed */ public int getRequestTiming() { return(int) _requestTiming; 1.5 +5 -3 jakarta-commons/latka/src/java/org/apache/commons/latka/util/xml/BasicDelegateHandler.java Index: BasicDelegateHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/util/xml/BasicDelegateHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- BasicDelegateHandler.java 2001/08/20 17:08:37 1.4 +++ BasicDelegateHandler.java 2001/08/20 20:26:51 1.5 @@ -59,7 +59,7 @@ // method call releases on the first element delegate(); - log.info("broadcasting first event to delegate"); + log.info("broadcasting first event to delegate: " + _handler); startElement(namespaceURI,localName,rawName,atts); } @@ -81,15 +81,17 @@ protected void release(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { - _handler.startElement(namespaceURI,localName,rawName,atts); + log.info("begin tag release"); release(); + _handler.startElement(namespaceURI,localName,rawName,atts); } protected void release(String namespaceURI, String localName, String rawName) throws SAXException { - _handler.endElement(namespaceURI,localName,rawName); + log.info("end tag release"); release(); + _handler.endElement(namespaceURI,localName,rawName); } } 1.5 +4 -0 jakarta-commons/latka/src/java/org/apache/commons/latka/xml/RequestHandler.java Index: RequestHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/xml/RequestHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- RequestHandler.java 2001/08/20 17:08:38 1.4 +++ RequestHandler.java 2001/08/20 20:26:51 1.5 @@ -92,6 +92,10 @@ _listener.requestSkipped(new RequestSkippedEvent(_request,null)); log.info("request skipped"); } + } else if (localName.equals("requestHeader")) { + log.info("adding request headers"); + RequestHeaderHandler headerHandler = new RequestHeaderHandler(_reader,_request); + headerHandler.delegate(uri,localName,qName,atts); } else if (localName.equals("param")) { log.info("adding parameters: params should follow"); ParameterHandler paramHandler = new ParameterHandler(_reader,_request); 1.1 jakarta-commons/latka/src/java/org/apache/commons/latka/xml/RequestHeaderHandler.java Index: RequestHeaderHandler.java =================================================================== package org.apache.commons.latka.xml; import org.apache.commons.latka.http.Request; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogSource; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; public class RequestHeaderHandler extends LatkaHandler { protected Request _request = null; protected static final Log log = LogSource.getInstance(RequestHeaderHandler.class); public RequestHeaderHandler(XMLReader reader, Request request) { super(reader); _request = request; } public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { log.info("request header received"); if (localName.equals("requestHeader")) { log.info("adding header"); _request.setHeader(atts.getValue("headerName"), atts.getValue("headerValue")); } else { // release as soon as all the headers are processed release(uri,localName,qName,atts); } } public void endElement(String namespaceURI, String localName, String rawName) throws SAXException { if (!localName.equals("requestHeader")) { release(namespaceURI,localName,rawName); } } }