Author: jeremias
Date: Fri Mar  7 06:31:43 2008
New Revision: 634692

URL: http://svn.apache.org/viewvc?rev=634692&view=rev
Log:
More FO tree stuff switched to events.

Added:
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
   (with props)
Modified:
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/EventFormatter.xml
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/Float.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiCase.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiProperties.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiPropertySet.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiSwitch.java
    
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiToggle.java

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/EventFormatter.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/EventFormatter.xml?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/EventFormatter.xml
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/EventFormatter.xml
 Fri Mar  7 06:31:43 2008
@@ -25,8 +25,8 @@
   <message key="org.apache.fop.fo.FOValidationEventProducer.tooManyNodes">For 
"{elementName}", only one "{offendingNode}" may be 
declared.{{locator}}</message>
   <message 
key="org.apache.fop.fo.FOValidationEventProducer.nodeOutOfOrder">For 
"{elementName}", "{tooLateNode}" must be declared before 
"{tooEarlyNode}"!{{locator}}</message>
   <message 
key="org.apache.fop.fo.FOValidationEventProducer.invalidChild">"{offendingNode}"
 is not a valid child element of "{elementName}"![ 
{ruleViolated,lookup}]{{locator}}</message>
-  <message 
key="org.apache.fop.fo.FOValidationEventProducer.missingChildElement">"{elementName}"
 is missing child elements.
-Required content model: {contentModel}{{locator}}</message>
+  <message 
key="org.apache.fop.fo.FOValidationEventProducer.missingChildElement">"{elementName}"
 is missing child elements.[
+Required content model: {contentModel}]{{locator}}</message>
   <message 
key="org.apache.fop.fo.FOValidationEventProducer.missingProperty">Element 
"{elementName}" is missing required property 
"{propertyName}"!{{locator}}</message>
   <message 
key="org.apache.fop.fo.FOValidationEventProducer.idNotUnique">Property ID 
"{id}" (found on "{elementName}") previously used; ID values must be unique 
within a document!{severity,equals,EventSeverity:FATAL,,
 Any reference to it will be considered a reference to the first occurrence in 
the document.}{{locator}}</message>
@@ -46,4 +46,8 @@
   <message 
key="org.apache.fop.fo.flow.table.TableEventProducer.paddingNotApplicable">padding-*
 properties are not applicable to {elementName}, but a non-zero value for 
padding was found.{{locator}}</message>
   <message 
key="org.apache.fop.fo.flow.table.TableEventProducer.cellOverlap">{elementName} 
overlaps in column {column}.<!-- no locator here, exception will be wrapped 
--></message>
   <message 
key="org.apache.fop.fo.FOValidationEventProducer.missingLinkDestination">Missing
 attribute on {elementName}: Either external-destination or 
internal-destination must be specified.{{locator}}</message>
+  <message 
key="org.apache.fop.events.ResourceEventProducer.imageNotFound">Image not 
found. URI: {uri}{{locator}}</message>
+  <message key="org.apache.fop.events.ResourceEventProducer.imageError">Image 
not available. URI: {uri}. Reason: {e}{{locator}}</message>
+  <message key="org.apache.fop.events.ResourceEventProducer.imageIOError">I/O 
error while loading image.  URI: {uri}. Reason: {ioe}{{locator}}</message>
+  <message 
key="org.apache.fop.events.ResourceEventProducer.ifoNoIntrinsiceSize">The 
intrinsic dimensions of an instream-foreign-object could not be 
determined.{{locator}}</message>
 </catalogue>

Added: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java?rev=634692&view=auto
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
 (added)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
 Fri Mar  7 06:31:43 2008
