Author: jeremias
Date: Tue Mar 10 07:55:20 2009
New Revision: 752010

URL: http://svn.apache.org/viewvc?rev=752010&view=rev
Log:
AreaTreeParser redirecting image loading exceptions to event subsystem.

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java?rev=752010&r1=752009&r2=752010&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java 
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java Tue 
Mar 10 07:55:20 2009
@@ -21,6 +21,8 @@
 
 import java.awt.Color;
 import java.awt.geom.Rectangle2D;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.nio.CharBuffer;
 import java.util.List;
 import java.util.Map;
@@ -41,6 +43,7 @@
 
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
+import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.AttributesImpl;
 import org.xml.sax.helpers.DefaultHandler;
@@ -48,6 +51,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.apache.xmlgraphics.image.loader.ImageException;
 import org.apache.xmlgraphics.image.loader.ImageInfo;
 import org.apache.xmlgraphics.image.loader.ImageManager;
 import org.apache.xmlgraphics.image.loader.ImageSessionContext;
@@ -68,6 +72,7 @@
 import org.apache.fop.area.inline.TextArea;
 import org.apache.fop.area.inline.Viewport;
 import org.apache.fop.area.inline.WordArea;
+import org.apache.fop.events.ResourceEventProducer;
 import org.apache.fop.fo.Constants;
 import org.apache.fop.fo.ElementMappingRegistry;
 import org.apache.fop.fo.expr.PropertyException;
@@ -149,6 +154,7 @@
         private Stack delegateStack = new Stack();
         private ContentHandler delegate;
         private DOMImplementation domImplementation;
+        private Locator locator;
 
 
         public Handler(AreaTreeModel treeModel, FOUserAgent userAgent,
@@ -224,6 +230,15 @@
         }
 
         /** {...@inheritdoc} */
+        public void setDocumentLocator(Locator locator) {
+            this.locator = locator;
+        }
+
+        private Locator getLocator() {
+            return this.locator;
+        }
+
+        /** {...@inheritdoc} */
         public void startElement(String uri, String localName, String qName, 
Attributes attributes)
                     throws SAXException {
             if (delegate != null) {
@@ -1056,8 +1071,21 @@
                                     = userAgent.getImageSessionContext();
                                 ImageInfo info = manager.getImageInfo(uri, 
sessionContext);
                                 bkg.setImageInfo(info);
-                            } catch (Exception e) {
-                                log.error("Background image not available: " + 
uri, e);
+                            } catch (ImageException e) {
+                                ResourceEventProducer eventProducer
+                                    = ResourceEventProducer.Provider.get(
+                                        this.userAgent.getEventBroadcaster());
+                                eventProducer.imageError(this, uri, e, 
getLocator());
+                            } catch (FileNotFoundException fnfe) {
+                                ResourceEventProducer eventProducer
+                                    = ResourceEventProducer.Provider.get(
+                                        this.userAgent.getEventBroadcaster());
+                                eventProducer.imageNotFound(this, uri, fnfe, 
getLocator());
+                            } catch (IOException ioe) {
+                                ResourceEventProducer eventProducer
+                                    = ResourceEventProducer.Provider.get(
+                                        this.userAgent.getEventBroadcaster());
+                                eventProducer.imageIOError(this, uri, ioe, 
getLocator());
                             }
 
                             String repeat = attributes.getValue("bkg-repeat");



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to