]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1. validation for fo:basic-link added
authorGlen Mazza <gmazza@apache.org>
Sat, 31 Jul 2004 00:44:23 +0000 (00:44 +0000)
committerGlen Mazza <gmazza@apache.org>
Sat, 31 Jul 2004 00:44:23 +0000 (00:44 +0000)
2.  "name" data element removed from FONode, added to its XMLObj subclass (FObj subclasses'  getName() uses a string constant instead.)

3.  isBlockOrInlineItem() convenience method added to FObj

4.  setup() methods within FO's switched to private access.

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

21 files changed:
src/java/org/apache/fop/fo/FONode.java
src/java/org/apache/fop/fo/FOText.java
src/java/org/apache/fop/fo/FObj.java
src/java/org/apache/fop/fo/FObjMixed.java
src/java/org/apache/fop/fo/ToBeImplementedElement.java
src/java/org/apache/fop/fo/XMLObj.java
src/java/org/apache/fop/fo/flow/BasicLink.java
src/java/org/apache/fop/fo/flow/ExternalGraphic.java
src/java/org/apache/fop/fo/flow/Float.java
src/java/org/apache/fop/fo/flow/Leader.java
src/java/org/apache/fop/fo/flow/PageNumber.java
src/java/org/apache/fop/fo/flow/PageNumberCitation.java
src/java/org/apache/fop/fo/flow/TableCaption.java
src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
src/java/org/apache/fop/fo/pagination/Flow.java
src/java/org/apache/fop/fo/pagination/PageSequence.java
src/java/org/apache/fop/fo/pagination/Region.java
src/java/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java
src/java/org/apache/fop/fo/pagination/SinglePageMasterReference.java
src/java/org/apache/fop/fo/pagination/StaticContent.java
src/java/org/apache/fop/layoutmgr/AddLMVisitor.java

index 41a70a913e847c13646898610332f1fc8c54bb6d..54ffcd6f234866e0437251e1128c5317a3892c69 100644 (file)
@@ -47,9 +47,6 @@ public abstract class FONode {
     /** Parent FO node */
     protected FONode parent;
 
-    /** Name of the node */
-    protected String name;
-
     /** Marks input file containing this object **/
     public String systemId;
 
@@ -118,7 +115,6 @@ public abstract class FONode {
     */
     public void processNode(String elementName, Locator locator, Attributes attlist) throws FOPException {
         System.out.println("name = " + elementName);
-        this.name = elementName;
     }
 
     /**
@@ -126,7 +122,7 @@ public abstract class FONode {
      * @return the name of this object
      */
     public String getName() {
-        return this.name;
+        return null;
     }
 
     /**
index cba30e179a3602e0267fad3bae201db103041a32..b94bf75f1e57e93f06ec959c5a74f6a33c148c72 100644 (file)
@@ -431,16 +431,6 @@ public class FOText extends FObj {
         }
     }
 
-    /**
-     * This is a hook for the AddLMVisitor class to be able to access
-     * this object.
-     * @param aLMV the AddLMVisitor object that can access this object.
-     */
-    public void acceptVisitor(AddLMVisitor aLMV) {
-        aLMV.serveFOText(this);
-    }
-
-    
     private class TextCharIterator extends AbstractCharIterator {
         private int curIndex = 0;
 
@@ -496,5 +486,17 @@ public class FOText extends FObj {
         }
 
     }
-    
+
+    public String getName() {
+        return "fo:text";
+    }
+
+    /**
+     * This is a hook for the AddLMVisitor class to be able to access
+     * this object.
+     * @param aLMV the AddLMVisitor object that can access this object.
+     */
+    public void acceptVisitor(AddLMVisitor aLMV) {
+        aLMV.serveFOText(this);
+    }
 }
index c77dcc9a3a7b13e24c80e49f104df0a598a6f992..702a78683da1d71af22271e663443ff6f8414003 100644 (file)
@@ -45,31 +45,30 @@ public class FObj extends FONode implements Constants {
     /** Property manager for providing refined properties/traits. */
     protected PropertyManager propMgr;
 
-    /** Id of this fo element of null if no id. */
-    protected String id = null;
-
     /** The immediate child nodes of this node. */
     public ArrayList childNodes = null;
 
+    /** Used to indicate if this FO is either an Out Of Line FO (see rec)
+        or a descendant of one.  Used during validateChildNode() FO 
+        validation.
+    */
+    private boolean isOutOfLineFODescendant = false;
+
+    /** Id of this fo element or null if no id. */
+    protected String id = null;
+
     /** Markers added to this element. */
     protected Map markers = null;
 
     /** Dynamic layout dimension. Used to resolve relative lengths. */
     protected Map layoutDimension = null;
 
-    /** During input FO validation, certain FO's are not valid as
-        child nodes if they would be a descendant of an Out Of Line 
-        Formatting Object as defined in specification (See Sect. 6.2
-        of spec.)  This value is also set to true if this object 
-        itself is an Out Of Line FO.
-    */
-    protected boolean isOutOfLineFODescendant = false;
-
     /**
      * Create a new formatting object.
      * All formatting object classes extend this class.
      *
      * @param parent the parent node
+     * @todo move propertyListTable initialization someplace else?
      */
     public FObj(FONode parent) {
         super(parent);
@@ -95,16 +94,6 @@ public class FObj extends FONode implements Constants {
         }
     }
 
-    /**
-     * Used to indicate if this FO is the descendant of an out-of-line
-     * formatting object  (From Sect. 6.10, fo:float, fo:footnote, 
-     * fo:footnote-body).  Important for validating child nodes.
-     * @return true if descendant, false otherwise
-     */
-    public boolean getIsOutOfLineFODescendant() {
-        return isOutOfLineFODescendant;
-    }
-
     /**
      * @see org.apache.fop.fo.FONode#processNode
      */
@@ -114,15 +103,6 @@ public class FObj extends FONode implements Constants {
         addProperties(attlist);
     }
 
-    /**
-     * Set the name of this element.
-     * The prepends "fo:" to the name to indicate it is in the fo namespace.
-     * @param str the xml element name
-     */
-    public void setName(String str) {
-        name = "fo:" + str;
-    }
-
     /**
      * Set properties for this FO based on node attributes
      * @param attlist Collection of attributes passed to us from the parser.
@@ -141,6 +121,14 @@ public class FObj extends FONode implements Constants {
         setWritingMode();
     }
 
+    /**
+     * Returns Out Of Line FO Descendant indicator.
+     * @return true if Out of Line FO or Out Of Line descendant, false otherwise
+     */
+    public boolean getIsOutOfLineFODescendant() {
+        return isOutOfLineFODescendant;
+    }
+
     /**
      * Return the PropertyManager object for this FO.  PropertyManager
      * tends to hold the traits for this FO, and is primarily used in layout.
@@ -174,7 +162,7 @@ public class FObj extends FONode implements Constants {
      */
     protected void addChildNode(FONode child) {
         if (containsMarkers() && "fo:marker".equals(child.getName())) {
-            addMarker((Marker)child);
+            addMarker((Marker) child);
         } else {
             if (childNodes == null) {
                 childNodes = new ArrayList();
@@ -347,7 +335,8 @@ public class FObj extends FONode implements Constants {
     /**
      * Check if this formatting object may contain markers.
      *
-     * @return true if this can contian markers
+     * @return true if this can contain markers
+     * @todo confirm if still needed after validateChildNode() fully implemented
      */
     protected boolean containsMarkers() {
         return false;
@@ -511,6 +500,18 @@ public class FObj extends FONode implements Constants {
             || isNeutralItem(nsURI, lName)));
     }
 
+    /**
+     * Convenience method for validity checking.  Checks if the
+     * incoming node is a member of the "%block;" parameter entity
+     * or "%inline;" parameter entity
+     * @param nsURI namespace URI of incoming node
+     * @param lName local name (i.e., no prefix) of incoming node 
+     * @return true if a member, false if not
+     */
+    protected boolean isBlockOrInlineItem(String nsURI, String lName) {
+        return (isBlockItem(nsURI, lName) || isInlineItem(nsURI, lName));
+    }
+
     /**
      * Convenience method for validity checking.  Checks if the
      * incoming node is a member of the neutral item list
index 38cf73405042dc31393550829ee0861e709aeed4..0bfc091d508b11b71bddf4dd9e03ac6cf0b772da 100644 (file)
@@ -53,7 +53,6 @@ public class FObjMixed extends FObj {
 
         FOText ft = new FOText(data, start, length, textInfo, this);
         ft.setLocation(locator);
-        ft.setName("text");
         
         /* characters() processing empty for FOTreeHandler, not empty for RTF & MIFHandlers */
         getFOInputHandler().characters(ft.ca, ft.startIndex, ft.endIndex);
index 80f3691a1eed35c6d2a8fc7d19210d2eb1650675..7c77741f47c5690417069341494ff5bef8f07da4 100644 (file)
@@ -32,11 +32,6 @@ public class ToBeImplementedElement extends FObj {
         super(parent);
     }
 
-    private void setup() {
-        getLogger().debug("This element \"" + this.name
-                             + "\" is not yet implemented.");
-    }
-
     /**
      * This is a hook for the AddLMVisitor class to be able to access
      * this object.
index 952c0639fca7ad42c4890851e409cab1d92b6420..f74607245331a1dd3b7aa1b75f0d1d2af82b64ce 100644 (file)
@@ -47,6 +47,9 @@ public abstract class XMLObj extends FONode {
     /** DOM document containing this node */
     protected Document doc;
 
+    /** Name of the node */
+    protected String name;
+
     /**
      *
      * @param parent the parent formatting object
@@ -75,6 +78,14 @@ public abstract class XMLObj extends FONode {
          return null;
     }
 
+    /**
+     * Returns the name of the object
+     * @return the name of this object
+     */
+    public String getName() {
+        return name;
+    }
+
     /**
      * @return string containing the namespace for this node
      */
index d71d73ecdf3b8ee24d77973e1e688731f3642c7f..4a4821bd7fd3628b6474a8f9a18e4c7954c59d25 100644 (file)
@@ -20,10 +20,12 @@ package org.apache.fop.fo.flow;
 
 // XML
 import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
 import org.xml.sax.SAXParseException;
 
 // FOP
 import org.apache.fop.apps.FOPException;
+import org.apache.fop.fo.FOElementMapping;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.layoutmgr.AddLMVisitor;
 import org.apache.fop.fo.properties.CommonAccessibility;
@@ -39,10 +41,12 @@ import org.apache.fop.fo.properties.CommonRelativePosition;
  * that are created by the fo element.
  */
 public class BasicLink extends Inline {
-
     private String link = null;
     private boolean external = false;
 
+    // used for FO validation
+    private boolean blockOrInlineItemFound = false;
+
     /**
      * @param parent FONode that is the parent of this object
      */
@@ -58,7 +62,53 @@ public class BasicLink extends Inline {
         getFOInputHandler().startLink(this);
     }
 
-    public void setup() {
+    /**
+     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+     * XSL Content Model: marker* (#PCDATA|%inline;|%block;)*
+     */
+    protected void validateChildNode(Locator loc, String nsURI, String localName) 
+        throws SAXParseException {
+        if (nsURI == FOElementMapping.URI && localName.equals("marker")) {
+            if (blockOrInlineItemFound) {
+               nodesOutOfOrderError(loc, "fo:marker", "(#PCDATA|%inline;|%block;)");
+            }
+        } else if (!isBlockOrInlineItem(nsURI, localName)) {
+            invalidChildError(loc, nsURI, localName);
+        } else {
+            blockOrInlineItemFound = true;
+        }
+    }
+
+    /**
+     * @see org.apache.fop.fo.FONode#end
+     */
+    protected void endOfNode() throws SAXParseException {
+        super.endOfNode();
+        getFOInputHandler().endLink();
+    }
+
+    /**
+     * @return the String value of the link
+     */
+    public String getLink() {
+        return link;
+    }
+
+    /**
+     * @return true if the link is external, false otherwise
+     */
+    public boolean getExternal() {
+        return external;
+    }
+
+    public String getName() {
+        return "fo:basic-link";
+    }
+
+    /**
+     * @todo check if needed; not being called currently
+     */
+    private void setup() {
         String destination;
         int linkType;
 
@@ -78,15 +128,11 @@ public class BasicLink extends Inline {
         // Common Relative Position Properties
         CommonRelativePosition mRelProps = propMgr.getRelativePositionProps();
 
-        // this.propertyList.get("alignment-adjust");
-        // this.propertyList.get("alignment-baseline");
-        // this.propertyList.get("baseline-shift");
-        // this.propertyList.get("destination-place-offset");
-        // this.propertyList.get("dominant-baseline");
         String ext =  propertyList.get(PR_EXTERNAL_DESTINATION).getString();
         setupID();
-        // this.propertyList.get("indicate-destination");
+
         String internal = propertyList.get(PR_INTERNAL_DESTINATION).getString();
+
         if (ext.length() > 0) {
             link = ext;
             external = true;
@@ -95,57 +141,22 @@ public class BasicLink extends Inline {
         } else {
             getLogger().error("basic-link requires an internal or external destination");
         }
-        // this.propertyList.get("keep-together");
-        // this.propertyList.get("keep-with-next");
-        // this.propertyList.get("keep-with-previous");
-        // this.propertyList.get("line-height");
-        // this.propertyList.get("line-height-shift-adjustment");
-        // this.propertyList.get("show-destination");
-        // this.propertyList.get("target-processing-context");
-        // this.propertyList.get("target-presentation-context");
-        // this.propertyList.get("target-stylesheet");
-
     }
 
     /**
      * @return true (BasicLink can contain Markers)
-     */
+    */
     protected boolean containsMarkers() {
         return true;
     }
 
-    /**
-     * @return the String value of the link
-     */
-    public String getLink() {
-        return link;
-    }
-
-    /**
-     * @return true if the link is external, false otherwise
-     */
-    public boolean getExternal() {
-        return external;
-    }
-
     /**
      * This is a hook for the AddLMVisitor class to be able to access
      * this object.
      * @param aLMV the AddLMVisitor object that can access this object.
      */
     public void acceptVisitor(AddLMVisitor aLMV) {
+        setup();
         aLMV.serveBasicLink(this);
     }
-
-    /**
-     * @see org.apache.fop.fo.FONode#end
-     */
-    protected void endOfNode() throws SAXParseException {
-        super.endOfNode();
-        getFOInputHandler().endLink();
-    }
-    
-    public String getName() {
-        return "fo:basic-link";
-    }
 }
index 579fcf649b3b713139ddf220312ffbc62cd37ffe..d1c66374d3399c2f05012a0fbed8ccd225bcfa1d 100644 (file)
@@ -84,7 +84,7 @@ public class ExternalGraphic extends FObj {
      * Setup this image.
      * This gets the sizes for the image and the dimensions and clipping.
      */
-    public void setup() {
+    private void setup() {
         url = this.propertyList.get(PR_SRC).getString();
         if (url == null) {
             return;
@@ -230,15 +230,6 @@ public class ExternalGraphic extends FObj {
         return viewHeight;
     }
 
-    /**
-     * This is a hook for the AddLMVisitor class to be able to access
-     * this object.
-     * @param aLMV the AddLMVisitor object that can access this object.
-     */
-    public void acceptVisitor(AddLMVisitor aLMV) {
-        aLMV.serveExternalGraphic(this);
-    }
-
     public String getURL() {
         return url;
     }
@@ -259,4 +250,13 @@ public class ExternalGraphic extends FObj {
         return "fo:external-graphic";
     }
 
+    /**
+     * This is a hook for the AddLMVisitor class to be able to access
+     * this object.
+     * @param aLMV the AddLMVisitor object that can access this object.
+     */
+    public void acceptVisitor(AddLMVisitor aLMV) {
+       setup();
+       aLMV.serveExternalGraphic(this);
+    }
 }
index f20591f29e1f986db3c9ce1f79ab3d0622454aa9..e92503262facd4f2ba41c1352fe3a644fcf8efbd 100644 (file)
@@ -33,7 +33,6 @@ public class Float extends ToBeImplementedElement {
      */
     public Float(FONode parent) {
         super(parent);
-        this.name = "fo:float";
     }
 
     private void setup() {
index 27288bbee7b09a39365c0bee239e78b289fefa64..2e6003d4a2323d3bbd392d73258696f11f8fcc00 100644 (file)
@@ -53,7 +53,7 @@ public class Leader extends FObjMixed {
         super(parent);
     }
 
-    public void setup() {
+    private void setup() {
 
         // Common Accessibility Properties
         CommonAccessibility mAccProps = propMgr.getAccessibilityProps();
@@ -162,16 +162,17 @@ public class Leader extends FObjMixed {
         return patternWidth;
     }
 
+    public String getName() {
+        return "fo:leader";
+    }
+    
     /**
      * This is a hook for the AddLMVisitor class to be able to access
      * this object.
      * @param aLMV the AddLMVisitor object that can access this object.
      */
     public void acceptVisitor(AddLMVisitor aLMV) {
+        setup();
         aLMV.serveLeader(this);
     }
-
-    public String getName() {
-        return "fo:leader";
-    }
 }
index 3ca50ff189a5ab0c7ccdedddf0018409ea3edbb8..7df1350a5d80a0fbe083e68410ebaa32092d28ba 100644 (file)
@@ -75,7 +75,7 @@ public class PageNumber extends FObj {
         getFOInputHandler().startPageNumber(this);
     }
 
-    public void setup() {
+    private void setup() {
 
         // Common Accessibility Properties
         CommonAccessibility mAccProps = propMgr.getAccessibilityProps();
@@ -129,15 +129,6 @@ public class PageNumber extends FObj {
         return fontState;
     }
 
-    /**
-     * This is a hook for the AddLMVisitor class to be able to access
-     * this object.
-     * @param aLMV the AddLMVisitor object that can access this object.
-     */
-    public void acceptVisitor(AddLMVisitor aLMV) {
-        aLMV.servePageNumber(this);
-    }
-
     protected void endOfNode() throws SAXParseException {
         getFOInputHandler().endPageNumber(this);
     }
@@ -145,4 +136,14 @@ public class PageNumber extends FObj {
     public String getName() {
         return "fo:page-number";
     }
+    
+    /**
+     * This is a hook for the AddLMVisitor class to be able to access
+     * this object.
+     * @param aLMV the AddLMVisitor object that can access this object.
+     */
+    public void acceptVisitor(AddLMVisitor aLMV) {
+       setup();
+       aLMV.servePageNumber(this);
+    }
 }
index a7a5d5f5e4c55a2fc266e4d7dd5b9cc439339b53..e5cd6b0ba6323b8f3097d2e149ecb7e78b23e8c9 100644 (file)
@@ -83,7 +83,7 @@ public class PageNumberCitation extends FObj {
         return width;
     }
 
-    public void setup() {
+    private void setup() {
 
         // Common Accessibility Properties
         CommonAccessibility mAccProps = propMgr.getAccessibilityProps();
@@ -148,10 +148,6 @@ public class PageNumberCitation extends FObj {
         unresolved = isUnresolved;
     }
 
-    public void acceptVisitor(AddLMVisitor aLMV) {
-        aLMV.servePageNumberCitation(this);
-    }
-
     public Font getFontState() {
         return fontState;
     }
@@ -159,4 +155,9 @@ public class PageNumberCitation extends FObj {
     public String getName() {
         return "fo:page-number-citation";
     }
+
+    public void acceptVisitor(AddLMVisitor aLMV) {
+       setup();
+       aLMV.servePageNumberCitation(this);
+    }
 }
index c049f8f1ba4d9f5e2fe40e80650cf15ef59d814c..2b29caef575655f8d77e5aaaa0fe7f19ae522824 100644 (file)
@@ -44,7 +44,7 @@ public class TableCaption extends ToBeImplementedElement {
     /**
      * Initialize property values.
      */
-    public void setup() {
+    private void setup() {
 
         // Common Accessibility Properties
         CommonAccessibility mAccProps = propMgr.getAccessibilityProps();
index 0754a7708beb06a9c6f84a70e5f87d5c29cd42a5..02c9e4fca60b5b506e69bf5dc29e3ab0e83e5ae1 100644 (file)
@@ -56,7 +56,7 @@ public class ConditionalPageMasterReference extends FObj {
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * XSL/FOP Content Model: empty
+     * XSL Content Model: empty
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index 688d61fb73f933b63641f3908a6dae3ab91765b8..d333d13f268ab479658c6cea4da66426b7f745bd 100644 (file)
@@ -58,9 +58,7 @@ public class Flow extends FObj {
      */
     private int contentWidth;
 
-    /**
-     * Content-width of current column area during layout
-     */
+    /** used for FO validation */
     private boolean blockItemFound = false;
 
     /**
@@ -72,7 +70,7 @@ public class Flow extends FObj {
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * XSL/FOP Content Model: marker* (%block;)+
+     * XSL Content Model: marker* (%block;)+
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index eea576a3e6b9a145d3545a6bd25544ad94b61444..3e37adcf5a01d8f02f2f04f9a4eb81ae6e50660e 100644 (file)
@@ -135,7 +135,7 @@ public class PageSequence extends FObj {
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-        XSL/FOP Content Model: (title?,static-content*,flow)
+        XSL Content Model: (title?,static-content*,flow)
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index 9f226ad80dfb99dfae40c0c2d5d5f8daa8def95c..056a651252932e7d23bfffa96217caf333302d35 100644 (file)
@@ -92,7 +92,7 @@ public abstract class Region extends FObj {
             if (isReserved(getRegionName())
                     && !getRegionName().equals(getDefaultRegionName())) {
                 throw new FOPException("region-name '" + regionName
-                        + "' for " + this.name
+                        + "' for " + this.getName()
                         + " not permitted.");
             }
         }
@@ -100,7 +100,7 @@ public abstract class Region extends FObj {
         if (parent instanceof SimplePageMaster) {
             layoutMaster = (SimplePageMaster)parent;
         } else {
-            throw new FOPException(this.name + " must be child "
+            throw new FOPException(this.getName() + " must be child "
                     + "of simple-page-master, not "
                     + parent.getName());
         }
index 69c0d5cc1f0e5608b4a0420e34ecc8bf872f10ef..04f15fdc6f6bd216b9955a3c72c8ec2544c69536 100644 (file)
@@ -52,7 +52,7 @@ public class RepeatablePageMasterReference extends PageMasterReference
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * XSL/FOP Content Model: empty
+     * XSL Content Model: empty
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index 8233fa4129d4400cf09e7bd3a99cce48bcfd54c7..ff43bdb56ee52832c9189bdfcf0aac63a77cd1d3 100644 (file)
@@ -50,7 +50,7 @@ public class SinglePageMasterReference extends PageMasterReference
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * XSL/FOP Content Model: empty
+     * XSL Content Model: empty
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index 7f396f83fcf982c63faf051ea888c6f69400f459..d0b5ef71c4bbb8803a5fd8d18117bbd4cf0cc302 100644 (file)
@@ -47,7 +47,7 @@ public class StaticContent extends Flow {
 
     /**
      * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * XSL/FOP Content Model: (%block;)+
+     * XSL Content Model: (%block;)+
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
         throws SAXParseException {
index 9b2abc76977ff909680e76daa6a5b782ddcb6c96..fbd13e027f02baf00dc50120d345d718318b5720 100644 (file)
@@ -241,7 +241,6 @@ public class AddLMVisitor {
      * Add start and end properties for the link
      */
     public void serveBasicLink(final BasicLink node) {
-        node.setup();
         InlineStackingLayoutManager lm;
         lm = new InlineStackingLayoutManager(node) {
             protected InlineParent createArea() {
@@ -307,7 +306,6 @@ public class AddLMVisitor {
      }
 
      private InlineArea getLeaderInlineArea(Leader node, LayoutManager parentLM) {
-         node.setup();
          InlineArea leaderArea = null;
 
          if (node.getLeaderPattern() == Constants.LeaderPattern.RULE) {
@@ -427,7 +425,6 @@ public class AddLMVisitor {
       * @return the viewport containing the image area
       */
      public InlineArea getExternalGraphicInlineArea(ExternalGraphic node) {
-         node.setup();
          if (node.getURL() == null) {
              return null;
          }
@@ -652,7 +649,6 @@ public class AddLMVisitor {
       * @param lms the list to which the layout manager(s) should be added
       */
      public void servePageNumber(final PageNumber node) {
-         node.setup();
          LayoutManager lm;
          lm = new LeafNodeLayoutManager(node) {
                      public InlineArea get(LayoutContext context) {
@@ -686,7 +682,6 @@ public class AddLMVisitor {
      }
 
      public void servePageNumberCitation(final PageNumberCitation node) {
-         node.setup();
          LayoutManager lm;
          lm = new LeafNodeLayoutManager(node) {
                      public InlineArea get(LayoutContext context) {