Package org.ocpsoft.rewrite.servlet.config.response

Source Code of org.ocpsoft.rewrite.servlet.config.response.GZipResponseContentInterceptor

package org.ocpsoft.rewrite.servlet.config.response;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;

import org.ocpsoft.common.util.Streams;
import org.ocpsoft.rewrite.exception.RewriteException;
import org.ocpsoft.rewrite.servlet.http.event.HttpServletRewrite;

/**
* A {@link ResponseContentInterceptor} that compresses the response output to GZip format and sets the proper response
* headers.
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class GZipResponseContentInterceptor implements ResponseContentInterceptor
{
   @Override
   public void intercept(HttpServletRewrite event, ResponseContent buffer, ResponseContentInterceptorChain chain)
   {
      /*
       * Do our work after all other interceptors.
       */
      chain.proceed();

      byte[] contents = buffer.getContents();
      ByteArrayOutputStream result = new ByteArrayOutputStream();
      try {
         GZIPOutputStream gzip = new GZIPOutputStream(result);
         Streams.copy(new ByteArrayInputStream(contents), gzip);
         gzip.close();

         contents = result.toByteArray();
         buffer.setContents(contents);

         event.getResponse().setContentLength(contents.length);
         event.getResponse().addHeader("Content-Encoding", "gzip");
      }
      catch (IOException e) {
         throw new RewriteException("Failed to GZIP compress output content: ", e);
      }

   }
}
TOP

Related Classes of org.ocpsoft.rewrite.servlet.config.response.GZipResponseContentInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.