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 2007/04/04 17:05:32 UTC

svn commit: r525526 - in /xmlgraphics/fop/trunk/src/java: META-INF/services/ org/apache/fop/fo/extensions/ org/apache/fop/fo/extensions/destination/ org/apache/fop/fo/flow/ org/apache/fop/layoutmgr/

Author: jeremias
Date: Wed Apr  4 08:05:30 2007
New Revision: 525526

URL: http://svn.apache.org/viewvc?view=rev&rev=525526
Log:
Fixes for issues introduced with fox:destination:
DestinationElementMapping masks ExtensionElementMapping. That caused the tests for widow/orphan extension on tables to fail.
Improved Block child validation code (will need to be done for all FOs where fox:destination should be valid. Currently works only as child of fo:block or above fo:page-sequence where no layout managers are constructed.
No LMMaker for fox:destination. Improved the handling there so adding the extension element to the list there isn't necessary.

Removed:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/DestinationElementMapping.java
Modified:
    xmlgraphics/fop/trunk/src/java/META-INF/services/org.apache.fop.fo.ElementMapping
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/Destination.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java

Modified: xmlgraphics/fop/trunk/src/java/META-INF/services/org.apache.fop.fo.ElementMapping
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/META-INF/services/org.apache.fop.fo.ElementMapping?view=diff&rev=525526&r1=525525&r2=525526
==============================================================================
--- xmlgraphics/fop/trunk/src/java/META-INF/services/org.apache.fop.fo.ElementMapping (original)
+++ xmlgraphics/fop/trunk/src/java/META-INF/services/org.apache.fop.fo.ElementMapping Wed Apr  4 08:05:30 2007
@@ -7,5 +7,4 @@
 org.apache.fop.fo.extensions.xmp.RDFElementMapping
 org.apache.fop.render.ps.extensions.PSExtensionElementMapping
 org.apache.fop.render.afp.extensions.AFPElementMapping
-org.apache.fop.render.pcl.extensions.PCLElementMapping
-org.apache.fop.fo.extensions.destination.DestinationElementMapping
\ No newline at end of file
+org.apache.fop.render.pcl.extensions.PCLElementMapping
\ No newline at end of file

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java?view=diff&rev=525526&r1=525525&r2=525526
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java Wed Apr  4 08:05:30 2007
@@ -20,7 +20,9 @@
 package org.apache.fop.fo.extensions;
 
 import org.apache.fop.fo.ElementMapping;
+import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.UnknownXMLObj;
+import org.apache.fop.fo.extensions.destination.Destination;
 import org.apache.fop.util.QName;
 
 import java.util.HashMap;
@@ -41,6 +43,7 @@
         propertyAttributes.add("block-progression-unit");
         propertyAttributes.add("widow-content-limit");
         propertyAttributes.add("orphan-content-limit");
+        propertyAttributes.add("internal-destination");
     }
     
     /**
@@ -58,9 +61,16 @@
             foObjs = new HashMap();
             foObjs.put("outline", new UnknownXMLObj.Maker(URI));
             foObjs.put("label", new UnknownXMLObj.Maker(URI));
+            foObjs.put("destination", new DestinationMaker());
         }
     }
     
+    static class DestinationMaker extends ElementMapping.Maker {
+        public FONode make(FONode parent) {
+            return new Destination(parent);
+        }
+    }
+
     /** @see org.apache.fop.fo.ElementMapping#getStandardPrefix() */
     public String getStandardPrefix() {
         return "fox";

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/Destination.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/Destination.java?view=diff&rev=525526&r1=525525&r2=525526
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/Destination.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/extensions/destination/Destination.java Wed Apr  4 08:05:30 2007
@@ -22,9 +22,7 @@
 import org.apache.fop.fo.ValidationException;
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.fo.PropertyList;
-import org.apache.fop.fo.FOEventHandler;
 import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.FObj;
 import org.apache.fop.fo.pagination.Root;
 import org.apache.fop.fo.extensions.ExtensionElementMapping;
 
@@ -34,10 +32,10 @@
 /**
  * Class for named destinations in PDF.
  */
-public class Destination extends FObj {
+public class Destination extends FONode {
 
-    String internalDestination;
-    Root root;
+    private String internalDestination;
+    private Root root;
 
     /**
      * Constructs a Destination object (called by Maker).
@@ -50,15 +48,17 @@
     }
 
     /**
-     * @see org.apache.fop.fo.FObj#bind(PropertyList)
+     * @see org.apache.fop.fo.FONode#processNode(java.lang.String, org.xml.sax.Locator, 
+     *          org.xml.sax.Attributes, org.apache.fop.fo.PropertyList)
      */
-    public void bind(PropertyList pList) throws FOPException {
-        internalDestination = pList.get(PR_INTERNAL_DESTINATION).getString();
-        if (internalDestination.length() == 0) {
+    public void processNode(String elementName, Locator locator, 
+            Attributes attlist, PropertyList pList) throws FOPException {
+        internalDestination = attlist.getValue("internal-destination");
+        if (internalDestination == null || internalDestination.length() == 0) {
             attributeError("Missing attribute:  internal-destination must be specified.");
         }
     }
-
+    
     /**
      * @see org.apache.fop.fo.FONode#endOfNode
      */
@@ -75,6 +75,10 @@
             invalidChildError(loc, nsURI, localName);
     }
 
+    /**
+     * Returns the internal destination (an reference of the id property of any FO).
+     * @return the internal destination
+     */
     public String getInternalDestination() {
         return internalDestination;
     }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java?view=diff&rev=525526&r1=525525&r2=525526
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java Wed Apr  4 08:05:30 2007
@@ -296,28 +296,27 @@
      *  fo:inline-container."
      */
     protected void validateChildNode(Locator loc, String nsURI, String localName) 
-        throws ValidationException
-    {
-        if (FOX_URI.equals(nsURI) && localName.equals("destination")) {
-            // Found a fox:destination element - ignore it
-        } else if (FO_URI.equals(nsURI) && localName.equals("marker")) {
-            if (blockOrInlineItemFound || initialPropertySetFound) {
-               nodesOutOfOrderError(loc, "fo:marker", 
-                    "initial-property-set? (#PCDATA|%inline;|%block;)");
-            }
-        } else if (FO_URI.equals(nsURI) && localName.equals("initial-property-set")) {
-            if (initialPropertySetFound) {
-                tooManyNodesError(loc, "fo:initial-property-set");
-            } else if (blockOrInlineItemFound) {
-                nodesOutOfOrderError(loc, "fo:initial-property-set", 
-                    "(#PCDATA|%inline;|%block;)");
+            throws ValidationException {
+        if (FO_URI.equals(nsURI)) {
+            if (localName.equals("marker")) {
+                if (blockOrInlineItemFound || initialPropertySetFound) {
+                   nodesOutOfOrderError(loc, "fo:marker", 
+                        "initial-property-set? (#PCDATA|%inline;|%block;)");
+                }
+            } else if (localName.equals("initial-property-set")) {
+                if (initialPropertySetFound) {
+                    tooManyNodesError(loc, "fo:initial-property-set");
+                } else if (blockOrInlineItemFound) {
+                    nodesOutOfOrderError(loc, "fo:initial-property-set", 
+                        "(#PCDATA|%inline;|%block;)");
+                } else {
+                    initialPropertySetFound = true;
+                }
+            } else if (isBlockOrInlineItem(nsURI, localName)) {
+                blockOrInlineItemFound = true;
             } else {
-                initialPropertySetFound = true;
+                invalidChildError(loc, nsURI, localName);
             }
-        } else if (isBlockOrInlineItem(nsURI, localName)) {
-            blockOrInlineItemFound = true;
-        } else {
-            invalidChildError(loc, nsURI, localName);
         }
     }
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java?view=diff&rev=525526&r1=525525&r2=525526
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java Wed Apr  4 08:05:30 2007
@@ -28,6 +28,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.apache.fop.fo.FOElementMapping;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.FOText;
 import org.apache.fop.fo.FObjMixed;
@@ -140,7 +141,6 @@
         makers.put(TableHeader.class, new Maker());
         makers.put(Wrapper.class, new WrapperLayoutManagerMaker());
         makers.put(Title.class, new InlineLayoutManagerMaker());
-        makers.put(Destination.class, new Maker());
     }
 
     /**
@@ -149,7 +149,13 @@
     public void makeLayoutManagers(FONode node, List lms) {
         Maker maker = (Maker) makers.get(node.getClass());
         if (maker == null) {
-            log.error("No LayoutManager maker for class " + node.getClass());
+            if (FOElementMapping.URI.equals(node.getNamespaceURI())) {
+                log.error("No LayoutManager maker for class " + node.getClass());
+            } else {
+                if (log.isDebugEnabled()) {
+                    log.debug("Skipping the creation of a layout manager for " + node.getClass());
+                }
+            }
         } else {
             maker.make(node, lms);
         }



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