public static void copyContentToServletResponse( HttpResponse response, HttpServletResponse servletResponse) throws IOException { servletResponse.setContentLength(response.getContentLength()); IOUtils.copy(response.getResponse(), servletResponse.getOutputStream()); } public static void copyHeadersAndStatusToServletResponse(
public static void copyResponseToServlet(HttpResponse response, HttpServletResponse servletResponse) throws IOException { servletResponse.setStatus(response.getHttpStatusCode()); servletResponse.setContentLength(response.getContentLength()); for (Map.Entry<String, String> header : response.getHeaders().entries()) { servletResponse.addHeader(header.getKey(), header.getValue()); } HttpUtil.setCachingHeaders(servletResponse, (int)(response.getCacheTtl() / 1000L)); IOUtils.copy(response.getResponse(), servletResponse.getOutputStream()); }
@Test public void testRewriteInefficientPNG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/inefficient.png", "image/png"); HttpResponse httpResponse = rewrite(resp); assertTrue(httpResponse.getContentLength() <= resp.getContentLength()); assertEquals("image/png", httpResponse.getHeader("Content-Type")); }
@Test public void testSimpleImage() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/simple.bmp", "image/bmp"); HttpResponse rewritten = rewrite(resp); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals("image/png", rewritten.getHeader("Content-Type")); }
@Test public void testSimpleImage() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/simple.bmp", "image/bmp"); HttpResponse rewritten = rewrite(resp); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals("image/png", rewritten.getHeader("Content-Type")); }
@Test public void testStripAlpha() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/rgbawithnoalpha.png", "image/png"); HttpResponse httpResponse = rewrite(resp); assertTrue(httpResponse.getContentLength() <= resp.getContentLength()); assertEquals("image/png", httpResponse.getHeader("Content-Type")); }
@Test public void testLargeJPEG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/large.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp); assertEquals("image/jpeg", resp.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() <= resp.getContentLength()); }
@Test public void testSmallJPEGToPNG() throws Exception { // Should be significantly smaller HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/small.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp); assertEquals("image/png", rewritten.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() * 100 / resp.getContentLength() < 70); }
@Test public void testRewriteInefficientPNG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/inefficient.png", "image/png"); HttpResponse httpResponse = rewrite(resp); assertTrue(httpResponse.getContentLength() <= resp.getContentLength()); assertEquals("image/png", httpResponse.getHeader("Content-Type")); }
@Test public void testSmallJPEGToPNG() throws Exception { // Should be significantly smaller HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/small.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp); assertEquals("image/png", rewritten.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() * 100 / resp.getContentLength() < 70); }
/** * This is a GIF image with an palette that contains transparent entries but * that has not pixels that map to them so it is Opaque. * @throws Exception */ @Test public void testBadPaletteGIFToPNG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/large.gif", "image/gif"); HttpResponse httpResponse = rewrite(resp); assertTrue(httpResponse.getContentLength() <= resp.getContentLength()); assertEquals("image/png", httpResponse.getHeader("Content-Type")); }
@Test public void testRewriteInefficientPNG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/inefficient.png", "image/png"); HttpResponse httpResponse = rewrite(resp); assertTrue(httpResponse.getContentLength() <= resp.getContentLength()); assertEquals("image/png", httpResponse.getHeader("Content-Type")); }
@Test public void testLargeJPEG() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/large.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp); assertEquals("image/jpeg", resp.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() <= resp.getContentLength()); }
@Test public void testSimpleImage() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/simple.bmp", "image/bmp"); HttpResponse rewritten = rewrite(resp); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals("image/png", rewritten.getHeader("Content-Type")); }
@Test public void testSmallJPEGToPNG() throws Exception { // Should be significantly smaller HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/small.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp); assertEquals("image/png", rewritten.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() * 100 / resp.getContentLength() < 70); }
@Test public void testSmallJPEGIsNotConvertedToPNGWithJpegConversionDisabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/small.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getDefaultConfigWithJpegConversionDisabled()); assertEquals("image/jpeg", rewritten.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() <= resp.getContentLength()); }
@Test public void testSmallJPEGIsNotConvertedToPNGWithJpegConversionDisabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/small.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getDefaultConfigWithJpegConversionDisabled()); assertEquals("image/jpeg", rewritten.getHeader("Content-Type")); assertTrue(rewritten.getContentLength() <= resp.getContentLength()); }
@Test public void testRetainSubsmaplingEnabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(true, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV444, params.getSamplingMode()); }
@Test public void testRetainSubsmaplingEnabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(true, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV444, params.getSamplingMode()); }
@Test public void testLargeJPEGWithEtagAndCacheHeaders() throws Exception { HttpResponseBuilder responseBuilder = createResponseBuilder("org/apache/shindig/gadgets/rewrite/image/large.jpg", "image/jpeg"); responseBuilder.addHeader("ETag", "wereertret"); responseBuilder.addHeader("Cache-Control", "public, max-age=86400"); HttpResponse resp = responseBuilder.create(); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(false, 0.70f)); assertEquals("image/jpeg", resp.getHeader("Content-Type")); assertEquals("public, max-age=86400", resp.getHeader("Cache-Control")); assertNull(rewritten.getHeader("ETag")); assertTrue(rewritten.getContentLength() < resp.getContentLength()); }