spepping    2004/12/27 02:13:05

  Modified:    src/java/org/apache/fop/layoutmgr LayoutManagerMaker.java
                        LayoutManagerMapping.java
                        PageSequenceLayoutManager.java
               src/java/org/apache/fop/area AreaTreeHandler.java
  Log:
  Changed LayoutManagerMaker.makeLayoutManager(FONode node) to throw a
  FOPException, and removed LayoutManagerMaker.makeLayoutManager(FONode
  node, boolean checkLength). Adapted LayoutManagerMapping,
  PageSequenceLM and AreaTreeHandler.
  
  Revision  Changes    Path
  1.2       +19 -4     
xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMaker.java
  
  Index: LayoutManagerMaker.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMaker.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LayoutManagerMaker.java   24 Dec 2004 12:06:26 -0000      1.1
  +++ LayoutManagerMaker.java   27 Dec 2004 10:13:05 -0000      1.2
  @@ -19,14 +19,29 @@
   
   import java.util.List;
   import org.apache.fop.fo.FONode;
  +import org.apache.fop.apps.FOPException;
   
  +/**
  + * The interface for all LayoutManager makers
  + */
   public interface LayoutManagerMaker {
       
  +    /**
  +     * Make LayoutManagers for the node and add them to the list lms.
  +     * @param node the FO node for which the LayoutManagers are made
  +     * @param lms the list to which the LayoutManagers are added
  +     */
       public void makeLayoutManagers(FONode node, List lms);
   
  -    public LayoutManager makeLayoutManager(FONode node);
  -
  -    public LayoutManager makeLayoutManager(FONode node, boolean checkLength);
  +    /**
  +     * Make the LayoutManager for the node.
  +     * If not exactly one LayoutManagers is made,
  +     * a FOPException is thrown.
  +     * @param node the FO node for which the LayoutManagers are made
  +     * @return The created LayoutManager
  +     */
  +    public LayoutManager makeLayoutManager(FONode node)
  +        throws FOPException;
   
   }
   
  
  
  
  1.3       +217 -211  
xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
  
  Index: LayoutManagerMapping.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LayoutManagerMapping.java 25 Dec 2004 01:08:10 -0000      1.2
  +++ LayoutManagerMapping.java 27 Dec 2004 10:13:05 -0000      1.3
  @@ -17,9 +17,6 @@
   /* $Id$ */
   package org.apache.fop.layoutmgr;
   
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
  -
   import java.util.ArrayList;
   import java.util.Map;
   import java.util.HashMap;
  @@ -27,6 +24,11 @@
   import java.util.ListIterator;
   import java.util.Iterator;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
  +
  +import org.apache.fop.apps.FOPException;
  +
   import org.apache.fop.fo.FONode;
   import org.apache.fop.fo.FOText;
   import org.apache.fop.fo.FObj;
  @@ -74,7 +76,7 @@
   import org.apache.fop.layoutmgr.table.TableLayoutManager;
   
   /**
  - * The default class for creating layout managers. 
  + * The default LayoutManager maker class
    */
   public class LayoutManagerMapping implements LayoutManagerMaker {
   
  @@ -92,175 +94,179 @@
        * Initializes the set of maker objects associated with this 
LayoutManagerMapping
        */
       private void initialize() {
  -     makers.put(FOText.class, new FOTextLayoutManagerMaker());
  -     makers.put(FObjMixed.class, new Maker());
  -     makers.put(BidiOverride.class, new BidiOverrideLayoutManagerMaker());
  -     makers.put(Inline.class, new InlineLayoutManagerMaker());
  -     makers.put(Footnote.class, new FootnodeLayoutManagerMaker());
  -     makers.put(InlineContainer.class,
  +        makers.put(FOText.class, new FOTextLayoutManagerMaker());
  +        makers.put(FObjMixed.class, new Maker());
  +        makers.put(BidiOverride.class, new BidiOverrideLayoutManagerMaker());
  +        makers.put(Inline.class, new InlineLayoutManagerMaker());
  +        makers.put(Footnote.class, new FootnodeLayoutManagerMaker());
  +        makers.put(InlineContainer.class,
                      new InlineContainerLayoutManagerMaker());
  -     makers.put(BasicLink.class, new BasicLinkLayoutManagerMaker());
  -     makers.put(Block.class, new BlockLayoutManagerMaker());
  -     makers.put(Leader.class, new LeaderLayoutManagerMaker());
  -     makers.put(RetrieveMarker.class, new WrapperLayoutManagerMaker());
  -     makers.put(Character.class, new CharacterLayoutManagerMaker());
  -     makers.put(ExternalGraphic.class,
  +        makers.put(BasicLink.class, new BasicLinkLayoutManagerMaker());
  +        makers.put(Block.class, new BlockLayoutManagerMaker());
  +        makers.put(Leader.class, new LeaderLayoutManagerMaker());
  +        makers.put(RetrieveMarker.class, new WrapperLayoutManagerMaker());
  +        makers.put(Character.class, new CharacterLayoutManagerMaker());
  +        makers.put(ExternalGraphic.class,
                      new ExternalGraphicLayoutManagerMaker());
  -     makers.put(BlockContainer.class,
  +        makers.put(BlockContainer.class,
                      new BlockContainerLayoutManagerMaker());
  -     makers.put(ListItem.class, new ListItemLayoutManagerMaker());
  -     makers.put(ListBlock.class, new ListBlockLayoutManagerMaker());
  -     makers.put(InstreamForeignObject.class,
  +        makers.put(ListItem.class, new ListItemLayoutManagerMaker());
  +        makers.put(ListBlock.class, new ListBlockLayoutManagerMaker());
  +        makers.put(InstreamForeignObject.class,
                      new InstreamForeignObjectLayoutManagerMaker());
  -     makers.put(PageNumber.class, new PageNumberLayoutManagerMaker());
  -     makers.put(PageNumberCitation.class,
  +        makers.put(PageNumber.class, new PageNumberLayoutManagerMaker());
  +        makers.put(PageNumberCitation.class,
                      new PageNumberCitationLayoutManagerMaker());
  -     makers.put(PageSequence.class, new PageSequenceLayoutManagerMaker());
  -     makers.put(Table.class, new TableLayoutManagerMaker());
  -     makers.put(TableBody.class, new TableBodyLayoutManagerMaker());
  -     makers.put(TableColumn.class, new TableColumnLayoutManagerMaker());
  -     makers.put(TableRow.class, new TableRowLayoutManagerMaker());
  -     makers.put(TableCell.class, new TableCellLayoutManagerMaker());
  -     makers.put(TableFooter.class, new TableBodyLayoutManagerMaker());
  -     makers.put(TableHeader.class, new TableBodyLayoutManagerMaker());
  -     makers.put(Flow.class, new FlowLayoutManagerMaker());
  -     makers.put(StaticContent.class, new StaticContentLayoutManagerMaker());
  -     makers.put(Wrapper.class, new WrapperLayoutManagerMaker());
  -     makers.put(Title.class, new InlineLayoutManagerMaker());
  +        makers.put(PageSequence.class, new PageSequenceLayoutManagerMaker());
  +        makers.put(Table.class, new TableLayoutManagerMaker());
  +        makers.put(TableBody.class, new TableBodyLayoutManagerMaker());
  +        makers.put(TableColumn.class, new TableColumnLayoutManagerMaker());
  +        makers.put(TableRow.class, new TableRowLayoutManagerMaker());
  +        makers.put(TableCell.class, new TableCellLayoutManagerMaker());
  +        makers.put(TableFooter.class, new TableBodyLayoutManagerMaker());
  +        makers.put(TableHeader.class, new TableBodyLayoutManagerMaker());
  +        makers.put(Flow.class, new FlowLayoutManagerMaker());
  +        makers.put(StaticContent.class, new 
StaticContentLayoutManagerMaker());
  +        makers.put(Wrapper.class, new WrapperLayoutManagerMaker());
  +        makers.put(Title.class, new InlineLayoutManagerMaker());
       }
   
  +    /**
  +     * @see 
org.apache.fop.layoutmgr.LayoutManagerMaker#makeLayoutManagers(FONode, List)
  +     */
       public void makeLayoutManagers(FONode node, List lms) {
  -     Maker maker = (Maker) makers.get(node.getClass());
  -     if (maker == null) {
  +        Maker maker = (Maker) makers.get(node.getClass());
  +        if (maker == null) {
               log.error("No LayoutManager maker for class " + node.getClass());
           } else {
  -             maker.make(node, lms);
  -     }
  -    }
  -
  -    public LayoutManager makeLayoutManager(FONode node) {
  -        return makeLayoutManager(node, false);
  +            maker.make(node, lms);
  +        }
       }
   
  -    public LayoutManager makeLayoutManager(FONode node, boolean checkLength) 
{
  +    /**
  +     * @see 
org.apache.fop.layoutmgr.LayoutManagerMaker#makeLayoutManager(FONode)
  +     */
  +    public LayoutManager makeLayoutManager(FONode node)
  +        throws FOPException {
           List lms = new ArrayList();
           makeLayoutManagers(node, lms);
  -        LayoutManager lm = null;
  -        if (checkLength && lms.size() != 1) {
  -            log.error("More than 1 LayoutManager for class "
  -                      + node.getClass()
  -                      + "; 1 was requested"); 
  -        } else if (lms.size() != 0) {
  -            lm = (LayoutManager) lms.get(0);
  +        if (lms.size() == 0) {
  +            throw new FOPException("No LayoutManager for class "
  +                                   + node.getClass()
  +                                   + "; 1 was required");
  +        } else if (lms.size() > 1) {
  +            throw new FOPException("More than 1 LayoutManager for class "
  +                                   + node.getClass()
  +                                   + "; 1 was required"); 
           }
  -        return lm;
  +        return (LayoutManager) lms.get(0);
       }
   
  -     public static class Maker {
  -             public void make(FONode node, List lms) {
  +    public static class Maker {
  +        public void make(FONode node, List lms) {
               // no layout manager
  -                     return;
  -             }
  -     }
  -
  -     public static class FOTextLayoutManagerMaker extends Maker {
  -             public void make(FONode node, List lms) {
  -                     FOText foText = (FOText) node;
  -             if (foText.endIndex - foText.startIndex > 0) {
  -                     lms.add(new TextLayoutManager(foText));
  -                 }
  -             }
  -     }
  +            return;
  +        }
  +    }
  +
  +    public static class FOTextLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            FOText foText = (FOText) node;
  +            if (foText.endIndex - foText.startIndex > 0) {
  +                lms.add(new TextLayoutManager(foText));
  +            }
  +        }
  +    }
   
       /*
  -     public static class FObjMixedLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  -             if (node.getChildNodes() != null) {
  -                 InlineStackingLayoutManager lm;
  -                 lm = new InlineStackingLayoutManager((FObjMixed) node);
  -                 lms.add(lm);
  -             }
  -         }           
  -     }
  +    public static class FObjMixedLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            if (node.getChildNodes() != null) {
  +                InlineStackingLayoutManager lm;
  +                lm = new InlineStackingLayoutManager((FObjMixed) node);
  +                lms.add(lm);
  +            }
  +        }       
  +    }
       */
   
  -     public static class BidiOverrideLayoutManagerMaker extends Maker {
  +    public static class BidiOverrideLayoutManagerMaker extends Maker {
           // public static class BidiOverrideLayoutManagerMaker extends 
FObjMixedLayoutManagerMaker {
  -         public void make(BidiOverride node, List lms) {
  -             if (false) {
  +        public void make(BidiOverride node, List lms) {
  +            if (false) {
                   // this is broken; it does nothing
                   // it should make something like an InlineStackingLM
  -                 super.make(node, lms);
  -             } else {
  -                 ArrayList childList = new ArrayList();
  +                super.make(node, lms);
  +            } else {
  +                ArrayList childList = new ArrayList();
                   // this is broken; it does nothing
                   // it should make something like an InlineStackingLM
  -                 super.make(node, childList);
  -                 for (int count = childList.size() - 1; count >= 0; count--) 
{
  -                     LayoutManager lm = (LayoutManager) childList.get(count);
  -                     if (lm.generatesInlineAreas()) {
  -                         LayoutManager blm = new BidiLayoutManager
  +                super.make(node, childList);
  +                for (int count = childList.size() - 1; count >= 0; count--) {
  +                    LayoutManager lm = (LayoutManager) childList.get(count);
  +                    if (lm.generatesInlineAreas()) {
  +                        LayoutManager blm = new BidiLayoutManager
                               (node, (InlineLayoutManager) lm);
  -                         lms.add(blm);
  -                     } else {
  -                         lms.add(lm);
  -                     }
  -                 }
  -             }
  -         }
  -     }
  +                        lms.add(blm);
  +                    } else {
  +                        lms.add(lm);
  +                    }
  +                }
  +            }
  +        }
  +    }
   
  -     public static class InlineLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  +    public static class InlineLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
                if (node.getChildNodes() != null) {
                    lms.add(new InlineLayoutManager((InlineLevel) node));
                }
  -          }
  -     }
  +         }
  +    }
   
  -     public static class FootnodeLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  +    public static class FootnodeLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
               Inline citation = ((Footnote) node).getInlineFO();
  -             if (citation != null) {
  +            if (citation != null) {
                   lms.add(new InlineLayoutManager(citation));
               }
  -         }
  -     }
  +        }
  +    }
   
  -     public static class InlineContainerLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  -             ArrayList childList = new ArrayList();
  -             super.make(node, childList);
  -             lms.add(new ICLayoutManager((InlineContainer) node, childList));
  -         }
  -     }
  +    public static class InlineContainerLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            ArrayList childList = new ArrayList();
  +            super.make(node, childList);
  +            lms.add(new ICLayoutManager((InlineContainer) node, childList));
  +        }
  +    }
   
  -     public static class BasicLinkLayoutManagerMaker extends Maker {
  +    public static class BasicLinkLayoutManagerMaker extends Maker {
           public void make(FONode node, List lms) {
               lms.add(new BasicLinkLayoutManager((BasicLink) node));
           }
       }
   
  -     public static class BlockLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  -              lms.add(new BlockLayoutManager((Block) node));
  -          }
  -     }
  +    public static class BlockLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
  +             lms.add(new BlockLayoutManager((Block) node));
  +         }
  +    }
   
  -     public static class LeaderLayoutManagerMaker extends Maker {
  +    public static class LeaderLayoutManagerMaker extends Maker {
           public void make(FONode node, List lms) {
               lms.add(new LeaderLayoutManager((Leader) node));
           }
       }
   
  -     public static class CharacterLayoutManagerMaker extends Maker {
  +    public static class CharacterLayoutManagerMaker extends Maker {
           public void make(FONode node, List lms) {
               lms.add(new CharacterLayoutManager((Character) node));
           }
       }
   
  -     public static class ExternalGraphicLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  +    public static class ExternalGraphicLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
               ExternalGraphic eg = (ExternalGraphic) node;
               if (!eg.getSrc().equals("")) {
                   lms.add(new ExternalGraphicLayoutManager(eg));
  @@ -268,120 +274,120 @@
           }
       }
   
  -     public static class BlockContainerLayoutManagerMaker extends Maker {
  -             public void make(FONode node, List lms) {
  -             lms.add(new BlockContainerLayoutManager((BlockContainer) node));
  -          }
  -     }
  +    public static class BlockContainerLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            lms.add(new BlockContainerLayoutManager((BlockContainer) node));
  +         }
  +    }
   
  -     public static class ListItemLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  +    public static class ListItemLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
                lms.add(new ListItemLayoutManager((ListItem) node));
  -          }          
  -     }
  +         }      
  +    }
   
  -     public static class ListBlockLayoutManagerMaker extends Maker {
  -             public void make(FONode node, List lms) {
  -                     lms.add(new ListBlockLayoutManager((ListBlock) node));
  -             }
  -     }
  +    public static class ListBlockLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            lms.add(new ListBlockLayoutManager((ListBlock) node));
  +        }
  +    }
   
  -     public static class InstreamForeignObjectLayoutManagerMaker extends 
