]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
An empty table-body is illegal but we'll allow it to make things easier for styleshee...
authorJeremias Maerki <jeremias@apache.org>
Wed, 23 Feb 2005 22:04:01 +0000 (22:04 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 23 Feb 2005 22:04:01 +0000 (22:04 +0000)
Empty table-body elements are removed from their parent so they can't cause any nasty effects in the LMs.

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

src/java/org/apache/fop/fo/FONode.java
src/java/org/apache/fop/fo/FObj.java
src/java/org/apache/fop/fo/flow/TableBody.java

index 4f9707c2d055d23a006a5fd31de11ecd7ed61bfa..ba7832858090f2bda06291e223e487925b5ef3ac 100644 (file)
@@ -197,6 +197,15 @@ public abstract class FONode implements Cloneable {
     protected void addChildNode(FONode child) throws FOPException {
     }
 
+    /**
+     * Removes a child node. Used by the child nodes to remove themselves, for
+     * example table-body if it has no children.
+     * @param child child node to be removed
+     */
+    public void removeChild(FONode child) {
+        //nop
+    }
+
     /**
      * @return the parent node of this node
      */
@@ -410,5 +419,6 @@ public abstract class FONode implements Cloneable {
     public int getNameId() {
         return Constants.FO_UNKNOWN_NODE;
     }
+
 }
 
index 87dc3bb1eb5d8f6065fe3abf1ea93bb7f661b658..b3982bfa5069a9a9ad55399965920ec6e1a75280 100644 (file)
@@ -170,6 +170,13 @@ public abstract class FObj extends FONode implements Constants {
         }
     }
 
+    /** @see org.apache.fop.fo.FONode#removeChild(org.apache.fop.fo.FONode) */
+    public void removeChild(FONode child) {
+        if (childNodes != null) {
+            childNodes.remove(child);
+        }
+    }
+    
     /**
      * Find the nearest parent, grandparent, etc. FONode that is also an FObj
      * @return FObj the nearest ancestor FONode that is an FObj
index 28c182424c19e0df3b59529c78e697b327fb2efe..fd3b42341fa4143e44c601c612c2fd36632e0f4d 100644 (file)
@@ -88,6 +88,11 @@ public class TableBody extends FObj {
      */
     protected void endOfNode() throws FOPException {
         getFOEventHandler().endBody(this);
+        if (childNodes == null || childNodes.size() == 0) {
+            getLogger().error("fo:table-body must not be empty. "
+                    + "Expected: (table-row+|table-cell+)");
+            getParent().removeChild(this);
+        }
         convertCellsToRows();
     }
 
@@ -98,7 +103,9 @@ public class TableBody extends FObj {
      */
     private void convertCellsToRows() throws FOPException {
         try {
-            if (childNodes.size() == 0 || childNodes.get(0) instanceof TableRow) {
+            if (childNodes == null 
+                    || childNodes.size() == 0 
+                    || childNodes.get(0) instanceof TableRow) {
                 return;
             }
             //getLogger().debug("Converting cells to rows...");