]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #36432:
authorJeremias Maerki <jeremias@apache.org>
Wed, 31 Aug 2005 08:53:25 +0000 (08:53 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 31 Aug 2005 08:53:25 +0000 (08:53 +0000)
JAI image does not release all resources - reported by Stephen Denne - thanks!
When loading an image provider whose support libraries are missing an
exception is thrown which should really only be a warning and the next provider
be tried.
Submitted by: Manuel Mall <mm.at.arcus.com.au>

Changes to the patch by JM:
Log level for the warning changed to debug() because the binary distribution is compiled with JAI and JIMI support and this will cause a lot of inappropriate warnings for people just happy with ImageIO images.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@264978 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/image/ImageFactory.java
src/java/org/apache/fop/image/JAIImage.java

index bc225895835e180ed49cb7b7626215d0bfb70697..8379cda856e5869cdd4bbfdc59aa71c4c1dfbee1 100644 (file)
@@ -594,6 +594,15 @@ class ImageProvider {
                 clazz = Class.forName(getClassName());
             } catch (ClassNotFoundException cnfe) {
                 //nop
+            } catch (LinkageError le) {
+                // This can happen if fop was build with support for a
+                // particular provider (e.g. a binary fop distribution)
+                // but the required support files (e.g. jai, jimi) are not
+                // available in the current runtime environment.
+                ImageFactory.log.debug("Image support provider " + getName() 
+                    + " could not be loaded. If " + getName() + " should be" 
+                    + " available please make sure all required external libraries" 
+                    + " are on the classpath.");
             }
             checked = true;
         }
index c5fcd2304c1b442a90d5e6a459d83fcf1ffcfefa..5e71f9902f7f111050fb0baea425435d79c68fc1 100644 (file)
@@ -75,9 +75,10 @@ public class JAIImage extends AbstractFopImage {
      */
     protected void loadImage() {
         com.sun.media.jai.codec.FileCacheSeekableStream seekableInput = null;
+        RenderedOp imageOp = null;
         try {
             seekableInput = new FileCacheSeekableStream(inputStream);
-            RenderedOp imageOp = JAI.create("stream", seekableInput);
+            imageOp = JAI.create("stream", seekableInput);
 
             this.height = imageOp.getHeight();
             this.width = imageOp.getWidth();
@@ -167,6 +168,9 @@ public class JAIImage extends AbstractFopImage {
         } finally {
             IOUtils.closeQuietly(inputStream);
             inputStream = null;
+            if (imageOp != null) {
+                imageOp.dispose();
+            }
             if (seekableInput != null) {
                 IOUtils.closeQuietly(seekableInput);
             }