You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by se...@apache.org on 2001/05/17 01:23:43 UTC
cvs commit: jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/tomcat4 Ajp13Request.java
seguin 01/05/16 16:23:43
Modified: jk build.xml
jk/src/java/org/apache/ajp Ajp13.java Ajp13Packet.java
AjpRequest.java
jk/src/java/org/apache/ajp/tomcat4 Ajp13Request.java
Removed: jk/src/java/org/apache/ajp MessageBytes.java
Log:
make use of new util stuff (copied from tomcat 3.3)
Revision Changes Path
1.3 +19 -1 jakarta-tomcat-connectors/jk/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/build.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- build.xml 2001/05/15 15:20:43 1.2
+++ build.xml 2001/05/16 23:23:27 1.3
@@ -3,9 +3,11 @@
<!-- ===================== Initialize Property Values =================== -->
<property name="tomcat4.home" value="../../jakarta-tomcat-4.0/build"/>
<property name="servletapi.home" value="../../jakarta-servletapi-4/dist"/>
+ <property name="tomcat-util.home" value="../util/build"/>
<property name="catalina.jar" value="${tomcat4.home}/server/lib/catalina.jar"/>
<property name="servlet.jar" value="${servletapi.home}/lib/servlet.jar"/>
+ <property name="tomcat-util.jar" value="${tomcat-util.home}/lib/tomcat-util.jar"/>
<property name="jk.build" value="${basedir}/build"/>
@@ -19,7 +21,7 @@
<javac srcdir="src/java"
destdir="${jk.build}/classes"
- classpath="${catalina.jar}:${servlet.jar}"
+ classpath="${tomcat-util.jar}:${catalina.jar}:${servlet.jar}"
deprecation="on"
debug="on"
optimize="off"
@@ -39,6 +41,22 @@
basedir="${jk.build}/classes"
/>
</target>
+
+ <!-- ================ BUILD: Create Jk Javadocs =================== -->
+ <target name="javadoc">
+ <delete dir="${jk.build}/javadoc"/>
+ <mkdir dir="${jk.build}/javadoc"/>
+ <javadoc packagenames="org.apache.tomcat.util.*"
+ sourcepath="src/java"
+ destdir="${jk.build}/javadoc"
+ author="true"
+ version="true"
+ windowtitle="Jk Connector Documentation"
+ doctitle="Jk Connector"
+ bottom="Copyright © 2001 Apache Software Foundation. All Rights Reserved."
+ />
+ </target>
+
<target name="clean">
<delete dir="${jk.build}"/>
1.2 +41 -49 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13.java
Index: Ajp13.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Ajp13.java 2001/05/15 15:22:22 1.1
+++ Ajp13.java 2001/05/16 23:23:30 1.2
@@ -66,6 +66,9 @@
import java.net.Socket;
import java.util.Enumeration;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.http.MimeHeaders;
/**
* Represents a single, persistent connection between the web server and
@@ -303,25 +306,26 @@
// XXX Awful return values
boolean isSSL = false;
- int contentLength = -1;
// Translate the HTTP method code to a String.
byte methodCode = msg.getByte();
- req.method.setString(methodTransArray[(int)methodCode - 1]);
+ req.method.setString( methodTransArray[(int)methodCode - 1] );
- msg.getMessageBytes(req.protocol);
+ msg.getMessageBytes(req.protocol);
msg.getMessageBytes(req.requestURI);
+
msg.getMessageBytes(req.remoteAddr);
msg.getMessageBytes(req.remoteHost);
msg.getMessageBytes(req.serverName);
req.serverPort = msg.getInt();
+
isSSL = msg.getBool();
// Decode headers
+ MimeHeaders headers = req.headers;
int hCount = msg.getInt();
for(int i = 0 ; i < hCount ; i++) {
- MessageBytes hName = new MessageBytes();
- MessageBytes hValue = new MessageBytes();
+ String hName = null;
// Header names are encoded as either an integer code starting
// with 0xA0, or as a normal string (in which case the first
@@ -329,38 +333,28 @@
int isc = msg.peekInt();
int hId = isc & 0xFF;
+ MessageBytes vMB=null;
isc &= 0xFF00;
if(0xA000 == isc) {
msg.getInt(); // To advance the read position
- hName.setString(headerTransArray[hId - 1]);
+ hName = headerTransArray[hId - 1];
+ vMB= headers.addValue( hName );
} else {
- msg.getMessageBytes(hName);
- hId = -1;
+ // XXX Not very elegant
+ vMB=msg.addHeader( headers );
+ if( vMB==null) return 500; // wrong packet
}
+
+ msg.getMessageBytes(vMB);
- switch (hId) {
- case SC_REQ_CONTENT_TYPE:
- msg.getMessageBytes(req.contentType);
- break;
-
- case SC_REQ_CONTENT_LENGTH:
- try {
- contentLength = Integer.parseInt(msg.getString());
- } catch (Exception e) {
- logger.log("parse content-length", e);
- }
- break;
-
- case SC_REQ_COOKIE:
- case SC_REQ_COOKIE2:
- msg.getMessageBytes(hValue);
- req.addCookies(hValue);
- break;
-
- default:
- msg.getMessageBytes(hValue);
- req.addHeader(hName.getString(), hValue);
- break;
+ // set content length, if this is it...
+ if (hId == SC_REQ_CONTENT_LENGTH) {
+ req.contentLength = (vMB == null) ? -1 : vMB.getInt();
+ } else if (hId == SC_REQ_CONTENT_TYPE) {
+ ByteChunk bchunk = vMB.getByteChunk();
+ req.contentType.setBytes(bchunk.getBytes(),
+ bchunk.getOffset(),
+ bchunk.getLength());
}
}
@@ -369,22 +363,22 @@
attributeCode != SC_A_ARE_DONE ;
attributeCode = msg.getByte()) {
switch(attributeCode) {
- case SC_A_CONTEXT :
+ case SC_A_CONTEXT :
break;
- case SC_A_SERVLET_PATH :
+ case SC_A_SERVLET_PATH :
break;
-
- case SC_A_REMOTE_USER :
+
+ case SC_A_REMOTE_USER :
msg.getMessageBytes(req.remoteUser);
break;
-
- case SC_A_AUTH_TYPE :
+
+ case SC_A_AUTH_TYPE :
msg.getMessageBytes(req.authType);
break;
case SC_A_QUERY_STRING :
- msg.getMessageBytes(req.queryString);
+ msg.getMessageBytes(req.queryString);
break;
case SC_A_JVM_ROUTE :
@@ -406,11 +400,12 @@
case SC_A_SSL_SESSION :
isSSL = true;
req.setAttribute("javax.servlet.request.ssl_session",
- msg.getString());
+ msg.getString());
break;
case SC_A_REQ_ATTRIBUTE :
- req.setAttribute(msg.getString(), msg.getString());
+ req.setAttribute(msg.getString(),
+ msg.getString());
break;
default:
@@ -418,21 +413,18 @@
}
}
- req.secure = isSSL;
if(isSSL) {
req.scheme = req.SCHEME_HTTPS;
- } else {
- req.scheme = req.SCHEME_HTTP;
+ req.secure = true;
}
+ // set cookies on request now that we have all headers
+ req.cookies.setHeaders(req.headers);
+
// Check to see if there should be a body packet coming along
// immediately after
- if(contentLength > 0) {
- if (debug > 0) {
- logger.log("contentLength = " + contentLength +
- ", reading data ...");
- }
- req.contentLength = contentLength;
+ if(req.contentLength > 0) {
+
/* Read present data */
int err = receive(inBuf);
if(err < 0) {
1.3 +14 -11 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13Packet.java
Index: Ajp13Packet.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/Ajp13Packet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Ajp13Packet.java 2001/05/15 15:22:23 1.2
+++ Ajp13Packet.java 2001/05/16 23:23:31 1.3
@@ -60,6 +60,9 @@
import java.io.UnsupportedEncodingException;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.MimeHeaders;
+
/**
* A single packet for communication between the web server and the
* container. Designed to be reused many times with no creation of
@@ -302,18 +305,18 @@
pos += length;
pos++; // Skip the terminating \0
}
-
-// public MessageBytes addHeader( MimeHeaders headers ) {
-// int length = getInt();
-// if( (length == 0xFFFF) || (length == -1) ) {
-// return null;
-// }
-// MessageBytes vMB=headers.addValue( buff, pos, length );
-// pos += length;
-// pos++; // Skip the terminating \0
+
+ public MessageBytes addHeader(MimeHeaders headers) {
+ int length = getInt();
+ if( (length == 0xFFFF) || (length == -1) ) {
+ return null;
+ }
+ MessageBytes vMB=headers.addValue( buff, pos, length );
+ pos += length;
+ pos++; // Skip the terminating \0
-// return vMB;
-// }
+ return vMB;
+ }
/**
* Read a String from the packet, and advance the read position
1.3 +34 -42 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/AjpRequest.java
Index: AjpRequest.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/AjpRequest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AjpRequest.java 2001/05/16 17:08:50 1.2
+++ AjpRequest.java 2001/05/16 23:23:32 1.3
@@ -65,6 +65,10 @@
import java.util.LinkedList;
import java.util.Iterator;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.http.Cookies;
+
/**
* Encapsulates an ajp request.
*
@@ -97,9 +101,9 @@
boolean secure = false;
int contentLength = 0;
MessageBytes contentType = new MessageBytes();
- HashMap headers = new HashMap();
+ MimeHeaders headers = new MimeHeaders();
+ Cookies cookies = new Cookies();
HashMap attributes = new HashMap();
- LinkedList cookies = new LinkedList();
/**
* Recycles this object and readies it further use.
@@ -120,9 +124,9 @@
secure = false;
contentLength = 0;
contentType.recycle();
- headers.clear();
+ headers.recycle();
+ cookies.recycle();
attributes.clear();
- cookies.clear();
}
/**
@@ -244,49 +248,28 @@
public MessageBytes getContentType() {
return contentType;
}
-
- public void addHeader(String name, MessageBytes value) {
- if (name == null || value == null) {
- return;
- }
-
- String lname = name.toLowerCase();
-
- LinkedList values = (LinkedList)headers.get(lname);
- if (values == null) {
- values = new LinkedList();
- headers.put(lname, values);
- }
- values.add(value);
- }
-
- public Iterator getHeaders(String name) {
- if (name == null) {
- return emptyItr;
- }
-
- String lname = name.toLowerCase();
-
- LinkedList values = (LinkedList)headers.get(lname);
- if (values == null) {
- return emptyItr;
- }
-
- return values.iterator();
- }
-
- public Iterator getHeaderNames() {
- return headers.keySet().iterator();
- }
- public void addCookies(MessageBytes cookies) {
- this.cookies.add(cookies);
+ /**
+ * Get this request's headers
+ * @return request headers
+ */
+ public MimeHeaders getHeaders() {
+ return headers;
}
- public Iterator getCookies() {
- return cookies.iterator();
+ /**
+ * Get cookies.
+ * @return request cookies.
+ */
+ public Cookies getCookies() {
+ return cookies;
}
+ /**
+ * Set an attribute on the request
+ * @param name attribute name
+ * @param value attribute value
+ */
public void setAttribute(String name, Object value) {
if (name == null || value == null) {
return;
@@ -294,6 +277,11 @@
attributes.put(name, value);
}
+ /**
+ * Get an attribute on the request
+ * @param name attribute name
+ * @return attribute value
+ */
public Object getAttribute(String name) {
if (name == null) {
return null;
@@ -302,6 +290,10 @@
return attributes.get(name);
}
+ /**
+ * Get iterator over attribute names
+ * @return iterator over attribute names
+ */
public Iterator getAttributeNames() {
return attributes.keySet().iterator();
}
1.3 +28 -29 jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/tomcat4/Ajp13Request.java
Index: Ajp13Request.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/java/org/apache/ajp/tomcat4/Ajp13Request.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Ajp13Request.java 2001/05/15 15:22:50 1.2
+++ Ajp13Request.java 2001/05/16 23:23:40 1.3
@@ -73,7 +73,10 @@
import org.apache.catalina.util.RequestUtil;
import org.apache.ajp.AjpRequest;
-import org.apache.ajp.MessageBytes;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.Cookies;
+import org.apache.tomcat.util.http.ServerCookie;
+import org.apache.tomcat.util.http.MimeHeaders;
public class Ajp13Request extends HttpRequestBase {
@@ -101,51 +104,45 @@
// we're more efficient (that's the whole point of
// all of the MessageBytes in AjpRequest)
- setMethod(ajp.getMethod().getString());
- setProtocol(ajp.getProtocol().getString());
- setRequestURI(ajp.getRequestURI().getString());
- setRemoteAddr(ajp.getRemoteAddr().getString());
- setRemoteHost(ajp.getRemoteHost().getString());
- setServerName(ajp.getServerName().getString());
+ setMethod(ajp.getMethod().toString());
+ setProtocol(ajp.getProtocol().toString());
+ setRequestURI(ajp.getRequestURI().toString());
+ setRemoteAddr(ajp.getRemoteAddr().toString());
+ setRemoteHost(ajp.getRemoteHost().toString());
+ setServerName(ajp.getServerName().toString());
setServerPort(ajp.getServerPort());
- String remoteUser = ajp.getRemoteUser().getString();
+ String remoteUser = ajp.getRemoteUser().toString();
if (remoteUser != null) {
setUserPrincipal(new Ajp13Principal(remoteUser));
}
- setAuthType(ajp.getAuthType().getString());
- setQueryString(ajp.getQueryString().getString());
+ setAuthType(ajp.getAuthType().toString());
+ setQueryString(ajp.getQueryString().toString());
setScheme(ajp.getScheme());
setSecure(ajp.getSecure());
setContentLength(ajp.getContentLength());
- String contentType = ajp.getContentType().getString();
+ String contentType = ajp.getContentType().toString();
if (contentType != null) {
setContentType(contentType);
}
- Iterator itr = ajp.getHeaderNames();
- while (itr.hasNext()) {
- String name = (String)itr.next();
- Iterator itr2 = ajp.getHeaders(name);
- while (itr2.hasNext()) {
- MessageBytes value = (MessageBytes)itr2.next();
- addHeader(name, value.getString());
- }
+ MimeHeaders mheaders = ajp.getHeaders();
+ int nheaders = mheaders.size();
+ for (int i = 0; i < nheaders; ++i) {
+ MessageBytes name = mheaders.getName(i);
+ MessageBytes value = mheaders.getValue(i);
+ addHeader(name.toString(), value.toString());
}
- itr = ajp.getAttributeNames();
+ Iterator itr = ajp.getAttributeNames();
while (itr.hasNext()) {
String name = (String)itr.next();
setAttribute(name, ajp.getAttribute(name));
}
- itr = ajp.getCookies();
- while (itr.hasNext()) {
- MessageBytes cookies = (MessageBytes)itr.next();
- addCookies(cookies.getString());
- }
+ addCookies(ajp.getCookies());
}
// public Object getAttribute(String name) {
@@ -182,10 +179,12 @@
super.setRequestURI(uri);
}
- private void addCookies(String cookiesHeader) {
- Cookie cookies[] = RequestUtil.parseCookieHeader(cookiesHeader);
- for (int j = 0; j < cookies.length; j++) {
- Cookie cookie = cookies[j];
+ private void addCookies(Cookies cookies) {
+ int ncookies = cookies.getCookieCount();
+ for (int j = 0; j < ncookies; j++) {
+ ServerCookie scookie = cookies.getCookie(j);
+ Cookie cookie = new Cookie(scookie.getName().toString(),
+ scookie.getValue().toString());
if (cookie.getName().equals(Globals.SESSION_COOKIE_NAME)) {
// Override anything requested in the URL
if (!isRequestedSessionIdFromCookie()) {