Maker {
  -             public void make(FONode node, List lms) {
  +    public static class InstreamForeignObjectLayoutManagerMaker extends 
Maker {
  +        public void make(FONode node, List lms) {
               lms.add(new InstreamForeignObjectLM((InstreamForeignObject) 
node));
           }
       }
   
  -     public static class PageNumberLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  +    public static class PageNumberLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
                lms.add(new PageNumberLayoutManager((PageNumber) node));
  -          }
  -     }
  +         }
  +    }
   
  -     public static class PageNumberCitationLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  -             lms.add(new 
PageNumberCitationLayoutManager((PageNumberCitation) node));
  -          }
  +    public static class PageNumberCitationLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
  +            lms.add(new PageNumberCitationLayoutManager((PageNumberCitation) 
node));
  +         }
       }
   
       public static class PageSequenceLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  +         public void make(FONode node, List lms) {
                lms.add(new PageSequenceLayoutManager((PageSequence) node));
            }
       }
   
  -     public static class TableLayoutManagerMaker extends Maker {
  -             public void make(FONode node, List lms) {
  -                     Table table = (Table) node;
  -                     TableLayoutManager tlm = new TableLayoutManager(table);
  -                     ArrayList columns = table.getColumns();
  -                     if (columns != null) {
  -                             ArrayList columnLMs = new ArrayList();
  -                             ListIterator iter = columns.listIterator();
  -                             while (iter.hasNext()) {
  +    public static class TableLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            Table table = (Table) node;
  +            TableLayoutManager tlm = new TableLayoutManager(table);
  +            ArrayList columns = table.getColumns();
  +            if (columns != null) {
  +                ArrayList columnLMs = new ArrayList();
  +                ListIterator iter = columns.listIterator();
  +                while (iter.hasNext()) {
                       columnLMs.add(new Column((TableColumn) iter.next()));
  -                             }
  -                             tlm.setColumns(columnLMs);
  -                     }
  -                     if (table.getTableHeader() != null) {
  -                             tlm.setTableHeader(new 
Body(table.getTableHeader()));
  -                     }
  -                     if (table.getTableFooter() != null) {
  -                             tlm.setTableFooter(new 
Body(table.getTableFooter()));
  -                     }
  -                     lms.add(tlm);
  -             }
  -    }
  -             
  -     public static class TableBodyLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  -              lms.add(new Body((TableBody) node));
  -          }
  +                }
  +                tlm.setColumns(columnLMs);
  +            }
  +            if (table.getTableHeader() != null) {
  +                tlm.setTableHeader(new Body(table.getTableHeader()));
  +            }
  +            if (table.getTableFooter() != null) {
  +                tlm.setTableFooter(new Body(table.getTableFooter()));
  +            }
  +            lms.add(tlm);
  +        }
  +    }
  +        
  +    public static class TableBodyLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
  +             lms.add(new Body((TableBody) node));
  +         }
   
  -     }
  -     
  +    }
  +    
       public static class TableColumnLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  +         public void make(FONode node, List lms) {
                lms.add(new Column((TableColumn) node));
  -             }               
  -     }
  +        }       
  +    }
  +
  +    public static class TableRowLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            lms.add(new Row((TableRow) node));
  +        }
  +    }
  +
  +    public static class TableCellLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            lms.add(new Cell((TableCell) node));
  +        }
  +    }
   
  -     public static class TableRowLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  -             lms.add(new Row((TableRow) node));
  -         }
  -     }
  -
  -     public static class TableCellLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  -             lms.add(new Cell((TableCell) node));
  -         }
  -     }
  -
  -     public static class FlowLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  -              lms.add(new FlowLayoutManager((Flow) node));
  -          }
  -     }
  -
  -     public static class StaticContentLayoutManagerMaker extends Maker {
  -          public void make(FONode node, List lms) {
  -              lms.add(new StaticContentLayoutManager((StaticContent) node));
  -          }
  -     }
  -
  -     public class WrapperLayoutManagerMaker extends Maker {
  -         public void make(FONode node, List lms) {
  -             Iterator baseIter;
  -             baseIter = node.getChildNodes();
  -             if (baseIter == null) {
  +    public static class FlowLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
  +             lms.add(new FlowLayoutManager((Flow) node));
  +         }
  +    }
  +
  +    public static class StaticContentLayoutManagerMaker extends Maker {
  +         public void make(FONode node, List lms) {
  +             lms.add(new StaticContentLayoutManager((StaticContent) node));
  +         }
  +    }
  +
  +    public class WrapperLayoutManagerMaker extends Maker {
  +        public void make(FONode node, List lms) {
  +            Iterator baseIter;
  +            baseIter = node.getChildNodes();
  +            if (baseIter == null) {
                   return;
               }
  -             while (baseIter.hasNext()) {
  -                 FONode child = (FONode) baseIter.next();
  -                 makeLayoutManagers(child, lms);
  -             }
  -         }           
  -     }
  +            while (baseIter.hasNext()) {
  +                FONode child = (FONode) baseIter.next();
  +                makeLayoutManagers(child, lms);
  +            }
  +        }       
  +    }
   
   }
  
  
  
  1.21      +18 -9     
