billbarker 2004/11/20 18:45:04
Modified: coyote/src/java/org/apache/coyote/tomcat3
CoyoteInterceptor2.java Tomcat3Adapter.java
Tomcat3Request.java
Log:
Adding support for 'redirectPort'.
This works the same as it does on TC 4+. You configure it on the Connector,
and your security-constraints can just use the redirect.
Revision Changes Path
1.21 +28 -4
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteInterceptor2.java
Index: CoyoteInterceptor2.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteInterceptor2.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- CoyoteInterceptor2.java 5 Oct 2004 04:45:55 -0000 1.20
+++ CoyoteInterceptor2.java 21 Nov 2004 02:45:03 -0000 1.21
@@ -77,10 +77,13 @@
*/
public class CoyoteInterceptor2 extends BaseInterceptor
{
+ public static final String REDIRECT_PORT_ATTR =
+ "org.apache.tomcat.request.redirectPort";
private String
processorClassName="org.apache.coyote.http11.Http11Protocol";
Tomcat3Adapter adapter;
ProtocolHandler proto;
int protocolNote;
+ int redirectPort = -1;
public CoyoteInterceptor2() {
super();
@@ -109,6 +112,21 @@
setAttribute( prop, value );
}
+ /**
+ * Set the redirect port.
+ */
+ public void setRedirectPort(int rp) {
+ redirectPort = rp;
+ setAttribute("redirectPort", new Integer(rp));
+ }
+
+ /**
+ * Get the redirect port.
+ */
+ public int getRedirectPort() {
+ return redirectPort;
+ }
+
/** Called when the ContextManger is started
*/
public void engineInit(ContextManager cm) throws TomcatException {
@@ -116,7 +134,7 @@
protocolNote = cm.getNoteId(ContextManager.MODULE_NOTE,
"coyote.protocol");
- adapter=new Tomcat3Adapter(cm);
+ adapter=new Tomcat3Adapter(cm, this);
try {
Class c=Class.forName(processorClassName);
proto=(ProtocolHandler)c.newInstance();
@@ -204,8 +222,12 @@
return null;
Tomcat3Request httpReq=(Tomcat3Request)request;
-
- if(key!=null && httpReq!=null ){
+
+ if( httpReq == null || httpReq.getConnector() != this ) {
+ return null;
+ }
+
+ if(key!=null ){
org.apache.coyote.Request cReq = httpReq.getCoyoteRequest();
Object info = cReq.getAttribute(key);
if( info != null)
@@ -222,7 +244,9 @@
}
return cReq.getAttribute(key);
- }
+ } else if(key.equals(REDIRECT_PORT_ATTR)) {
+ return new Integer(redirectPort);
+ }
return cReq.getAttribute( key );
}
1.9 +5 -1
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/Tomcat3Adapter.java
Index: Tomcat3Adapter.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/Tomcat3Adapter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Tomcat3Adapter.java 29 Aug 2004 17:14:41 -0000 1.8
+++ Tomcat3Adapter.java 21 Nov 2004 02:45:03 -0000 1.9
@@ -18,6 +18,7 @@
import org.apache.coyote.Adapter;
import org.apache.tomcat.core.ContextManager;
+import org.apache.tomcat.core.BaseInterceptor;
/** Adapter between Coyote and Tomcat.
*
@@ -29,9 +30,11 @@
*/
public class Tomcat3Adapter implements Adapter {
ContextManager cm;
+ BaseInterceptor connector;
- Tomcat3Adapter(ContextManager ctxman) {
+ Tomcat3Adapter(ContextManager ctxman, CoyoteInterceptor2 conn) {
cm = ctxman;
+ connector = conn;
}
static int containerRequestNOTE=1; // XXX Implement a NoteManager,
namespaces.
@@ -53,6 +56,7 @@
reqA.setCoyoteRequest(request);
resA.setCoyoteResponse(response);
+ reqA.setConnector(connector);
request.setNote( containerRequestNOTE, reqA );
} else {
resA=(Tomcat3Response)reqA.getResponse();
1.15 +15 -1
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/Tomcat3Request.java
Index: Tomcat3Request.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/Tomcat3Request.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Tomcat3Request.java 24 Feb 2004 08:54:30 -0000 1.14
+++ Tomcat3Request.java 21 Nov 2004 02:45:03 -0000 1.15
@@ -21,6 +21,7 @@
import org.apache.coyote.ActionCode;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.core.BaseInterceptor;
/** The Request to connect with Coyote.
* This class handles the I/O requirements and transferring the request
@@ -32,6 +33,7 @@
public class Tomcat3Request extends org.apache.tomcat.core.Request {
org.apache.coyote.Request coyoteRequest=null;
+ BaseInterceptor connector = null;
// For SSL attributes we need to call an ActionHook to get
// info from the protocol handler.
@@ -90,8 +92,20 @@
remoteAddrMB = coyoteRequest.remoteAddr();
remoteHostMB = coyoteRequest.remoteHost();
serverNameMB = coyoteRequest.serverName();
+ }
-
+ /**
+ * Set the Connector that this request services
+ */
+ void setConnector(BaseInterceptor conn) {
+ connector = conn;
+ }
+
+ /**
+ * Get the Connector that this request services
+ */
+ BaseInterceptor getConnector() {
+ return connector;
}
/** Read a single character from the request body.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]