You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2007/12/04 11:27:55 UTC

svn commit: r600870 [3/3] - in /xmlgraphics/fop/branches/Temp_ImagePackageRedesign: src/java/org/apache/fop/apps/ src/java/org/apache/fop/area/ src/java/org/apache/fop/fo/flow/ src/java/org/apache/fop/image2/ src/java/org/apache/fop/image2/cache/ src/j...

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);
+    }
+
+    /** {@inheritDoc} */
+    public void invalidHit(String uri) {
+        super.invalidHit(uri);
+        log.info("Invalid HIT: " + uri);
+    }
+
+    /** {@inheritDoc} */
+    public void cacheHitImage(ImageKey key) {
+        super.cacheHitImage(key);
+        log.info("Image Cache HIT: " + key);
+    }
+
+    /** {@inheritDoc} */
+    public void cacheHitImageInfo(String uri) {
+        super.cacheHitImageInfo(uri);
+        log.info("ImageInfo Cache HIT: " + uri);
+    }
+
+    /** {@inheritDoc} */
+    public void cacheMissImage(ImageKey key) {
+        super.cacheMissImage(key);
+        log.info("Image Cache MISS: " + key);
+    }
+
+    /** {@inheritDoc} */
+    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: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org