You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2003/05/14 17:28:39 UTC

cvs commit: xml-fop/src/org/apache/fop/fo FOTreeBuilder.java UnknownXMLObj.java

jeremias    2003/05/14 08:28:39

  Modified:    src/org/apache/fop/fo Tag: fop-0_20_2-maintain
                        FOTreeBuilder.java UnknownXMLObj.java
  Log:
  Improve error messages when unsupported elements are encountered
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.30.2.9  +55 -7     xml-fop/src/org/apache/fop/fo/Attic/FOTreeBuilder.java
  
  Index: FOTreeBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/Attic/FOTreeBuilder.java,v
  retrieving revision 1.30.2.8
  retrieving revision 1.30.2.9
  diff -u -r1.30.2.8 -r1.30.2.9
  --- FOTreeBuilder.java	11 Apr 2003 00:24:37 -0000	1.30.2.8
  +++ FOTreeBuilder.java	14 May 2003 15:28:38 -0000	1.30.2.9
  @@ -120,6 +120,8 @@
       private Logger log;
   
       private Locator locator;
  +    
  +    private int errorCount = 0;
   
       public FOTreeBuilder() {}
   
  @@ -247,6 +249,28 @@
       public void setDocumentLocator(Locator locator) {
           this.locator = locator;
       }
  +    
  +    private String formatLocator(Locator locator) {
  +        if (locator == null) {
  +            return "";
  +        } else {
  +            StringBuffer sb = new StringBuffer();
  +            if (locator.getSystemId() != null) {
  +                sb.append(locator.getSystemId());
  +            } else if (locator.getPublicId() != null) {
  +                sb.append(locator.getPublicId());
  +            } else {
  +                sb.append("Unknown source");
  +            }
  +            sb.append(" (line: ");
  +            sb.append(locator.getLineNumber());
  +            sb.append(", col: ");
  +            sb.append(locator.getColumnNumber());
  +            sb.append(")");
  +            return sb.toString();
  +        }
  +    }
  +    
       /**
        * SAX Handler for the start of an element
        */
  @@ -280,8 +304,25 @@
               String fullName = uri + "^" + localName;
               if (!this.unknownFOs.containsKey(fullName)) {
                   this.unknownFOs.put(fullName, "");
  -                log.error("Unknown formatting object "
  -                                       + fullName);
  +                StringBuffer sb = new StringBuffer(128);
  +                sb.append("Unsupported element encountered: ");
  +                sb.append(localName);
  +                sb.append(" (Namespace: ");
  +                sb.append("".equals(uri) ? "default" : uri);
  +                sb.append("). ");
  +                sb.append("Source context: ");
  +                if (locator != null) {
  +                    sb.append(formatLocator(locator));
  +                } else {
  +                    sb.append("unavailable");
  +                }
  +                log.error(sb.toString());
  +                if (this.errorCount == 0) {
  +                    log.error("Expected XSL-FO (root, page-sequence, etc.), "
  +                        + "SVG (svg, rect, etc.) or elements from another "
  +                        + "supported language.");
  +                }
  +                this.errorCount++;
               }
               if(namespaces.contains(uri.intern())) {
                   // fall back
  @@ -317,10 +358,16 @@
           if (rootFObj == null) {
               rootFObj = fobj;
               if (!fobj.getName().equals("fo:root")) {
  -                throw new SAXException(new FOPException("Root element must"
  -                                                        + " be root, not "
  -                                                        + fobj.getName(),
  -                                                        systemId, line, column));
  +                if (fobj.getName().equals("root")) {
  +                    throw new SAXException(new FOPException(
  +                        "Root element is missing the namespace declaration: "
  +                        + "http://www.w3.org/1999/XSL/Format",
  +                        systemId, line, column));
  +                } else {
  +                    throw new SAXException(new FOPException(
  +                        "Root element must be root, not "
  +                        + fobj.getName(), systemId, line, column));
  +                }
               }
           } else if(!(fobj instanceof org.apache.fop.fo.pagination.PageSequence)) {
               currentFObj.addChild(fobj);
  @@ -333,6 +380,7 @@
           currentFObj = null;
           rootFObj = null;
           streamRenderer = null;
  +        this.errorCount = 0;
       }
   
       public boolean hasData() {
  
  
  
  1.2.2.5   +6 -2      xml-fop/src/org/apache/fop/fo/Attic/UnknownXMLObj.java
  
  Index: UnknownXMLObj.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/Attic/UnknownXMLObj.java,v
  retrieving revision 1.2.2.4
  retrieving revision 1.2.2.5
  diff -u -r1.2.2.4 -r1.2.2.5
  --- UnknownXMLObj.java	11 Apr 2003 00:24:37 -0000	1.2.2.4
  +++ UnknownXMLObj.java	14 May 2003 15:28:39 -0000	1.2.2.5
  @@ -136,7 +136,11 @@
       }
   
       public String getName() {
  -        return ""+namespace+":"+tagName;
  +        if (namespace == null || namespace.length() == 0) {
  +            return tagName;
  +        } else {
  +            return namespace + ":" + tagName;
  +        }
       }
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org