Coverage Report - org.seasar.teeda.core.filter.RequestDumpFilter
 
Classes in this File Line Coverage Branch Coverage Complexity
RequestDumpFilter
0%
0/94
0%
0/38
3.875
 
 1  
 /*
 2  
  * Copyright 2004-2011 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.teeda.core.filter;
 17  
 
 18  
 import java.io.IOException;
 19  
 
 20  
 import javax.servlet.Filter;
 21  
 import javax.servlet.FilterChain;
 22  
 import javax.servlet.FilterConfig;
 23  
 import javax.servlet.ServletContext;
 24  
 import javax.servlet.ServletException;
 25  
 import javax.servlet.ServletRequest;
 26  
 import javax.servlet.ServletResponse;
 27  
 import javax.servlet.http.HttpServletRequest;
 28  
 import javax.servlet.http.HttpServletResponse;
 29  
 
 30  
 import org.apache.commons.logging.Log;
 31  
 import org.apache.commons.logging.LogFactory;
 32  
 import org.seasar.framework.util.BooleanConversionUtil;
 33  
 import org.seasar.teeda.core.util.RequestDumpUtil;
 34  
 
 35  
 /**
 36  
  * @author manhole
 37  
  */
 38  0
 public class RequestDumpFilter implements Filter {
 39  
 
 40  0
     private static final Log log = LogFactory.getLog(RequestDumpFilter.class);
 41  
 
 42  0
     private FilterConfig config = null;
 43  
 
 44  
     private boolean beforeRequestParameter;
 45  
 
 46  
     private boolean afterRequestParameter;
 47  
 
 48  
     private boolean beforeRequestAttribute;
 49  
 
 50  
     private boolean afterRequestAttribute;
 51  
 
 52  
     private boolean beforeCookies;
 53  
 
 54  
     private boolean afterCookies;
 55  
 
 56  
     private boolean beforeRequestHeader;
 57  
 
 58  
     private boolean afterRequestHeader;
 59  
 
 60  
     private boolean beforeSessionAttribute;
 61  
 
 62  
     private boolean afterSessionAttribute;
 63  
 
 64  
     private boolean beforeContextAttribute;
 65  
 
 66  
     private boolean afterContextAttribute;
 67  
 
 68  
     private boolean afterResponse;
 69  
 
 70  
     private static final String INDENT = "  ";
 71  
 
 72  0
     private static final String LF = System.getProperty("line.separator");
 73  
 
 74  
     public void init(final FilterConfig filterConfig) throws ServletException {
 75  0
         this.config = filterConfig;
 76  0
         beforeRequestParameter = getBooleanParameter(filterConfig,
 77  
                 "beforeRequestParameter", true);
 78  0
         afterRequestParameter = getBooleanParameter(filterConfig,
 79  
                 "afterRequestParameter", false);
 80  0
         beforeRequestAttribute = getBooleanParameter(filterConfig,
 81  
                 "beforeRequestAttribute", true);
 82  0
         afterRequestAttribute = getBooleanParameter(filterConfig,
 83  
                 "afterRequestAttribute", true);
 84  0
         beforeRequestHeader = getBooleanParameter(filterConfig,
 85  
                 "beforeRequestHeader", true);
 86  0
         afterRequestHeader = getBooleanParameter(filterConfig,
 87  
                 "afterRequestHeader", false);
 88  0
         beforeContextAttribute = getBooleanParameter(filterConfig,
 89  
                 "beforeContextAttribute", true);
 90  0
         afterContextAttribute = getBooleanParameter(filterConfig,
 91  
                 "afterContextAttribute", true);
 92  0
         beforeCookies = getBooleanParameter(filterConfig, "beforeCookies", true);
 93  0
         afterCookies = getBooleanParameter(filterConfig, "afterCookies", true);
 94  0
         beforeSessionAttribute = getBooleanParameter(filterConfig,
 95  
                 "beforeSessionAttribute", true);
 96  0
         afterSessionAttribute = getBooleanParameter(filterConfig,
 97  
                 "afterSessionAttribute", true);
 98  0
         afterResponse = getBooleanParameter(filterConfig, "afterResponse", true);
 99  
 
 100  0
         final StringBuffer sb = new StringBuffer();
 101  0
         RequestDumpUtil.dumpContextProperties(sb, filterConfig
 102  
                 .getServletContext(), LF, INDENT);
 103  0
         log.debug(sb.toString());
 104  0
     }
 105  
 
 106  
     public void destroy() {
 107  0
         config = null;
 108  0
     }
 109  
 
 110  
     public void doFilter(final ServletRequest request,
 111  
             final ServletResponse response, final FilterChain chain)
 112  
             throws IOException, ServletException {
 113  0
         if (config == null) {
 114  0
             return;
 115  
         }
 116  0
         if (!(request instanceof HttpServletRequest)
 117  
                 || !(response instanceof HttpServletResponse)) {
 118  0
             chain.doFilter(request, response);
 119  0
             return;
 120  
         }
 121  0
         final HttpServletRequest hrequest = (HttpServletRequest) request;
 122  0
         final HttpServletResponse hresponse = (HttpServletResponse) response;
 123  0
         dumpBefore(hrequest);
 124  
         try {
 125  0
             chain.doFilter(request, response);
 126  
         } finally {
 127  0
             dumpAfter(hrequest, hresponse);
 128  0
         }
 129  0
     }
 130  
 
 131  
     private void dumpBefore(final HttpServletRequest request) {
 132  0
         final ServletContext context = config.getServletContext();
 133  0
         final StringBuffer sb = new StringBuffer();
 134  0
         sb.append(LF);
 135  0
         sb.append(LF);
 136  0
         sb.append("** before *****************************************: ");
 137  0
         sb.append(gerServletPath(request));
 138  0
         sb.append(LF);
 139  0
         RequestDumpUtil.dumpRequestProperties(sb, request, LF, INDENT);
 140  0
         RequestDumpUtil.dumpSessionProperties(sb, request, LF, INDENT);
 141  0
         if (beforeRequestParameter) {
 142  0
             RequestDumpUtil.dumpRequestParameters(sb, request, LF, INDENT);
 143  
         }
 144  0
         if (beforeRequestAttribute) {
 145  0
             RequestDumpUtil.dumpRequestAttributes(sb, request, LF, INDENT);
 146  
         }
 147  0
         if (beforeCookies) {
 148  0
             RequestDumpUtil.dumpCookies(sb, request, LF, INDENT);
 149  
         }
 150  0
         if (beforeRequestHeader) {
 151  0
             RequestDumpUtil.dumpRequestHeaders(sb, request, LF, INDENT);
 152  
         }
 153  0
         if (beforeSessionAttribute) {
 154  0
             RequestDumpUtil.dumpSessionAttributes(sb, request, LF, INDENT);
 155  
         }
 156  0
         if (beforeContextAttribute) {
 157  0
             RequestDumpUtil.dumpContextAttributes(sb, context, LF, INDENT);
 158  
         }
 159  0
         log.debug(sb.toString());
 160  0
     }
 161  
 
 162  
     private void dumpAfter(final HttpServletRequest request,
 163  
             final HttpServletResponse response) {
 164  0
         final StringBuffer sb = new StringBuffer();
 165  0
         sb.append(LF);
 166  0
         sb.append(LF);
 167  0
         sb.append("** after *****************************************: ");
 168  0
         sb.append(gerServletPath(request));
 169  0
         sb.append(LF);
 170  0
         if (afterResponse) {
 171  0
             RequestDumpUtil.dumpResponseProperties(sb, response, LF, INDENT);
 172  
         }
 173  0
         if (afterRequestParameter) {
 174  0
             RequestDumpUtil.dumpRequestParameters(sb, request, LF, INDENT);
 175  
         }
 176  0
         if (afterRequestAttribute) {
 177  0
             RequestDumpUtil.dumpRequestAttributes(sb, request, LF, INDENT);
 178  
         }
 179  0
         if (afterCookies) {
 180  0
             RequestDumpUtil.dumpCookies(sb, request, LF, INDENT);
 181  
         }
 182  0
         if (afterRequestHeader) {
 183  0
             RequestDumpUtil.dumpRequestHeaders(sb, request, LF, INDENT);
 184  
         }
 185  0
         if (afterSessionAttribute) {
 186  0
             RequestDumpUtil.dumpSessionAttributes(sb, request, LF, INDENT);
 187  
         }
 188  0
         if (afterContextAttribute) {
 189  0
             RequestDumpUtil.dumpContextAttributes(sb, config
 190  
                     .getServletContext(), LF, INDENT);
 191  
         }
 192  0
         log.debug(sb.toString());
 193  0
     }
 194  
 
 195  
     private String gerServletPath(final ServletRequest request) {
 196  0
         if (request instanceof HttpServletRequest) {
 197  0
             return ((HttpServletRequest) request).getServletPath();
 198  
         }
 199  0
         return "";
 200  
     }
 201  
 
 202  
     public String toString() {
 203  0
         if (config == null) {
 204  0
             return ("RequestDumpFilter()");
 205  
         }
 206  0
         final StringBuffer sb = new StringBuffer("RequestDumpFilter(");
 207  0
         sb.append(config);
 208  0
         sb.append(")");
 209  0
         return (sb.toString());
 210  
     }
 211  
 
 212  
     private boolean getBooleanParameter(final FilterConfig filterConfig,
 213  
             final String name, final boolean defaultValue) {
 214  0
         final String value = filterConfig.getInitParameter(name);
 215  0
         if (value == null) {
 216  0
             return defaultValue;
 217  
         }
 218  0
         return BooleanConversionUtil.toPrimitiveBoolean(value);
 219  
     }
 220  
 
 221  
 }