]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
PR:
authorGlen Mazza <gmazza@apache.org>
Mon, 6 Sep 2004 18:28:17 +0000 (18:28 +0000)
committerGlen Mazza <gmazza@apache.org>
Mon, 6 Sep 2004 18:28:17 +0000 (18:28 +0000)
Obtained from:
Submitted by:
Reviewed by:
Switched to a static FOInputHandler object for the FOTree instead of relying on recursion to get to the FOInputHandler object stored at pagination.Root.

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

src/java/org/apache/fop/fo/FONode.java
src/java/org/apache/fop/fo/FOTreeBuilder.java
src/java/org/apache/fop/fo/pagination/Root.java

index 193b92e5761cde58e3a53649c192e109d741a99e..c42577f7c4b2e72aa6053efd6a75c63f4d711c1e 100644 (file)
@@ -41,6 +41,12 @@ public abstract class FONode {
 
     protected static String FO_URI = FOElementMapping.URI;
 
+    /** 
+     * FOInputHandler that handles FO events occurring 
+     * during FO Tree processing.
+     */
+    protected static FOInputHandler foInputHandler = null;
+
     /** Parent FO node */
     protected FONode parent;
 
@@ -72,13 +78,21 @@ public abstract class FONode {
         }
     }
 
+    /**
+     * Sets the FOInputHandler that the FOTree processing fires events to
+     * @param inputHandler the FOInputHandler subclass to send FO events to
+     */
+    public static void setFOInputHandler(FOInputHandler inputHandler) {
+        FONode.foInputHandler = inputHandler;
+    } 
+
     /**
      * Recursively goes up the FOTree hierarchy until the fo:root is found,
      * which returns the parent FOInputHandler.
      * @return the FOInputHandler object that is the parent of the FO Tree
      */
     public FOInputHandler getFOInputHandler() {
-        return parent.getFOInputHandler();
+        return FONode.foInputHandler;
     }
 
     /**
index da0f6f6c9c1497d9fc25a2fc267fb7b06489913a..a5b94d97817426b6c1ede147711976be3f0be312 100644 (file)
@@ -217,6 +217,7 @@ public class FOTreeBuilder extends DefaultHandler {
      */
     public void startDocument() throws SAXException {
         rootFObj = null;    // allows FOTreeBuilder to be reused
+        FONode.setFOInputHandler(foInputHandler);
         if (log.isDebugEnabled()) {
             log.debug("Building formatting object tree");
         }
@@ -273,7 +274,6 @@ public class FOTreeBuilder extends DefaultHandler {
 
         if (rootFObj == null) {
             rootFObj = (Root) foNode;
-            rootFObj.setFOInputHandler(foInputHandler);
         } else {
             currentFObj.addChildNode(foNode);
         }
index a879f94695ec21fbf977187fac715eb4298b47f1..71e0c5ffe4dd6db4f21d6123c6039cd41bd8e293 100644 (file)
@@ -49,11 +49,6 @@ public class Root extends FObj {
      */
     private int runningPageNumberCounter = 0;
 
-    /** 
-     * Controlling FOTreeHandler object for this FO Tree
-     */
-    private FOInputHandler foInputHandler = null;
-
     /**
      * @see org.apache.fop.fo.FONode#FONode(FONode)
      */
@@ -202,26 +197,6 @@ public class Root extends FObj {
         return bookmarks;
     }
 
-    /**
-     * Sets the Document that this Root is attached to
-     * @param document the apps.Document implementation to which this Root
-     * is attached
-     */
-    public void setFOInputHandler(FOInputHandler foInputHandler) {
-        this.foInputHandler = foInputHandler;
-    }
-
-    /**
-     * This method overrides the FONode version. The FONode version calls the
-     * method by the same name for the parent object. Since Root is at the top
-     * of the tree, it returns the actual FOInputHandler object. Thus, any FONode
-     * can use this chain to find which FOInputHandler it is being built for.
-     * @return the FOInputHandler implementation that this Root is attached to
-     */
-    public FOInputHandler getFOInputHandler() {
-        return foInputHandler;
-    }
-
     /**
      * @see org.apache.fop.fo.FObj#getName()
      */