xml-fop/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
  
  Index: PageSequenceLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- PageSequenceLayoutManager.java    24 Dec 2004 12:06:26 -0000      1.20
  +++ PageSequenceLayoutManager.java    27 Dec 2004 10:13:05 -0000      1.21
  @@ -502,7 +502,17 @@
           }
           
           RegionViewport reg = 
curPage.getPage().getRegionViewport(region.getNameId());
  -        StaticContentLayoutManager lm = getStaticContentLayoutManager(flow);
  +        StaticContentLayoutManager lm;
  +        try {
  +            lm = getStaticContentLayoutManager(flow);
  +        } catch (FOPException e) {
  +            log.error
  +                ("Failed to create a StaticContentLayoutManager for flow "
  +                 + flow.getFlowName()
  +                 + "; no static content will be laid out:");
  +            log.error(e.getMessage());
  +            return;
  +        }
           lm.initialize();
           lm.setRegionReference(reg.getRegion());
           lm.setParent(this);
  @@ -515,9 +525,9 @@
                   List vecBreakPoss = new ArrayList();
                   vecBreakPoss.add(bp);
                   lm.addAreas(new BreakPossPosIter(vecBreakPoss, 0,
  -                                                  vecBreakPoss.size()), 
null);
  +                                                 vecBreakPoss.size()), null);
               } else {
  -              log.error("bp==null  cls=" + region.getRegionName());
  +                log.error("bp==null  cls=" + region.getRegionName());
               }
           }
           //lm.flush();
  @@ -905,14 +915,13 @@
       /**
        * @return a StaticContent layout manager
        */
  -    private StaticContentLayoutManager 
