]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Fix for Bugzilla 45295 (already committed to the trunk with r672010, r672495 and...
authorAndreas L. Delmelle <adelmelle@apache.org>
Thu, 3 Jul 2008 18:25:01 +0000 (18:25 +0000)
committerAndreas L. Delmelle <adelmelle@apache.org>
Thu, 3 Jul 2008 18:25:01 +0000 (18:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-0_95@673750 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/flow/AbstractPageNumberCitation.java
test/layoutengine/standard-testcases/marker_page-number-citation_bugzilla45295.xml [new file with mode: 0644]

index b6b8272487cba74dbe7e3ca857f0a44b860144ea..794e3529be49f66756425f2a7f34deb04fec887f 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.fop.fo.flow;
 
 import java.awt.Color;
 
+import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
 
 import org.apache.fop.apps.FOPException;
@@ -101,9 +102,9 @@ public abstract class AbstractPageNumberCitation extends FObj {
     }
 
     /** {@inheritDoc} */
-    protected void startOfNode() throws FOPException {
-        super.startOfNode();
-        if (refId.equals("")) {
+    public void processNode(String elementName, Locator locator, Attributes attlist, PropertyList pList) throws FOPException {
+        super.processNode(elementName, locator, attlist, pList);
+        if (!inMarker() && (refId == null || "".equals(refId))) {
             missingPropertyError("ref-id");
         }
     }
diff --git a/test/layoutengine/standard-testcases/marker_page-number-citation_bugzilla45295.xml b/test/layoutengine/standard-testcases/marker_page-number-citation_bugzilla45295.xml
new file mode 100644 (file)
index 0000000..28d6841
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks for resolution of forward references in 
+      fo:markers, as reported in Bugzilla 45295.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="first"
+              margin-right="1.5cm"
+              margin-left="1.5cm"
+              margin-bottom="2cm"
+              margin-top="1cm"
+              page-width="21cm"
+              page-height="29.7cm">
+          <fo:region-body margin-top="1cm"/>
+          <fo:region-before extent="1cm"/>
+          <fo:region-after extent="1.5cm"/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="first" initial-page-number="1">
+        <fo:static-content flow-name="xsl-region-before">
+          <fo:block-container height="1cm" width="15cm" top="0cm" left="0cm" position="absolute">
+            <fo:block>
+              <fo:retrieve-marker retrieve-class-name="message"
+                                  retrieve-boundary="page"
+                                  retrieve-position="first-starting-within-page"/>
+            </fo:block>
+          </fo:block-container>
+          <fo:block-container height="1cm" width="15cm" top="0cm" left="0cm" position="absolute">
+            <fo:block>
+              <fo:retrieve-marker retrieve-class-name="term"
+                                  retrieve-boundary="page"
+                                  retrieve-position="last-ending-within-page"/>
+            </fo:block>
+          </fo:block-container>
+        </fo:static-content>
+        <fo:static-content flow-name="xsl-region-after">
+          <fo:block text-align="start" font-size="10pt" font-family="serif" line-height="1em + 2pt">
+            Page (<fo:page-number/> / <fo:page-number-citation ref-id="end-of-document"/>)
+          </fo:block>
+        </fo:static-content>
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block>
+            <fo:marker marker-class-name="message">
+              <fo:block>
+                WARNING: Page sequence contains:  <fo:page-number-citation id="pnc1" ref-id="end-of-document"/> pages.
+              </fo:block>
+            </fo:marker>
+          </fo:block>
+          <fo:block text-align="start" font-size="12pt" font-family="sans-serif">
+            This page sequence has more than one page so you will see the message only at the top of the first page.
+          </fo:block>
+          <fo:block break-before="page" text-align="start" font-size="12pt" font-family="sans-serif">
+            Some text.
+          </fo:block>
+          <fo:block break-before="page" text-align="start" font-size="12pt" font-family="sans-serif">
+            Some text.
+          </fo:block>
+          <fo:block break-before="page" text-align="start" font-size="12pt" font-family="sans-serif">
+            Some more text on last page.
+          </fo:block>
+          <fo:block id="end-of-document">
+            <fo:marker marker-class-name="term">
+                [marker content]
+            </fo:marker>
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <true xpath="//text[@prod-id='pnc1'][1]/word = '4'" />
+  </checks>
+</testcase>