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);
}
}
}