aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2017-09-28 14:45:41 +0000
committerSimon Steiner <ssteiner@apache.org>2017-09-28 14:45:41 +0000
commitc784e62a58b9f33e56b19198c0cd03ab6a627903 (patch)
tree6c4fb6e86bfa0b0f779eb77fdf7ceebbd76bb19b
parent991b446034726979e931c3033ace13344b153a30 (diff)
downloadxmlgraphics-fop-c784e62a58b9f33e56b19198c0cd03ab6a627903.tar.gz
xmlgraphics-fop-c784e62a58b9f33e56b19198c0cd03ab6a627903.zip
FOP-2744: Allow unmapped flow for repeatable-page-master
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1810008 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--fop-core/src/main/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java3
-rw-r--r--fop-core/src/test/java/org/apache/fop/layoutmgr/PageSequenceLayoutManagerTestCase.java1
-rw-r--r--fop/test/layoutengine/standard-testcases/simple-page-master_unmapped_flow-name_2.xml56
3 files changed, 59 insertions, 1 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
index 6b993424c..75bfe5e60 100644
--- a/fop-core/src/main/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
+++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
@@ -205,7 +205,8 @@ public class PageSequenceLayoutManager extends AbstractPageSequenceLayoutManager
String psName = getPageSequence().getMainFlow().getFlowName();
Region body = newPage.getSimplePageMaster().getRegion(FO_REGION_BODY);
String name = body.getRegionName();
- if (strict && !name.equals(psName) && !name.equals(((RegionBody)body).getDefaultRegionName())) {
+ if (strict && !name.equals(psName) && !name.equals(((RegionBody)body).getDefaultRegionName())
+ && getPageSequence().hasPagePositionLast()) {
throw new RuntimeException(
"The flow-name \"" + name + "\" could not be mapped to a region-name in the layout-master-set");
}
diff --git a/fop-core/src/test/java/org/apache/fop/layoutmgr/PageSequenceLayoutManagerTestCase.java b/fop-core/src/test/java/org/apache/fop/layoutmgr/PageSequenceLayoutManagerTestCase.java
index e6a0975a8..a87dc0fa0 100644
--- a/fop-core/src/test/java/org/apache/fop/layoutmgr/PageSequenceLayoutManagerTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/layoutmgr/PageSequenceLayoutManagerTestCase.java
@@ -127,6 +127,7 @@ public class PageSequenceLayoutManagerTestCase {
when(flow.getFlowName()).thenReturn(MAIN_FLOW_NAME);
when(pseq.getRoot()).thenReturn(root);
+ when(pseq.hasPagePositionLast()).thenReturn(true);
when(pseq.getMainFlow()).thenReturn(flow);
PageSequenceLayoutManager pageSequenceLayoutManager = new PageSequenceLayoutManager(ath, pseq) {
diff --git a/fop/test/layoutengine/standard-testcases/simple-page-master_unmapped_flow-name_2.xml b/fop/test/layoutengine/standard-testcases/simple-page-master_unmapped_flow-name_2.xml
new file mode 100644
index 000000000..bf874955a
--- /dev/null
+++ b/fop/test/layoutengine/standard-testcases/simple-page-master_unmapped_flow-name_2.xml
@@ -0,0 +1,56 @@
+<?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 that when the region-body@region-name of simple-page-master does not map to
+ the main flow, the PageSequenceLayoutManager treats the generated Page as an empty/blank page.
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="CoverFront" page-width="8.5in" page-height="11in">
+ <fo:region-body region-name="CoverPageBody"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="CoverBack" page-width="8.5in" page-height="11in">
+ <fo:region-body region-name="CoverPageBody"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="Invoice_First_Page" page-width="8.5in" page-height="11in">
+ <fo:region-body region-name="PageBody"/>
+ </fo:simple-page-master>
+ <fo:page-sequence-master master-name="Cover">
+ <fo:repeatable-page-master-reference maximum-repeats="1" master-reference="CoverFront"/>
+ <fo:repeatable-page-master-reference maximum-repeats="1" master-reference="CoverBack"/>
+ <fo:repeatable-page-master-reference maximum-repeats="1" master-reference="Invoice_First_Page"/>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="Cover">
+ <fo:flow flow-name="PageBody">
+ <fo:block>test</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="CoverPageBody" xpath="//pageViewport[1]//regionBody/@name"/>
+ <eval expected="CoverPageBody" xpath="//pageViewport[2]//regionBody/@name"/>
+ <eval expected="PageBody" xpath="//pageViewport[3]//regionBody/@name"/>
+ </checks>
+</testcase>