Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 85388 invoked from network); 23 May 2008 09:03:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 May 2008 09:03:05 -0000 Received: (qmail 17681 invoked by uid 500); 23 May 2008 09:03:07 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 17552 invoked by uid 500); 23 May 2008 09:03:06 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 17543 invoked by uid 99); 23 May 2008 09:03:06 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 May 2008 02:03:06 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 May 2008 09:02:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4DDF42388A0A; Fri, 23 May 2008 02:02:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r659481 - /cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java Date: Fri, 23 May 2008 09:02:44 -0000 To: cvs@cocoon.apache.org From: reinhard@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080523090244.4DDF42388A0A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: reinhard Date: Fri May 23 02:02:43 2008 New Revision: 659481 URL: http://svn.apache.org/viewvc?rev=659481&view=rev Log: copy the debug filter to corona Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java (with props) Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java?rev=659481&view=auto ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java (added) +++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java Fri May 23 02:02:43 2008 @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.corona.servlet; + +import java.io.IOException; +import java.util.Enumeration; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Servlet filter for printing request debug information into log file. + * + * @version $Id$ + */ +public class DebugFilter implements Filter { + + private final Log logger = LogFactory.getLog(this.getClass()); + + final static protected String lineSeparator = "\n"; + + /** Active request count. */ + private volatile int activeRequestCount; + + /** + * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) + */ + public void init(FilterConfig config) throws ServletException { + } + + /** + * @see javax.servlet.Filter#destroy() + */ + public void destroy() { + // nothing to do here + } + + /** + * Log debug information about the current environment. + * + * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, + * javax.servlet.FilterChain) + */ + public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, + ServletException { + // we don't do debug msgs if this is not a http servlet request + if (!(req instanceof HttpServletRequest)) { + filterChain.doFilter(req, res); + return; + } + try { + ++this.activeRequestCount; + final HttpServletRequest request = (HttpServletRequest) req; + + if (this.logger.isDebugEnabled()) { + final StringBuffer msg = new StringBuffer(); + + msg.append("DEBUGGING INFORMATION:").append(lineSeparator); + msg.append("REQUEST: ").append(request.getRequestURI()).append(lineSeparator).append(lineSeparator); + msg.append("CONTEXT PATH: ").append(request.getContextPath()).append(lineSeparator); + msg.append("SERVLET PATH: ").append(request.getServletPath()).append(lineSeparator); + msg.append("PATH INFO: ").append(request.getPathInfo()).append(lineSeparator).append(lineSeparator); + + msg.append("REMOTE HOST: ").append(request.getRemoteHost()).append(lineSeparator); + msg.append("REMOTE ADDRESS: ").append(request.getRemoteAddr()).append(lineSeparator); + msg.append("REMOTE USER: ").append(request.getRemoteUser()).append(lineSeparator); + msg.append("REQUEST SESSION ID: ").append(request.getRequestedSessionId()).append(lineSeparator); + msg.append("REQUEST PREFERRED LOCALE: ").append(request.getLocale().toString()).append(lineSeparator); + msg.append("SERVER HOST: ").append(request.getServerName()).append(lineSeparator); + msg.append("SERVER PORT: ").append(request.getServerPort()).append(lineSeparator).append(lineSeparator); + + msg.append("METHOD: ").append(request.getMethod()).append(lineSeparator); + msg.append("CONTENT LENGTH: ").append(request.getContentLength()).append(lineSeparator); + msg.append("PROTOCOL: ").append(request.getProtocol()).append(lineSeparator); + msg.append("SCHEME: ").append(request.getScheme()).append(lineSeparator); + msg.append("AUTH TYPE: ").append(request.getAuthType()).append(lineSeparator).append(lineSeparator); + msg.append("CURRENT ACTIVE REQUESTS: ").append(this.activeRequestCount).append(lineSeparator); + + // log all of the request parameters + final Enumeration e = request.getParameterNames(); + + msg.append("REQUEST PARAMETERS:").append(lineSeparator).append(lineSeparator); + + while (e.hasMoreElements()) { + String p = (String) e.nextElement(); + + msg.append("PARAM: '").append(p).append("' ").append("VALUES: '"); + String[] params = request.getParameterValues(p); + for (int i = 0; i < params.length; i++) { + msg.append("[" + params[i] + "]"); + if (i != params.length - 1) { + msg.append(", "); + } + } + + msg.append("'").append(lineSeparator); + } + + // log all of the header parameters + final Enumeration e2 = request.getHeaderNames(); + + msg.append("HEADER PARAMETERS:").append(lineSeparator).append(lineSeparator); + + while (e2.hasMoreElements()) { + String p = (String) e2.nextElement(); + + msg.append("PARAM: '").append(p).append("' ").append("VALUES: '"); + Enumeration e3 = request.getHeaders(p); + while (e3.hasMoreElements()) { + msg.append("[" + e3.nextElement() + "]"); + if (e3.hasMoreElements()) { + msg.append(", "); + } + } + + msg.append("'").append(lineSeparator); + } + + msg.append(lineSeparator).append("SESSION ATTRIBUTES:").append(lineSeparator).append(lineSeparator); + + // log all of the session attributes + final HttpSession session = ((HttpServletRequest) req).getSession(false); + if (session != null) { + // Fix bug #12139: Session can be modified while still + // being enumerated here + synchronized (session) { + final Enumeration se = session.getAttributeNames(); + while (se.hasMoreElements()) { + String p = (String) se.nextElement(); + msg.append("PARAM: '").append(p).append("' ").append("VALUE: '").append( + session.getAttribute(p)).append("'").append(lineSeparator); + } + } + } + this.logger.debug(msg.toString()); + } + + // Delegate + filterChain.doFilter(request, res); + } finally { + --this.activeRequestCount; + } + } +} Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java ------------------------------------------------------------------------------ svn:keywords = Id Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/DebugFilter.java ------------------------------------------------------------------------------ svn:mime-type = text/plain