gmazza      2004/06/13 12:58:58

  Modified:    src/java/org/apache/fop/apps Document.java
               src/java/org/apache/fop/area AreaTree.java
               src/java/org/apache/fop/fo FONode.java FOTreeHandler.java
               src/java/org/apache/fop/fo/pagination Declarations.java
                        Root.java
  Removed:     src/java/org/apache/fop/area AreaTreeControl.java
  Log:
  1.) App now returns an error if no page-sequence declared within fo:root.
  2.) Standardized node names via a new static FONode.getNodeName() method
  3.) Declarations object now tied to Root object, will no longer return NPE
      if empty (bug fixed).
  4.) AreaTreeControl removed in favor of direct connection between Document
      and the Area Tree.
  
  Revision  Changes    Path
  1.18      +2 -3      xml-fop/src/java/org/apache/fop/apps/Document.java
  
  Index: Document.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Document.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Document.java     13 Jun 2004 01:11:49 -0000      1.17
  +++ Document.java     13 Jun 2004 19:58:58 -0000      1.18
  @@ -25,7 +25,6 @@
   
   // FOP
   import org.apache.fop.area.AreaTree;
  -import org.apache.fop.area.AreaTreeControl;
   import org.apache.fop.area.AreaTreeModel;
   
   import org.apache.fop.fo.FOInputHandler;
  @@ -42,7 +41,7 @@
    * Class storing information for the FOP Document being processed, and managing
    * the processing of it.
    */
  -public class Document implements FOTreeControl, AreaTreeControl {
  +public class Document implements FOTreeControl {
               
       /** The parent Driver object */
       private Driver driver;
  
  
  
  1.10      +11 -10    xml-fop/src/java/org/apache/fop/area/AreaTree.java
  
  Index: AreaTree.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/AreaTree.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AreaTree.java     22 Apr 2004 21:38:39 -0000      1.9
  +++ AreaTree.java     13 Jun 2004 19:58:58 -0000      1.10
  @@ -18,6 +18,7 @@
   
   package org.apache.fop.area;
   
  +import org.apache.fop.apps.Document;
   import org.apache.fop.area.extensions.BookmarkData;
   import org.apache.fop.fo.extensions.Outline;
   
  @@ -50,7 +51,7 @@
       // allows for different models to deal with adding/rendering
       // in different situations
       private AreaTreeModel model;
  -    private AreaTreeControl atControl;
  +    private Document document;
   
       // hashmap of arraylists containing pages with id area
       private Map idLocations = new HashMap();
  @@ -60,10 +61,10 @@
   
       /**
        * Constructor.
  -     * @param atControl the AreaTreeControl object controlling this AreaTree
  +     * @param document the apps.Document object controlling this AreaTree
        */
  -    public AreaTree (AreaTreeControl atControl) {
  -        this.atControl = atControl;
  +    public AreaTree (Document document) {
  +        this.document = document;
       }
   
   
  @@ -219,13 +220,13 @@
        * Create the bookmark data in the area tree.
        */
       public void addBookmarksToAreaTree() {
  -        if (atControl.getBookmarks() == null) {
  +        if (document.getBookmarks() == null) {
               return;
           }
  -        atControl.getDriver().getLogger().debug("adding bookmarks to area tree");
  +        document.getDriver().getLogger().debug("adding bookmarks to area tree");
           BookmarkData data = new BookmarkData();
  -        for (int count = 0; count < atControl.getBookmarks().getOutlines().size(); 
count++) {
  -            Outline out = 
(Outline)(atControl.getBookmarks().getOutlines()).get(count);
  +        for (int count = 0; count < document.getBookmarks().getOutlines().size(); 
count++) {
  +            Outline out = 
(Outline)(document.getBookmarks().getOutlines()).get(count);
               data.addSubData(createBookmarkData(out));
           }
           addTreeExtension(data);
  @@ -251,8 +252,8 @@
           return data;
       }
   
  -    public AreaTreeControl getAreaTreeControl() {
  -        return atControl;
  +    public Document getDocument() {
  +        return document;
       }
   
   }
  
  
  
  1.20      +11 -0     xml-fop/src/java/org/apache/fop/fo/FONode.java
  
  Index: FONode.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FONode.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FONode.java       12 Jun 2004 23:18:52 -0000      1.19
  +++ FONode.java       13 Jun 2004 19:58:58 -0000      1.20
  @@ -195,5 +195,16 @@
           fotv.serveFONode(this);
       }
   
  +    /**
  +     * Helper function to standardize the names of all namespace URI - local
  +     * name pairs in text messages.
  +     * @param namespaceURI URI of node found 
  +     *         (e.g., "http://www.w3.org/1999/XSL/Format";)
  +     * @param localName local name of node, (e.g., "root" for "fo:root")
  +     * @return a string combining the two values
  +     */
  +    public static String getNodeString(String namespaceURI, String localName) {
  +        return "(Namespace URI: \"" + namespaceURI + "\", Local Name: \"" + 
localName + "\")";
  +    }
   }
   
  
  
  
  1.18      +8 -2      xml-fop/src/java/org/apache/fop/fo/FOTreeHandler.java
  
  Index: FOTreeHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeHandler.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FOTreeHandler.java        13 Jun 2004 01:11:49 -0000      1.17
  +++ FOTreeHandler.java        13 Jun 2004 19:58:58 -0000      1.18
  @@ -69,7 +69,8 @@
       // TODO: Collecting of statistics should be configurable
       private final boolean collectStatistics = true;
       private static final boolean MEM_PROFILE_WITH_GC = false;
  -
  +    private boolean pageSequenceFound = false;
  +    
       /**
        * Somewhere to get our stats from.
        */
  @@ -135,6 +136,10 @@
        */
       public void endDocument() throws SAXException {
           try {
  +            if (pageSequenceFound == false) {
  +                throw new SAXException("Error: No fo:page-sequence child " +
  +                    "found within fo:root element.");
  +            }
               getAreaTree().endDocument();
               getDriver().getRenderer().stopRenderer();
           } catch (IOException ex) {
  @@ -174,6 +179,7 @@
        * @param pageSeq the page sequence starting
        */
       public void startPageSequence(PageSequence pageSeq) {
  +        pageSequenceFound = true;
       }
   
       /**
  
  
  
  1.7       +25 -22    xml-fop/src/java/org/apache/fop/fo/pagination/Declarations.java
  
  Index: Declarations.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/Declarations.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Declarations.java 12 Jun 2004 23:18:52 -0000      1.6
  +++ Declarations.java 13 Jun 2004 19:58:58 -0000      1.7
  @@ -47,37 +47,40 @@
        */
       public Declarations(FONode parent) {
           super(parent);
  +        ((Root) parent).setDeclarations(this);
       }
   
       /**
  -     * At then end of this element sort out the child into
  +     * At the end of this element sort out the child into
        * a hashmap of color profiles and a list of external xml.
        */
       public void end() {
  -        for (Iterator iter = children.iterator(); iter.hasNext();) {
  -            FONode node = (FONode)iter.next();
  -            if (node.getName().equals("fo:color-profile")) {
  -                ColorProfile cp = (ColorProfile)node;
  -                if (!"".equals(cp.getProfileName())) {
  -                    if (colorProfiles == null) {
  -                        colorProfiles = new java.util.HashMap();
  +        if (children != null) {
  +            for (Iterator iter = children.iterator(); iter.hasNext();) {
  +                FONode node = (FONode)iter.next();
  +                if (node.getName().equals("fo:color-profile")) {
  +                    ColorProfile cp = (ColorProfile)node;
  +                    if (!"".equals(cp.getProfileName())) {
  +                        if (colorProfiles == null) {
  +                            colorProfiles = new java.util.HashMap();
  +                        }
  +                        if (colorProfiles.get(cp.getProfileName()) != null) {
  +                            // duplicate names
  +                            getLogger().warn("Duplicate fo:color-profile profile 
name : "
  +                                    + cp.getProfileName());
  +                        }
  +                        colorProfiles.put(cp.getProfileName(), cp);
  +                    } else {
  +                        getLogger().warn("color-profile-name required for color 
profile");
                       }
  -                    if (colorProfiles.get(cp.getProfileName()) != null) {
  -                        // duplicate names
  -                        getLogger().warn("Duplicate fo:color-profile profile name : 
"
  -                                + cp.getProfileName());
  +                } else if (node instanceof XMLObj) {
  +                    if (external == null) {
  +                        external = new java.util.ArrayList();
                       }
  -                    colorProfiles.put(cp.getProfileName(), cp);
  +                    external.add(node);
                   } else {
  -                    getLogger().warn("color-profile-name required for color 
profile");
  +                    getLogger().warn("invalid element " + node.getName() + "inside 
declarations");
                   }
  -            } else if (node instanceof XMLObj) {
  -                if (external == null) {
  -                    external = new java.util.ArrayList();
  -                }
  -                external.add(node);
  -            } else {
  -                getLogger().warn("invalid element " + node.getName() + "inside 
declarations");
               }
           }
           children = null;
  
  
  
  1.13      +23 -3     xml-fop/src/java/org/apache/fop/fo/pagination/Root.java
  
  Index: Root.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/Root.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Root.java 12 Jun 2004 23:18:52 -0000      1.12
  +++ Root.java 13 Jun 2004 19:58:58 -0000      1.13
  @@ -34,6 +34,8 @@
       private LayoutMasterSet layoutMasterSet;
       private Declarations declarations;
       private List pageSequences;
  +    // temporary until above list populated
  +    private boolean pageSequenceFound = false;
   
       /**
        * Keeps count of page number from over PageSequence instances
  @@ -72,7 +74,7 @@
                   } else if (declarations != null) { // only one fo:declarations
                       throw new IllegalArgumentException("Error: Only one" +
                           " fo:declarations may be defined per fo:root");
  -                } else if (!pageSequences.isEmpty()) { // no page-seqs yet
  +                } else if (pageSequenceFound) { // no page-seqs yet
                       throw new IllegalArgumentException("Error: fo:declarations" +
                           " must be defined before fo:page-sequence declarations");
                   }
  @@ -80,13 +82,15 @@
                   if (layoutMasterSet == null) { // must already have a l-m-s
                       throw new IllegalArgumentException("Error:" +
                       " fo:layout-master-set must be first child of fo:root");
  +                } else {
  +                    pageSequenceFound = true;
                   }
               } else
                   throw new IllegalArgumentException("Error: Invalid child" +
                       " node \"fo:" + localName + "\" of fo:root");
           } else {
  -            throw new IllegalArgumentException("Error: Invalid child node (" 
  -                + namespaceURI + ") \"" + localName + "\" of fo:root");
  +            throw new IllegalArgumentException("Error: Invalid child node " +
  +                FONode.getNodeString(namespaceURI, localName) + " of fo:root");
           }
       }
   
  @@ -146,6 +150,22 @@
        */
       public void setLayoutMasterSet(LayoutMasterSet layoutMasterSet) {
           this.layoutMasterSet = layoutMasterSet;
  +    }
  +
  +    /**
  +     * Returns the associated Declarations.
  +     * @return the Declarations instance
  +     */
  +    public Declarations getDeclarations() {
  +        return this.declarations;
  +    }
  +
  +    /**
  +     * Sets the associated Declarations.
  +     * @param Declarations the Declarations to use
  +     */
  +    public void setDeclarations(Declarations declarations) {
  +        this.declarations = declarations;
       }
   
       /**
  
  
  

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

Reply via email to