@@ -0,0 +1,87 @@
+/*
+ * 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.events;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.xml.sax.Locator;
+
+import org.apache.xmlgraphics.image.loader.ImageException;
+
+/**
+ * Event producer interface for resource events (missing images, fonts etc.).
+ */
+public interface ResourceEventProducer extends EventProducer {
+
+    /**
+     * Factory class for the event producer.
+     */
+    class Factory {
+        
+        /**
+         * Creates a new event producer.
+         * @param broadcaster the event broadcaster to use
+         * @return the new event producer
+         */
+        public static ResourceEventProducer create(EventBroadcaster 
broadcaster) {
+            return (ResourceEventProducer)broadcaster.getEventProducerFor(
+                    ResourceEventProducer.class);
+        }
+    }
+
+    /**
+     * Image not found.
+     * @param source the event source
+     * @param uri the original URI of the image
+     * @param fnfe the "file not found" exception
+     * @param loc the location of the error or null
+     * @event.severity ERROR
+     */
+    void imageNotFound(Object source, String uri, FileNotFoundException fnfe, 
Locator loc);
+    
+    /**
+     * Error while processing image.
+     * @param source the event source
+     * @param uri the original URI of the image
+     * @param e the image exception
+     * @param loc the location of the error or null
+     * @event.severity ERROR
+     */
+    void imageError(Object source, String uri, ImageException e, Locator loc);
+    
+    /**
+     * I/O error while processing image.
+     * @param source the event source
+     * @param uri the original URI of the image
+     * @param ioe the I/O exception
+     * @param loc the location of the error or null
+     * @event.severity ERROR
+     */
+    void imageIOError(Object source, String uri, IOException ioe, Locator loc);
+
+    /**
+     * Intrinsic size of fo:instream-foreign-object could not be determined.
+     * @param source the event source
+     * @param loc the location of the error or null
+     * @event.severity ERROR
+     */
+    void ifoNoIntrinsiceSize(Object source, Locator loc);
+}

Propchange: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/events/ResourceEventProducer.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/ExternalGraphic.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
 Fri Mar  7 06:31:43 2008
@@ -32,6 +32,7 @@
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.datatypes.Length;
 import org.apache.fop.datatypes.URISpecification;
+import org.apache.fop.events.ResourceEventProducer;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.PropertyList;
 import org.apache.fop.fo.ValidationException;
@@ -78,11 +79,17 @@
         try {
             info = manager.getImageInfo(url, 
userAgent.getImageSessionContext());
         } catch (ImageException e) {
-            log.error("Image not available: " + e.getMessage());
+            ResourceEventProducer eventProducer = 
ResourceEventProducer.Factory.create(
+                    getUserAgent().getEventBroadcaster());
+            eventProducer.imageError(this, url, e, getLocator());
         } catch (FileNotFoundException fnfe) {
-            log.error(fnfe.getMessage());
+            ResourceEventProducer eventProducer = 
ResourceEventProducer.Factory.create(
+                    getUserAgent().getEventBroadcaster());
+            eventProducer.imageNotFound(this, url, fnfe, getLocator());
         } catch (IOException ioe) {
-            log.error("I/O error while loading image: " + ioe.getMessage());
+            ResourceEventProducer eventProducer = 
ResourceEventProducer.Factory.create(
+                    getUserAgent().getEventBroadcaster());
+            eventProducer.imageIOError(this, url, ioe, getLocator());
         }
         if (info != null) {
             this.intrinsicWidth = info.getSize().getWidthMpt();
@@ -93,7 +100,6 @@
                     = FixedLength.getInstance(-baseline);
             }
         }
-        //TODO Report to caller so he can decide to throw an exception
     }
 
     /** [EMAIL PROTECTED] */

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/Float.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/Float.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/Float.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/Float.java
 Fri Mar  7 06:31:43 2008
