Clover coverage report - Maven Clover report
Coverage timestamp: Sun Jan 3 2010 19:08:46 CET
file stats: LOC: 147   Methods: 4
NCLOC: 57   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
DisplayTagSpringInterceptor.java 25% 25% 75% 32.1%
coverage coverage
 1    /**
 2    * Licensed under the Artistic License; you may not use this file
 3    * except in compliance with the License.
 4    * You may obtain a copy of the License at
 5    *
 6    * http://displaytag.sourceforge.net/license.html
 7    *
 8    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
 9    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 10    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 11    */
 12    package org.displaytag.filter;
 13   
 14    import java.util.HashMap;
 15    import java.util.Map;
 16   
 17    import javax.servlet.http.HttpServletRequest;
 18    import javax.servlet.http.HttpServletResponse;
 19   
 20    import org.apache.commons.logging.Log;
 21    import org.apache.commons.logging.LogFactory;
 22    import org.displaytag.Messages;
 23    import org.displaytag.tags.TableTag;
 24    import org.displaytag.tags.TableTagParameters;
 25    import org.springframework.web.servlet.HandlerAdapter;
 26    import org.springframework.web.servlet.HandlerInterceptor;
 27    import org.springframework.web.servlet.ModelAndView;
 28    import org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter;
 29   
 30   
 31    /**
 32    * <p>
 33    * Allow the author of an included JSP page to reset the content type to something else (like a binary stream), and then
 34    * write the new info back as the exclusive response, clearing the buffers of all previously added content.
 35    * </p>
 36    * <p>
 37    * This interceptor allows TableTag users to perform exports from pages that are run as includes, such as from Struts or
 38    * a jsp:include. If that is your intention, just add this interceptor to your spring dispatcher context xml and map it
 39    * to the appropriate requests, using something like:
 40    * </p>
 41    *
 42    * <pre>
 43    * &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 44    * &lt;property name="interceptors">
 45    * &lt;list>
 46    * &lt;bean class="org.displaytag.filter.DisplayTagSpringInterceptor"/>
 47    * &lt;/list>
 48    * &lt;/property
 49    * &lt;/bean>
 50    * </pre>
 51    *
 52    * <p>
 53    * By default the interceptor buffers all the export content before writing it out. You can set an optional parameter
 54    * <code>buffer</code> to <code>false</code> to make the interceptor write directly to the output stream. This could
 55    * be faster and uses less memory, but the content length will not be set.
 56    * </p>
 57    *
 58    * <pre>
 59    * &lt;bean class="org.displaytag.filter.DisplayTagSpringInterceptor">
 60    * &lt;property name="buffer">&lt;value>false&lt;/value>&lt;/property>
 61    * &lt;/bean>
 62    * </pre>
 63    *
 64    * @author Keith Garry Boyce
 65    * @author rapruitt
 66    * @author Fabrizio Giustina
 67    * @version $Revision: 1081 $ ($Author: fgiust $)
 68    */
 69    public class DisplayTagSpringInterceptor implements HandlerInterceptor
 70    {
 71   
 72    /**
 73    * Logger.
 74    */
 75    static Log log = LogFactory.getLog(DisplayTagSpringInterceptor.class);
 76   
 77    /**
 78    * Force response buffering. Enabled by default.
 79    */
 80    private boolean buffer = true;
 81   
 82    /**
 83    * Sets the buffer state.
 84    * @param bufferingEnabled it <code>true</code> buffering will be used
 85    */
 86  0 public void setBuffer(boolean bufferingEnabled)
 87    {
 88  0 this.buffer = bufferingEnabled;
 89    }
 90   
 91    /**
 92    * @see HandlerInterceptor#preHandle(HttpServletRequest,HttpServletResponse, Object)
 93    */
 94  4 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
 95    {
 96   
 97  4 if (request.getParameter(TableTagParameters.PARAMETER_EXPORTING) == null)
 98    {
 99  4 if (log.isDebugEnabled())
 100    {
 101  4 log.debug(Messages.getString("ResponseOverrideFilter.parameternotfound")); //$NON-NLS-1$
 102    }
 103    // don't intercept!
 104  4 return true;
 105    }
 106   
 107  0 BufferedResponseWrapper wrapper = new BufferedResponseWrapper13Impl(response);
 108   
 109  0 Map contentBean = new HashMap(4);
 110  0 if (buffer)
 111    {
 112  0 contentBean.put(TableTagParameters.BEAN_BUFFER, Boolean.TRUE);
 113    }
 114  0 request.setAttribute(TableTag.FILTER_CONTENT_OVERRIDE_BODY, contentBean);
 115   
 116  0 if (log.isDebugEnabled())
 117    {
 118  0 log.debug("handler is " + handler);
 119    }
 120   
 121  0 HandlerAdapter handlerAdaptor = new SimpleControllerHandlerAdapter();
 122  0 handlerAdaptor.handle(request, wrapper, handler);
 123   
 124  0 ExportDelegate.writeExport(response, request, wrapper);
 125   
 126  0 return false;
 127    }
 128   
 129    /**
 130    * @see HandlerInterceptor#postHandle(HttpServletRequest,HttpServletResponse, Object, ModelAndView)
 131    */
 132  4 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj,
 133    ModelAndView modelAndView) throws Exception
 134    {
 135    // Nothing to do
 136    }
 137   
 138    /**
 139    * @see HandlerInterceptor#afterCompletion(HttpServletRequest,HttpServletResponse, Object, Exception)
 140    */
 141  4 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj,
 142    Exception exception) throws Exception
 143    {
 144    // Nothing to do
 145    }
 146   
 147    }