luehe 2003/07/21 12:05:51 Modified: catalina/src/share/org/apache/catalina Context.java Host.java catalina/src/share/org/apache/catalina/core StandardContext.java StandardHost.java StandardWrapperValve.java mbeans-descriptors.xml Log: Added support for X-Powered-By response header, as defined by the Servlet 2.4 and JSP 2.0 specs. The Servlet 2.4 spec defines a special X-Powered-By: Servlet/2.4 header, which containers may add to servlet-generated responses. This is complemented by the JSP 2.0 spec, which defines a X-Powered-By: JSP/2.0 header to be added (on an optional basis) to responses utilizing JSP technology. The goal of these headers is to aid in gathering statistical data about the use of Servlet and JSP technology Revision Changes Path 1.7 +27 -4 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Context.java Index: Context.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Context.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Context.java 19 May 2003 21:56:28 -0000 1.6 +++ Context.java 21 Jul 2003 19:05:50 -0000 1.7 @@ -427,6 +427,29 @@ public void setWrapperClass(String wrapperClass); + /** + * Indicates whether the generation of an X-Powered-By response header for + * servlet-generated responses is enabled or disabled for this Context. + * + * <p> Unless explicitly set on this Context, this method returns the + * X-Powered-By setting of the Host with which this Context is associated. + * + * @return true if generation of X-Powered-By response header is enabled, + * false otherwise + */ + public boolean isXpoweredBy(); + + + /** + * Enables or disables the generation of an X-Powered-By header (with value + * Servlet/2.4) for all servlet-generated responses from this Context. + * + * @param xpoweredBy true if generation of X-Powered-By response header is + * to be enabled, false otherwise + */ + public void setXpoweredBy(boolean xpoweredBy); + + // --------------------------------------------------------- Public Methods 1.5 +25 -4 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Host.java Index: Host.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Host.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Host.java 15 Jun 2003 13:03:11 -0000 1.4 +++ Host.java 21 Jul 2003 19:05:50 -0000 1.5 @@ -227,6 +227,27 @@ public void setXmlNamespaceAware(boolean xmlNamespaceAware); + /** + * Indicates whether the generation of an X-Powered-By response header for + * servlet-generated responses is enabled or disabled for this Host. + * + * @return true if generation of X-Powered-By response header is enabled, + * false otherwise + */ + public boolean isXpoweredBy(); + + + /** + * Enables or disables the generation of an X-Powered-By header (with value + * Servlet/2.4) for all servlet-generated responses from contexts + * registered with this Host. + * + * @param xpoweredBy true if generation of X-Powered-By response header is + * to be enabled, false otherwise + */ + public void setXpoweredBy(boolean xpoweredBy); + + // --------------------------------------------------------- Public Methods 1.72 +57 -3 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java Index: StandardContext.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- StandardContext.java 20 Jul 2003 14:52:17 -0000 1.71 +++ StandardContext.java 21 Jul 2003 19:05:50 -0000 1.72 @@ -276,6 +276,18 @@ private boolean distributable = false; + /* + * Enables/disables generation of X-Powered-By response header + */ + private boolean xpoweredBy; + + + /* + * Indicates whether setter for X-Powered-By property was explicitly called + */ + private boolean xpoweredBySetterCalled; + + /** * The document root for this web application. */ @@ -1600,7 +1612,6 @@ * @param errorPage The error page definition to be added */ public void addErrorPage(ErrorPage errorPage) { - // Validate the input parameters if (errorPage == null) throw new IllegalArgumentException @@ -2176,7 +2187,6 @@ * @param errorCode Error code to look up */ public ErrorPage findErrorPage(int errorCode) { - if (errorCode == 200) { return (okErrorPage); } else { @@ -4364,6 +4374,50 @@ } } + } + + + /** + * Indicates whether the generation of an X-Powered-By response header for + * servlet-generated responses is enabled or disabled for this Context. + * + * <p> Unless explicitly set on this Context, this method returns the + * X-Powered-By setting of the Host with which this Context is associated. + * + * @return true if generation of X-Powered-By response header is enabled, + * false otherwise + */ + public boolean isXpoweredBy() { + + boolean ret = false; + + if (xpoweredBySetterCalled) { + ret = this.xpoweredBy; + } else { + Host host = (Host) getParent(); + if (host != null) { + ret = host.isXpoweredBy(); + } + } + + return ret; + } + + + /** + * Enables or disables the generation of an X-Powered-By header (with value + * Servlet/2.4) for all servlet-generated responses from this Context. + * + * @param xpoweredBy true if generation of X-Powered-By response header is + * to be enabled, false otherwise + */ + public void setXpoweredBy(boolean xpoweredBy) { + boolean oldXpoweredBy = this.xpoweredBy; + this.xpoweredBy = xpoweredBy; + support.firePropertyChange("xpoweredBy", + new Boolean(oldXpoweredBy), + new Boolean(this.xpoweredBy)); + this.xpoweredBySetterCalled = true; } 1.20 +33 -1 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardHost.java Index: StandardHost.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardHost.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- StandardHost.java 19 Jul 2003 14:30:07 -0000 1.19 +++ StandardHost.java 21 Jul 2003 19:05:51 -0000 1.20 @@ -218,6 +218,12 @@ private boolean xmlNamespaceAware = false; + /* + * Enables/disables generation of X-Powered-By response header + */ + private boolean xpoweredBy; + + // ------------------------------------------------------------- Properties @@ -554,6 +560,32 @@ this.workDir = workDir; } + + + /** + * Indicates whether the generation of an X-Powered-By response header for + * servlet-generated responses is enabled or disabled for this Host. + * + * @return true if generation of X-Powered-By response header is enabled, + * false otherwise + */ + public boolean isXpoweredBy() { + return xpoweredBy; + } + + + /** + * Enables or disables the generation of an X-Powered-By header (with value + * Servlet/2.4) for all servlet-generated responses from contexts + * registered with this Host. + * + * @param xpoweredBy true if generation of X-Powered-By response header is + * to be enabled, false otherwise + */ + public void setXpoweredBy(boolean xpoweredBy) { + this.xpoweredBy = xpoweredBy; + } + // --------------------------------------------------------- Public Methods 1.17 +4 -2 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapperValve.java Index: StandardWrapperValve.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapperValve.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- StandardWrapperValve.java 18 Jul 2003 22:26:15 -0000 1.16 +++ StandardWrapperValve.java 21 Jul 2003 19:05:51 -0000 1.17 @@ -85,7 +85,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - /** * Valve that implements the default basic behavior for the * <code>StandardWrapper</code> container implementation. @@ -247,6 +246,9 @@ // Call the filter chain for this request // NOTE: This also calls the servlet's service() method try { + if (request.getContext().isXpoweredBy()) { + hres.addHeader("X-Powered-By", "Servlet/2.4"); + } String jspFile = wrapper.getJspFile(); if (jspFile != null) hreq.setAttribute(Globals.JSP_FILE_ATTR, jspFile); 1.18 +8 -0 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml Index: mbeans-descriptors.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- mbeans-descriptors.xml 15 Jun 2003 13:03:35 -0000 1.17 +++ mbeans-descriptors.xml 21 Jul 2003 19:05:51 -0000 1.18 @@ -110,6 +110,10 @@ <attribute name="crossContext" description="Should we allow the ServletContext.getContext() method to access the context of other web applications in this server?" type="boolean"/> + + <attribute name="xpoweredBy" + description="Enables/disables X-Powered-By header for servlet-generated responses" + type="boolean"/> <attribute name="debug" description="The debugging detail level for this component" @@ -477,6 +481,10 @@ <attribute name="xmlValidation" description="Attribute value used to turn on/off XML validation" + type="boolean"/> + + <attribute name="xpoweredBy" + description="Enables/disables X-Powered-By header for servlet-generated responses" type="boolean"/> <attribute name="children"
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]