com.surevine.alfresco.audit.integration.ResponseModifiableMockFilterChain.java Source code

Java tutorial

Introduction

Here is the source code for com.surevine.alfresco.audit.integration.ResponseModifiableMockFilterChain.java

Source

/*
 * Copyright (C) 2008-2010 Surevine Limited.
 * 
 * Although intended for deployment and use alongside Alfresco this module should
 * be considered 'Not a Contribution' as defined in Alfresco'sstandard contribution agreement, see
 * http://www.alfresco.org/resource/AlfrescoContributionAgreementv2.pdf
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
package com.surevine.alfresco.audit.integration;

import java.io.IOException;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

import org.springframework.mock.web.MockFilterChain;

/**
 * This class is used so that we can inject our own implementation of the doFilter method such that we can write to the
 * response object when the decorating outputstream is attached.
 * 
 * @author garethferrier
 * 
 */
public class ResponseModifiableMockFilterChain extends MockFilterChain {
    private String content;
    private int status;

    /**
     * Constructor. Initialise the content and status.
     * 
     * @param content
     * @param status
     */
    public ResponseModifiableMockFilterChain(final String content, final int status) {
        this.content = content;
        this.status = status;
    }

    @Override
    public void doFilter(final ServletRequest request, final ServletResponse response) {
        super.doFilter(request, response);

        try {
            HttpServletResponse httpServletResponse = (HttpServletResponse) response;
            httpServletResponse.getOutputStream().write(content.getBytes());
            httpServletResponse.setContentLength(content.length());
            httpServletResponse.setStatus(this.status);
            httpServletResponse.flushBuffer();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}