Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=600870&r1=600869&r2=600870&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java (original) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java Tue Dec 4 02:27:51 2007 @@ -63,6 +63,7 @@ import org.apache.fop.image2.ImageFlavor; import org.apache.fop.image2.ImageInfo; import org.apache.fop.image2.ImageManager; +import org.apache.fop.image2.ImageSessionContext; import org.apache.fop.image2.impl.ImageGraphics2D; import org.apache.fop.image2.impl.ImageRendered; import org.apache.fop.image2.impl.ImageXMLDOM; @@ -890,14 +891,16 @@ ImageManager manager = getUserAgent().getFactory().getImageManager(); ImageInfo info = null; try { - info = manager.preloadImage(uri, getUserAgent()); + ImageSessionContext sessionContext = getUserAgent().getImageSessionContext(); + info = manager.getImageInfo(uri, sessionContext); final ImageFlavor[] flavors = new ImageFlavor[] {ImageFlavor.GRAPHICS2D, ImageFlavor.BUFFERED_IMAGE, ImageFlavor.RENDERED_IMAGE, ImageFlavor.XML_DOM}; - Map hints = ImageUtil.getDefaultHints(getUserAgent()); - org.apache.fop.image2.Image img = manager.getImage(info, flavors, hints); + Map hints = ImageUtil.getDefaultHints(sessionContext); + org.apache.fop.image2.Image img = manager.getImage( + info, flavors, hints, sessionContext); if (img instanceof ImageGraphics2D) { ImageGraphics2D imageG2D = (ImageGraphics2D)img; int width = (int)pos.getWidth();
Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/ps/PSRenderer.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/ps/PSRenderer.java?rev=600870&r1=600869&r2=600870&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/ps/PSRenderer.java (original) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/ps/PSRenderer.java Tue Dec 4 02:27:51 2007 @@ -24,6 +24,7 @@ import java.awt.geom.Rectangle2D; import java.awt.image.RenderedImage; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.LineNumberReader; @@ -76,6 +77,7 @@ import org.apache.fop.image2.ImageFlavor; import org.apache.fop.image2.ImageInfo; import org.apache.fop.image2.ImageManager; +import org.apache.fop.image2.ImageSessionContext; import org.apache.fop.image2.impl.ImageGraphics2D; import org.apache.fop.image2.impl.ImageRawEPS; import org.apache.fop.image2.impl.ImageRawJPEG; @@ -406,8 +408,9 @@ ImageManager manager = getUserAgent().getFactory().getImageManager(); ImageInfo info = null; try { - info = manager.preloadImage(uri, getUserAgent()); - Map hints = ImageUtil.getDefaultHints(getUserAgent()); + ImageSessionContext sessionContext = getUserAgent().getImageSessionContext(); + info = manager.getImageInfo(uri, sessionContext); + Map hints = ImageUtil.getDefaultHints(sessionContext); ImageFlavor[] flavors; if (gen.getPSLevel() >= 3) { flavors = level3Flavors; @@ -416,7 +419,8 @@ } int width = (int)pos.getWidth(); int height = (int)pos.getHeight(); - org.apache.fop.image2.Image img = manager.getImage(info, flavors, hints); + org.apache.fop.image2.Image img = manager.getImage( + info, flavors, hints, sessionContext); if (img instanceof ImageGraphics2D) { ImageGraphics2D imageG2D = (ImageGraphics2D)img; RendererContext context = createRendererContext( @@ -437,17 +441,27 @@ if (MimeConstants.MIME_EPS.equals(raw.getInfo().getMimeType())) { ImageRawEPS eps = (ImageRawEPS)raw; Rectangle2D bbox = eps.getBoundingBox(); - PSImageUtils.renderEPS(raw.getInputStream(), uri, - x / 1000f, y / 1000f, - width / 1000f, height / 1000f, - (float)bbox.getX(), (float)bbox.getY(), - (float)bbox.getWidth(), (float)bbox.getHeight(), - gen); + InputStream in = raw.createInputStream(); + try { + PSImageUtils.renderEPS(in, uri, + x / 1000f, y / 1000f, + width / 1000f, height / 1000f, + (float)bbox.getX(), (float)bbox.getY(), + (float)bbox.getWidth(), (float)bbox.getHeight(), + gen); + } finally { + IOUtils.closeQuietly(in); + } } else if (MimeConstants.MIME_JPEG.equals(raw.getInfo().getMimeType())) { ImageRawJPEG jpeg = (ImageRawJPEG)raw; ImageEncoder encoder = new ImageEncoder() { public void writeTo(OutputStream out) throws IOException { - IOUtils.copy(raw.getInputStream(), out); + InputStream in = raw.createInputStream(); + try { + IOUtils.copy(in, out); + } finally { + IOUtils.closeQuietly(in); + } } public String getImplicitFilter() { return "<< >> /DCTDecode"; @@ -466,55 +480,11 @@ } catch (ImageException ie) { log.error("Error while processing image: " + (info != null ? info.toString() : uri), ie); + } catch (FileNotFoundException fe) { + log.error(fe.getMessage()); } catch (IOException ioe) { handleIOTrouble(ioe); } - - /* - if (fopimage == null) { - return; - } - if (!fopimage.load(FopImage.DIMENSIONS)) { - return; - } - float x = (float)pos.getX() / 1000f; - x += currentIPPosition / 1000f; - float y = (float)pos.getY() / 1000f; - y += currentBPPosition / 1000f; - float w = (float)pos.getWidth() / 1000f; - float h = (float)pos.getHeight() / 1000f; - try { - String mime = fopimage.getMimeType(); - if ("text/xml".equals(mime)) { - if (!fopimage.load(FopImage.ORIGINAL_DATA)) { - return; - } - Document doc = ((XMLImage) fopimage).getDocument(); - String ns = ((XMLImage) fopimage).getNameSpace(); - - renderDocument(doc, ns, pos, foreignAttributes); - } else if ("image/svg+xml".equals(mime)) { - if (!fopimage.load(FopImage.ORIGINAL_DATA)) { - return; - } - Document doc = ((XMLImage) fopimage).getDocument(); - String ns = ((XMLImage) fopimage).getNameSpace(); - - renderDocument(doc, ns, pos, foreignAttributes); - } else if (fopimage instanceof EPSImage) { - PSImageUtils.renderEPS((EPSImage)fopimage, x, y, w, h, gen); - } else { - if (isImageInlined(uri, fopimage)) { - PSImageUtils.renderBitmapImage(fopimage, x, y, w, h, gen); - } else { - PSResource form = getFormForImage(uri, fopimage); - PSImageUtils.renderForm(fopimage, form, x, y, w, h, gen); - } - } - } catch (IOException ioe) { - handleIOTrouble(ioe); - } - */ } /** Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/rtf/RTFHandler.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/rtf/RTFHandler.java?rev=600870&r1=600869&r2=600870&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/rtf/RTFHandler.java (original) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/render/rtf/RTFHandler.java Tue Dec 4 02:27:51 2007 @@ -82,6 +82,7 @@ import org.apache.fop.image2.ImageFlavor; import org.apache.fop.image2.ImageInfo; import org.apache.fop.image2.ImageManager; +import org.apache.fop.image2.ImageSessionContext; import org.apache.fop.image2.impl.ImageRawStream; import org.apache.fop.image2.util.ImageUtil; import org.apache.fop.render.DefaultFontResolver; @@ -1106,7 +1107,7 @@ //set image data FOUserAgent userAgent = eg.getUserAgent(); ImageManager manager = userAgent.getFactory().getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.getImageInfo(uri, userAgent.getImageSessionContext()); if (info == null) { log.error("Image could not be found: " + uri); return; @@ -1181,12 +1182,13 @@ ImageFlavor[] flavors = new ImageFlavor[] { ImageFlavor.RAW_EMF, ImageFlavor.RAW_PNG, ImageFlavor.RAW_JPEG }; - Map hints = ImageUtil.getDefaultHints(userAgent); - Image image = manager.getImage(info, flavors, hints); + ImageSessionContext sessionContext = userAgent.getImageSessionContext(); + Map hints = ImageUtil.getDefaultHints(sessionContext); + Image image = manager.getImage(info, flavors, hints, sessionContext); if (image instanceof ImageRawStream) { ImageRawStream rawImage = (ImageRawStream)image; - rawData = IOUtils.toByteArray(rawImage.getInputStream()); + rawData = IOUtils.toByteArray(rawImage.createInputStream()); } } catch (ImageException ie) { log.error("Error while loading/processing image: " + info.getOriginalURI(), ie); Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImageLoaderTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImageLoaderTestCase.java?rev=600870&r1=600869&r2=600870&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImageLoaderTestCase.java (original) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImageLoaderTestCase.java Tue Dec 4 02:27:51 2007 @@ -20,11 +20,13 @@ package org.apache.fop.image2; import java.io.File; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import junit.framework.TestCase; +import org.apache.commons.io.IOUtils; import org.apache.xmlgraphics.image.writer.ImageWriterUtil; import org.apache.fop.apps.FOUserAgent; @@ -32,7 +34,6 @@ import org.apache.fop.image2.impl.ImageRawStream; import org.apache.fop.image2.impl.ImageRendered; import org.apache.fop.image2.impl.ImageXMLDOM; -import org.apache.fop.image2.util.ImageUtil; /** * Tests for bundled ImageLoader implementations. @@ -56,10 +57,11 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); - Image img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE); + Image img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE, + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RENDERED_IMAGE, img.getFlavor()); ImageRendered imgRed = (ImageRendered)img; @@ -77,10 +79,11 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); - Image img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE); + Image img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE, + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RENDERED_IMAGE, img.getFlavor()); ImageRendered imgRed = (ImageRendered)img; @@ -98,10 +101,11 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); - Image img = manager.getImage(info, ImageFlavor.XML_DOM); + Image img = manager.getImage(info, ImageFlavor.XML_DOM, + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.XML_DOM, img.getFlavor()); ImageXMLDOM imgDom = (ImageXMLDOM)img; @@ -112,7 +116,7 @@ assertEquals(16000, info.getSize().getHeightMpt()); img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE, - ImageUtil.getDefaultHints(userAgent)); + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RENDERED_IMAGE, img.getFlavor()); ImageRendered imgRed = (ImageRendered)img; @@ -135,11 +139,11 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); Image img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE, - ImageUtil.getDefaultHints(userAgent)); + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RENDERED_IMAGE, img.getFlavor()); ImageRendered imgRed = (ImageRendered)img; @@ -162,20 +166,25 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); Image img = manager.getImage(info, ImageFlavor.RAW_EPS, - ImageUtil.getDefaultHints(userAgent)); + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RAW_EPS, img.getFlavor()); ImageRawStream imgEPS = (ImageRawStream)img; - assertNotNull(imgEPS.getInputStream()); - Reader reader = new InputStreamReader(imgEPS.getInputStream(), "US-ASCII"); - char[] c = new char[4]; - reader.read(c); - if (!("%!PS".equals(new String(c)))) { - fail("EPS header expected"); + InputStream in = imgEPS.createInputStream(); + try { + assertNotNull(in); + Reader reader = new InputStreamReader(in, "US-ASCII"); + char[] c = new char[4]; + reader.read(c); + if (!("%!PS".equals(new String(c)))) { + fail("EPS header expected"); + } + } finally { + IOUtils.closeQuietly(in); } } @@ -185,20 +194,25 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); Image img = manager.getImage(info, ImageFlavor.RAW_EPS, - ImageUtil.getDefaultHints(userAgent)); + userAgent.getImageSessionContext()); assertNotNull("Image must not be null", img); assertEquals(ImageFlavor.RAW_EPS, img.getFlavor()); ImageRawStream imgEPS = (ImageRawStream)img; - assertNotNull(imgEPS.getInputStream()); - Reader reader = new InputStreamReader(imgEPS.getInputStream(), "US-ASCII"); - char[] c = new char[4]; - reader.read(c); - if (!("%!PS".equals(new String(c)))) { - fail("EPS header expected"); + InputStream in = imgEPS.createInputStream(); + try { + assertNotNull(in); + Reader reader = new InputStreamReader(in, "US-ASCII"); + char[] c = new char[4]; + reader.read(c); + if (!("%!PS".equals(new String(c)))) { + fail("EPS header expected"); + } + } finally { + IOUtils.closeQuietly(in); } } Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java?rev=600870&r1=600869&r2=600870&view=diff ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java (original) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java Tue Dec 4 02:27:51 2007 @@ -19,6 +19,7 @@ package org.apache.fop.image2; +import java.io.FileNotFoundException; import java.io.IOException; import junit.framework.TestCase; @@ -50,13 +51,26 @@ assertNotNull(ilf); } + public void testFileNotFound() throws Exception { + String uri = "doesnotexistanywhere.png"; + + FOUserAgent userAgent = fopFactory.newFOUserAgent(); + ImageManager manager = fopFactory.getImageManager(); + try { + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); + fail("Expected a FileNotFoundException!"); + } catch (FileNotFoundException e) { + //expected! + } + } + public void testPNG() throws Exception { String uri = "examples/fo/graphics/asf-logo.png"; FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_PNG, info.getMimeType()); assertEquals("examples/fo/graphics/asf-logo.png", info.getOriginalURI()); @@ -73,7 +87,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_TIFF, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -90,7 +104,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_TIFF, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -107,7 +121,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_GIF, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -134,7 +148,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_SVG, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -151,7 +165,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(ImageWMF.MIME_WMF, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -168,7 +182,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals("image/emf", info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -185,7 +199,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_JPEG, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -202,7 +216,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_JPEG, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -219,7 +233,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals("image/bmp", info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -236,7 +250,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals("image/bmp", info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -253,7 +267,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_EPS, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); @@ -270,7 +284,7 @@ FOUserAgent userAgent = fopFactory.newFOUserAgent(); ImageManager manager = fopFactory.getImageManager(); - ImageInfo info = manager.preloadImage(uri, userAgent); + ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext()); assertNotNull("ImageInfo must not be null", info); assertEquals(MimeConstants.MIME_EPS, info.getMimeType()); assertEquals(uri, info.getOriginalURI()); Added: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java?rev=600870&view=auto ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java (added) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java Tue Dec 4 02:27:51 2007 @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.image2.cache; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * ImageCacheListener implementation for debugging purposes. + */ +public class ImageCacheLoggingStatistics extends ImageCacheStatistics { + + /** logger */ + protected static Log log = LogFactory.getLog(ImageCacheLoggingStatistics.class); + + /** + * Main constructor. + * @param detailed true if statistics for each URI should be kept. + */ + public ImageCacheLoggingStatistics(boolean detailed) { + super(detailed); + } + + /** [EMAIL PROTECTED] */ + public void invalidHit(String uri) { + super.invalidHit(uri); + log.info("Invalid HIT: " + uri); + } + + /** [EMAIL PROTECTED] */ + public void cacheHitImage(ImageKey key) { + super.cacheHitImage(key); + log.info("Image Cache HIT: " + key); + } + + /** [EMAIL PROTECTED] */ + public void cacheHitImageInfo(String uri) { + super.cacheHitImageInfo(uri); + log.info("ImageInfo Cache HIT: " + uri); + } + + /** [EMAIL PROTECTED] */ + public void cacheMissImage(ImageKey key) { + super.cacheMissImage(key); + log.info("Image Cache MISS: " + key); + } + + /** [EMAIL PROTECTED] */ + public void cacheMissImageInfo(String uri) { + super.cacheMissImageInfo(uri); + log.info("ImageInfo Cache MISS: " + uri); + } + + + +} Propchange: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheLoggingStatistics.java ------------------------------------------------------------------------------ svn:keywords = Id Added: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java?rev=600870&view=auto ============================================================================== --- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java (added) +++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java Tue Dec 4 02:27:51 2007 @@ -0,0 +1,197 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.image2.cache; + +import java.io.File; +import java.io.FileNotFoundException; +import java.net.MalformedURLException; + +import junit.framework.TestCase; + +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.FopFactory; +import org.apache.fop.image2.ImageFlavor; +import org.apache.fop.image2.ImageInfo; +import org.apache.fop.image2.ImageManager; +import org.apache.fop.image2.ImageSessionContext; +import org.apache.fop.image2.impl.ImageBuffered; + +/** + * Tests for bundled ImageLoader implementations. + */ +public class ImageCacheTestCase extends TestCase { + + private FopFactory createFopFactory() { + FopFactory fopFactory = FopFactory.newInstance(); + fopFactory.setSourceResolution(72); + fopFactory.setTargetResolution(300); + File baseDir = new File("test/resources/images/"); + if (!baseDir.isDirectory()) { + throw new IllegalStateException("Base directory for test was not found."); + } + try { + fopFactory.setBaseURL(baseDir.toURL().toExternalForm()); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + return fopFactory; + } + + /** + * Tests the ImageInfo cache. + * @throws Exception if an error occurs + */ + public void testImageInfoCache() throws Exception { + FopFactory fopFactory = createFopFactory(); + + FOUserAgent userAgent = fopFactory.newFOUserAgent(); + ImageManager manager = fopFactory.getImageManager(); + + String invalid1 = "invalid1.jpg"; + String invalid2 = "invalid2.jpg"; + String valid1 = "bgimg300dpi.bmp"; + String valid2 = "big-image.png"; + + ImageCacheStatistics statistics = new ImageCacheLoggingStatistics(true); + manager.getCache().setCacheListener(statistics); + + ImageInfo info1, info2; + info1 = manager.getImageInfo(valid1, userAgent.getImageSessionContext()); + assertNotNull(info1); + assertEquals(valid1, info1.getOriginalURI()); + + try { + manager.getImageInfo(invalid1, userAgent.getImageSessionContext()); + fail("Expected FileNotFoundException for invalid URI"); + } catch (FileNotFoundException e) { + //expected + } + + //2 requests: + assertEquals(0, statistics.getImageInfoCacheHits()); + assertEquals(2, statistics.getImageInfoCacheMisses()); + assertEquals(0, statistics.getInvalidHits()); + statistics.reset(); + + //Cache Hit + info1 = manager.getImageInfo(valid1, userAgent.getImageSessionContext()); + assertNotNull(info1); + assertEquals(valid1, info1.getOriginalURI()); + + //Cache Miss + info2 = manager.getImageInfo(valid2, userAgent.getImageSessionContext()); + assertNotNull(info2); + assertEquals(valid2, info2.getOriginalURI()); + + try { + //Invalid Hit + manager.getImageInfo(invalid1, userAgent.getImageSessionContext()); + fail("Expected FileNotFoundException for invalid URI"); + } catch (FileNotFoundException e) { + //expected + } + try { + //Invalid (Cache Miss) + manager.getImageInfo(invalid2, userAgent.getImageSessionContext()); + fail("Expected FileNotFoundException for invalid URI"); + } catch (FileNotFoundException e) { + //expected + } + + //4 requests: + assertEquals(1, statistics.getImageInfoCacheHits()); + assertEquals(2, statistics.getImageInfoCacheMisses()); + assertEquals(1, statistics.getInvalidHits()); + statistics.reset(); + + } + + /** + * Tests the image cache reusing a cacheable Image created by the ImageLoader. + * @throws Exception if an error occurs + */ + public void testImageCache1() throws Exception { + FopFactory fopFactory = createFopFactory(); + + FOUserAgent userAgent = fopFactory.newFOUserAgent(); + ImageManager manager = fopFactory.getImageManager(); + + String valid1 = "bgimg300dpi.bmp"; + + ImageCacheStatistics statistics = new ImageCacheLoggingStatistics(true); + manager.getCache().setCacheListener(statistics); + + ImageSessionContext session = userAgent.getImageSessionContext(); + ImageInfo info = manager.getImageInfo(valid1, session); + assertNotNull(info); + + ImageBuffered img1 = (ImageBuffered)manager.getImage( + info, ImageFlavor.BUFFERED_IMAGE, session); + assertNotNull(img1); + assertNotNull(img1.getBufferedImage()); + + ImageBuffered img2 = (ImageBuffered)manager.getImage( + info, ImageFlavor.BUFFERED_IMAGE, session); + //ImageBuffered does not have to be the same instance but we want at least the + //BufferedImage to be reused. + assertTrue("BufferedImage must be reused", + img1.getBufferedImage() == img2.getBufferedImage()); + + assertEquals(1, statistics.getImageCacheHits()); + assertEquals(1, statistics.getImageCacheMisses()); + } + + /** + * Tests the image cache reusing a cacheable Image created by one of the ImageConverters in + * a converter pipeline. + * @throws Exception if an error occurs + */ + public void testImageCache2() throws Exception { + FopFactory fopFactory = createFopFactory(); + + FOUserAgent userAgent = fopFactory.newFOUserAgent(); + ImageManager manager = fopFactory.getImageManager(); + + String valid1 = "test/resources/images/img-w-size.svg"; + + ImageCacheStatistics statistics = new ImageCacheLoggingStatistics(true); + manager.getCache().setCacheListener(statistics); + + ImageSessionContext session = userAgent.getImageSessionContext(); + ImageInfo info = manager.getImageInfo(valid1, session); + assertNotNull(info); + + ImageBuffered img1 = (ImageBuffered)manager.getImage( + info, ImageFlavor.BUFFERED_IMAGE, session); + assertNotNull(img1); + assertNotNull(img1.getBufferedImage()); + + ImageBuffered img2 = (ImageBuffered)manager.getImage( + info, ImageFlavor.BUFFERED_IMAGE, session); + //ImageBuffered does not have to be the same instance but we want at least the + //BufferedImage to be reused. + assertTrue("BufferedImage must be reused", + img1.getBufferedImage() == img2.getBufferedImage()); + + assertEquals(1, statistics.getImageCacheHits()); //1=BufferedImage + assertEquals(3, statistics.getImageCacheMisses()); //3=BufferedImage,Graphics2DImage,DOM + } + +} Propchange: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/cache/ImageCacheTestCase.java ------------------------------------------------------------------------------ svn:keywords = Id --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