@@ -46,7 +46,8 @@
         super(parent);
         
         if (!notImplementedWarningGiven) {
-            log.warn("fo:float is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
 Fri Mar  7 06:31:43 2008
@@ -20,12 +20,17 @@
 package org.apache.fop.fo.flow;
 
 import java.awt.geom.Point2D;
+
+import org.xml.sax.Locator;
+
+import org.apache.xmlgraphics.util.QName;
+
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.datatypes.Length;
+import org.apache.fop.events.ResourceEventProducer;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.ValidationException;
 import org.apache.fop.fo.XMLObj;
-import org.xml.sax.Locator;
 
 /**
  * Class modelling the fo:instream-foreign-object object.
@@ -68,11 +73,11 @@
      * XSL Content Model: one (1) non-XSL namespace child
      */
     protected void validateChildNode(Locator loc, String nsURI, String 
localName) 
-        throws ValidationException {
+                throws ValidationException {
         if (FO_URI.equals(nsURI)) {
             invalidChildError(loc, nsURI, localName);
         } else if (firstChild != null) {
-            tooManyNodesError(loc, "child element");
+            tooManyNodesError(loc, new QName(nsURI, null, localName));
         }
     }
 
@@ -81,32 +86,27 @@
         return "instream-foreign-object";
     }
     
-    /**
-     * [EMAIL PROTECTED]
-     */
+    /** [EMAIL PROTECTED] */
     public int getNameId() {
         return FO_INSTREAM_FOREIGN_OBJECT;
     }
 
-    /**
-     * Preloads the image so the intrinsic size is available.
-     */
+    /** Preloads the image so the intrinsic size is available. */
     private void prepareIntrinsicSize() {
         if (intrinsicDimensions == null) {
             XMLObj child = (XMLObj) firstChild;
             Point2D csize = new Point2D.Float(-1, -1);
             intrinsicDimensions = child.getDimension(csize);
             if (intrinsicDimensions == null) {
-                log.error("Intrinsic dimensions of "
-                        + " instream-foreign-object could not be determined");
+                ResourceEventProducer eventProducer = 
ResourceEventProducer.Factory.create(
+                        getUserAgent().getEventBroadcaster());
+                eventProducer.ifoNoIntrinsiceSize(this, getLocator());
             }
             intrinsicAlignmentAdjust = child.getIntrinsicAlignmentAdjust();
         }
     }
 
-    /**
-     * [EMAIL PROTECTED]
-     */
+    /** [EMAIL PROTECTED] */
     public int getIntrinsicWidth() {
         prepareIntrinsicSize();
         if (intrinsicDimensions != null) {
@@ -116,9 +116,7 @@
         }
     }
 
-    /**
-     * [EMAIL PROTECTED]
-     */
+    /** [EMAIL PROTECTED] */
     public int getIntrinsicHeight() {
         prepareIntrinsicSize();
         if (intrinsicDimensions != null) {
@@ -128,11 +126,8 @@
         }
     }
 
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public  Length getIntrinsicAlignmentAdjust()
-    {
+    /** [EMAIL PROTECTED] */
+    public  Length getIntrinsicAlignmentAdjust() {
         prepareIntrinsicSize();
         return intrinsicAlignmentAdjust;
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiCase.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiCase.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiCase.java
 Fri Mar  7 06:31:43 2008
@@ -46,7 +46,8 @@
         super(parent);
 
         if (!notImplementedWarningGiven) {
-            log.warn("fo:multi-case is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiProperties.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiProperties.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiProperties.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiProperties.java
 Fri Mar  7 06:31:43 2008
@@ -49,7 +49,8 @@
         super(parent);
 
         if (!notImplementedWarningGiven) {
-            log.warn("fo:multi-properties is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiPropertySet.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiPropertySet.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiPropertySet.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiPropertySet.java
 Fri Mar  7 06:31:43 2008
@@ -45,7 +45,8 @@
         super(parent);
 
         if (!notImplementedWarningGiven) {
-            log.warn("fo:multi-property-set is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiSwitch.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiSwitch.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiSwitch.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiSwitch.java
 Fri Mar  7 06:31:43 2008
@@ -47,7 +47,8 @@
         super(parent);
 
         if (!notImplementedWarningGiven) {
-            log.warn("fo:multi-switch is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }

Modified: 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiToggle.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiToggle.java?rev=634692&r1=634691&r2=634692&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiToggle.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/fo/flow/MultiToggle.java
 Fri Mar  7 06:31:43 2008
@@ -47,7 +47,8 @@
         super(parent);
 
         if (!notImplementedWarningGiven) {
-            log.warn("fo:multi-toggle is not yet implemented.");
+            getFOValidationEventProducer().unimplementedFeature(this, 
getName(),
+                    getName(), getLocator());
             notImplementedWarningGiven = true;
         }
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to