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]