getStaticContentLayoutManager(StaticContent sc) {
  +    private StaticContentLayoutManager 
getStaticContentLayoutManager(StaticContent sc)
  +        throws FOPException {
           StaticContentLayoutManager lm =
  -            (StaticContentLayoutManager)
  -            staticContentLMs.get(sc.getFlowName());
  +            (StaticContentLayoutManager) 
staticContentLMs.get(sc.getFlowName());
           if (lm == null) {
               lm = (StaticContentLayoutManager)
  -                getAreaTreeHandler().getLayoutManagerMaker().
  -                makeLayoutManager(sc);
  +                
getAreaTreeHandler().getLayoutManagerMaker().makeLayoutManager(sc);
               staticContentLMs.put(sc.getFlowName(), lm);
           }
           return lm;
  
  
  
  1.29      +9 -3      xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java
  
  Index: AreaTreeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- AreaTreeHandler.java      24 Dec 2004 12:06:25 -0000      1.28
  +++ AreaTreeHandler.java      27 Dec 2004 10:13:05 -0000      1.29
  @@ -229,9 +229,15 @@
   
           // If no main flow, nothing to layout!
           if (pageSequence.getMainFlow() != null) {
  -            PageSequenceLayoutManager pageSLM =
  -                (PageSequenceLayoutManager)
  +            PageSequenceLayoutManager pageSLM;
  +            try {
  +                pageSLM = (PageSequenceLayoutManager)
                   getLayoutManagerMaker().makeLayoutManager(pageSequence);
  +            } catch (FOPException e) {
  +                log.error("Failed to create a PageSequenceLayoutManager; no 
pages will be laid out:");
  +                log.error(e.getMessage());
  +                return;
  +            }
               pageSLM.setAreaTreeHandler(this);
               pageSLM.activateLayout();
           }
  
  
  

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

Reply via email to