costin 00/11/02 13:39:13
Modified: src/share/org/apache/tomcat/core Request.java
Log:
- Added request "state"
- Replaced String with MessageBytes for request components ( uri, method,
protocol, etc). ( needed for no-ascii charset support, performance )
- replace getWrapper with getHandler ( Wrapper is part of facade )
( other classes are changed to accomodate the String->MessageByte
conversion )
Revision Changes Path
1.70 +87 -39 jakarta-tomcat/src/share/org/apache/tomcat/core/Request.java
Index: Request.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Request.java,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- Request.java 2000/10/08 21:28:56 1.69
+++ Request.java 2000/11/02 21:39:12 1.70
@@ -98,6 +98,16 @@
*/
public static final String ATTRIB_REAL_REQUEST="org.apache.tomcat.request";
+ public static final int STATE_UNUSED=0;
+
+ public static final int STATE_INVALID=-1;
+
+ public static final int STATE_NEW=1;
+
+ public static final int STATE_CONTEXT_MAPPED=2;
+
+ public static final int STATE_MAPPED=3;
+
// -------------------- properties --------------------
protected int serverPort;
@@ -105,6 +115,8 @@
protected String remoteHost;
protected String localHost;
+ protected int state;
+
// Request components represented as MB.
// MB are also used for headers - it allows lazy
// byte->char conversion so we can add the encoding
@@ -129,6 +141,8 @@
// Processed information ( redundant ! )
protected Hashtable parameters = new Hashtable();
+ protected boolean didReadFormData;
+ protected boolean didParameters;
protected int contentLength = -1;
protected String contentType = null;
@@ -150,10 +164,6 @@
protected Context context;
protected Object requestFacade;
- protected boolean didReadFormData;
- protected boolean didParameters;
- // end "Request" variables
-
// Session
protected String reqSessionId;
protected String sessionIdSource;
@@ -185,6 +195,14 @@
recycle(); // XXX need better placement-super()
}
+ public final int getState() {
+ return state;
+ }
+
+ final void setState( int state ) {
+ this.state=state;
+ }
+
/** Called by mapper interceptors after the context
is found or directly by server adapters when
this is known in advance
@@ -231,42 +249,42 @@
// -------------------- Request data --------------------
- public MessageBytes getSchemeMB() {
- return schemeMB;
- }
+// public MessageBytes getSchemeMB() {
+// return schemeMB;
+// }
- public String getScheme() {
- return schemeMB.toString();
- }
+// public String getScheme() {
+// return schemeMB.toString();
+// }
- public void setScheme( String scheme ) {
- schemeMB.setString(scheme);
- }
+// public void setScheme( String scheme ) {
+// schemeMB.setString(scheme);
+// }
- public String getMethod() {
- return methodMB.toString();
- }
+// public String getMethod() {
+// return methodMB.toString();
+// }
- public void setMethod( String method ) {
- methodMB.setString(method);
- }
+// public void setMethod( String method ) {
+// methodMB.setString(method);
+// }
- public String getRequestURI() {
- return uriMB.toString();
+ public MessageBytes scheme() {
+ return schemeMB;
}
-
- public void setRequestURI( String r ) {
- uriMB.setString(r);
+
+ public MessageBytes method() {
+ return methodMB;
}
-
- public String getQueryString() {
- return queryMB.toString();
+
+ public MessageBytes requestURI() {
+ return uriMB;
}
- public void setQueryString(String queryString) {
- queryMB.setString(queryString);
+ public MessageBytes queryString() {
+ return queryMB;
}
-
+
public String getProtocol() {
return protoMB.toString();
}
@@ -424,7 +442,7 @@
// Call all authentication callbacks. If any of them is able to
// identify the user it will set the principal in req.
int status=0;
- BaseInterceptor reqI[]= context.getContainer().
+ BaseInterceptor reqI[]= getContainer().
getInterceptors(Container.H_authenticate);
for( int i=0; i< reqI.length; i++ ) {
status=reqI[i].authenticate( this, response );
@@ -477,7 +495,7 @@
checkRoles[0]=role;
int status=0;
- BaseInterceptor reqI[]= context.getContainer().
+ BaseInterceptor reqI[]= getContainer().
getInterceptors(Container.H_authorize);
// Call all authorization callbacks.
@@ -564,8 +582,8 @@
if( ! create ) return null;
- BaseInterceptor reqI[]= contextM.
- getInterceptors(this, Container.H_newSessionRequest);
+ BaseInterceptor reqI[]= getContainer().
+ getInterceptors(Container.H_newSessionRequest);
for( int i=0; i< reqI.length; i++ ) {
reqI[i].newSessionRequest( this, response );
@@ -609,15 +627,44 @@
}
// -------------------- LookupResult
- public Handler getWrapper() {
+
+ /** As result of mapping the request a "handler" will be associated
+ and called to generate the result.
+
+ The handler is null if no mapping was found ( so far ).
+
+ The handler can be set if the request is found to match any
+ of the rules defined in web.xml ( and as a result, a container will
+ be set ), or if a special interceptor will define a tomcat-specific
+ handler ( like static, jsp, or invoker ).
+ */
+ public Handler getHandler() {
return handler;
}
- public void setWrapper(Handler handler) {
+ public void setHandler(Handler handler) {
this.handler=handler;
}
+ /** Return the container ( URL pattern ) where this request has been
+ mapped.
+
+ If the request is invalid ( context can't be determined )
+ the ContextManager.container will be returned.
+
+ If the request is not mapped ( requestMap not called yet )
+ or the request corresponds to the "default" map ( * ) or a
+ special implicit map ( *.jsp, invoker ),
+ then the context's default container is returned
+ */
public Container getContainer() {
+ if( container==null && context==null) {
+ container=contextM.getContainer();
+ // only for invalid requests !
+ }
+ if( container==null ) {
+ container=context.getContainer();
+ }
return container;
}
@@ -723,7 +770,7 @@
// -------------------- Utils - facade for RequestUtil
private void handleParameters() {
if(!didParameters) {
- String qString=getQueryString();
+ String qString=queryString().toString();
if(qString!=null) {
didParameters=true;
RequestUtil.processFormData( qString, parameters );
@@ -733,7 +780,8 @@
didReadFormData = true;
Hashtable postParameters=RequestUtil.readFormData( this );
if(postParameters!=null)
- parameters = RequestUtil.mergeParameters(parameters, postParameters);
+ parameters = RequestUtil.mergeParameters(parameters,
+ postParameters);
}
}
@@ -802,7 +850,7 @@
if( getServletPath() != null )
sb.append( " + " + getServletPath() + " + " + getPathInfo());
} else {
- sb.append(getRequestURI());
+ sb.append(requestURI().toString());
}
sb.append(")");
return sb.toString();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]