Added test case for font event git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@932481 13f79535-47bb-0310-9956-ffa450edef68tags/fop-1_0
<pathelement location="${build.codegen-classes.dir}"/> | <pathelement location="${build.codegen-classes.dir}"/> | ||||
</classpath> | </classpath> | ||||
</taskdef> | </taskdef> | ||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/area/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/area/AreaEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/area/AreaEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/events/event-model.xml" | <eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/events/event-model.xml" | ||||
translationfile="${src.java.dir}/org/apache/fop/events/EventFormatter.xml"> | |||||
translationfile="${src.java.dir}/org/apache/fop/events/ResourceEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | <fileset dir="${src.java.dir}"> | ||||
<include name="**/*.java"/> | |||||
<exclude name="org/apache/fop/render/*/**/*.java"/> | |||||
<exclude name="org/apache/fop/afp/**/*.java"/> | |||||
<exclude name="org/apache/fop/accessibility/**/*.java"/> | |||||
<include name="org/apache/fop/events/ResourceEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator | |||||
modelfile="${build.gensrc.dir}/org/apache/fop/fo/flow/table/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/fo/flow/table/TableEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/fo/flow/table/TableEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/fo/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/fo/FOValidationEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/fo/FOValidationEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/layoutmgr/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/layoutmgr/BlockLevelEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/layoutmgr/BlockLevelEventProducer.java"/> | |||||
</fileset> | </fileset> | ||||
</eventResourceGenerator> | </eventResourceGenerator> | ||||
<fixcrlf file="${src.java.dir}/org/apache/fop/events/EventFormatter.xml" tab="remove" tablength="2"/> | |||||
<eventResourceGenerator | |||||
modelfile="${build.gensrc.dir}/org/apache/fop/layoutmgr/inline/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/render/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/render/RendererEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/render/RendererEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/svg/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/svg/SVGEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/svg/SVGEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator modelfile="${build.gensrc.dir}/org/apache/fop/fonts/event-model.xml" | |||||
translationfile="${src.java.dir}/org/apache/fop/fonts/FontEventProducer.xml"> | |||||
<fileset dir="${src.java.dir}"> | |||||
<include name="org/apache/fop/fonts/FontEventProducer.java"/> | |||||
</fileset> | |||||
</eventResourceGenerator> | |||||
<eventResourceGenerator | <eventResourceGenerator | ||||
modelfile="${build.gensrc.dir}/org/apache/fop/accessibility/event-model.xml" | modelfile="${build.gensrc.dir}/org/apache/fop/accessibility/event-model.xml" | ||||
translationfile="${src.java.dir}/org/apache/fop/accessibility/AccessibilityEventProducer.xml"> | translationfile="${src.java.dir}/org/apache/fop/accessibility/AccessibilityEventProducer.xml"> |
/** | /** | ||||
* Finds EventProducer interfaces and builds the event model for them. | * Finds EventProducer interfaces and builds the event model for them. | ||||
*/ | */ | ||||
public class EventProducerCollector { | |||||
class EventProducerCollector { | |||||
private static final String CLASSNAME_EVENT_PRODUCER = EventProducer.class.getName(); | private static final String CLASSNAME_EVENT_PRODUCER = EventProducer.class.getName(); | ||||
private static final Map PRIMITIVE_MAP; | private static final Map PRIMITIVE_MAP; | ||||
/** | /** | ||||
* Creates a new EventProducerCollector. | * Creates a new EventProducerCollector. | ||||
*/ | */ | ||||
public EventProducerCollector() { | |||||
EventProducerCollector() { | |||||
this.tagFactory = createDocletTagFactory(); | this.tagFactory = createDocletTagFactory(); | ||||
} | } | ||||
org.apache.fop.events.FOPEventModelFactory | |||||
org.apache.fop.afp.AFPEventProducer$EventModelFactory | org.apache.fop.afp.AFPEventProducer$EventModelFactory | ||||
org.apache.fop.render.bitmap.BitmapRendererEventProducer$EventModelFactory | org.apache.fop.render.bitmap.BitmapRendererEventProducer$EventModelFactory | ||||
org.apache.fop.render.pcl.PCLEventProducer$EventModelFactory | org.apache.fop.render.pcl.PCLEventProducer$EventModelFactory | ||||
org.apache.fop.render.ps.PSEventProducer$EventModelFactory | org.apache.fop.render.ps.PSEventProducer$EventModelFactory | ||||
org.apache.fop.render.rtf.RTFEventProducer$EventModelFactory | org.apache.fop.render.rtf.RTFEventProducer$EventModelFactory | ||||
org.apache.fop.accessibility.AccessibilityEventProducer$EventModelFactory | org.apache.fop.accessibility.AccessibilityEventProducer$EventModelFactory | ||||
org.apache.fop.area.AreaEventProducer$EventModelFactory | |||||
org.apache.fop.events.ResourceEventProducer$EventModelFactory | |||||
org.apache.fop.fo.FOValidationEventProducer$EventModelFactory | |||||
org.apache.fop.fo.flow.table.TableEventProducer$EventModelFactory | |||||
org.apache.fop.layoutmgr.BlockLevelEventProducer$EventModelFactory | |||||
org.apache.fop.layoutmgr.inline.InlineLevelEventProducer$EventModelFactory | |||||
org.apache.fop.render.RendererEventProducer$EventModelFactory | |||||
org.apache.fop.svg.SVGEventProducer$EventModelFactory | |||||
org.apache.fop.fonts.FontEventProducer$EventModelFactory |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | /** | ||||
* Event producer interface for events related to the area tree. | * Event producer interface for events related to the area tree. | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* An unresolved ID reference was encountered. | * An unresolved ID reference was encountered. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="org.apache.fop.area.AreaEventProducer.unresolvedIDReference">{type}: Unresolved ID reference "{id}" found.</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.unresolvedIDReferenceOnPage">Page {page}: Unresolved ID reference "{id}" found.</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageLoadError">Error while deserializing page {page}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageSaveError">Error while serializing page {page}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageRenderingError">Error while rendering page {page}.[ Reason: {e}]</message> | |||||
</catalogue> |
private static final Pattern INCLUDES_PATTERN = Pattern.compile("\\{\\{.+\\}\\}"); | private static final Pattern INCLUDES_PATTERN = Pattern.compile("\\{\\{.+\\}\\}"); | ||||
private static ResourceBundle defaultBundle = XMLResourceBundle.getXMLBundle( | |||||
EventFormatter.class.getName(), EventFormatter.class.getClassLoader()); | |||||
private static Log log = LogFactory.getLog(EventFormatter.class); | private static Log log = LogFactory.getLog(EventFormatter.class); | ||||
private EventFormatter() { | private EventFormatter() { | ||||
groupID, | groupID, | ||||
EventFormatter.class.getClassLoader()); | EventFormatter.class.getClassLoader()); | ||||
} catch (MissingResourceException mre) { | } catch (MissingResourceException mre) { | ||||
if (log.isTraceEnabled()) { | |||||
log.trace("No XMLResourceBundle for " + groupID + " available."); | |||||
} | |||||
throw new IllegalStateException("No XMLResourceBundle for " + groupID | |||||
+ " available."); | |||||
} | } | ||||
} | } | ||||
if (bundle == null) { | |||||
bundle = defaultBundle; | |||||
} | |||||
return format(event, bundle); | return format(event, bundle); | ||||
} | } | ||||
} | } | ||||
public void write(StringBuffer sb, Map params) { | public void write(StringBuffer sb, Map params) { | ||||
sb.append(defaultBundle.getString(getKey(params))); | |||||
// TODO there's no defaultBundle anymore | |||||
// sb.append(defaultBundle.getString(getKey(params))); | |||||
} | } | ||||
private String getKey(Map params) { | private String getKey(Map params) { |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="rule.markerDescendantOfFlow">An fo:marker is permitted only as the descendant of an fo:flow.</message> | |||||
<message key="rule.retrieveMarkerDescendantOfStaticContent">An fo:retrieve-marker is permitted only as the descendant of an fo:static-content.</message> | |||||
<message key="rule.retrieveTableMarkerDescendantOfHeaderOrFooter">An fo:retrieve-table-marker is permitted only as the descendant of an fo:table-header or an fo:table-footer.</message> | |||||
<message key="rule.bidiOverrideContent">An fo:bidi-override that is a descendant of an fo:leader or of the fo:inline child of an fo:footnote may not have block-level children, unless it has a nearer ancestor that is an fo:inline-container.</message> | |||||
<message key="rule.inlineContent">An fo:inline that is a descendant of an fo:leader or fo:footnote may not have block-level children, unless it has a nearer ancestor that is an fo:inline-container.</message> | |||||
<message key="rule.childOfSPM">The element must be a child of fo:simple-page-master.</message> | |||||
<message key="rule.childOfDeclarations">The element must be a child of fo:declarations.</message> | |||||
<message key="rule.childOfSPMorDeclarations">The element must be a child of fo:declarations or fo:simple-page-master.</message> | |||||
<message key="rule.childOfInstreamForeignObjectorExternalGraphic">The element must be a child of fo:instream-foreign-object or fo:external-graphic.</message> | |||||
<message key="rule.childOfPageSequence">The element must be a child of fo:page-sequence.</message> | |||||
<message key="rule.childOfPageSequenceOrSPM">The element must be a child of fo:page-sequence or fo:simple-page-master.</message> | |||||
<message key="rule.wrapperInvalidChildForParent">An fo:wrapper is only permitted to have children that would be permitted for its parent.</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.tooManyNodes">For "{elementName}", only one "{offendingNode}" may be declared.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.nodeOutOfOrder">For "{elementName}", "{tooLateNode}" must be declared before "{tooEarlyNode}"!{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidChild">"{offendingNode}" is not a valid child of "{elementName}"![ {ruleViolated,lookup}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingChildElement">"{elementName}" is missing child elements.[ | |||||
Required content model: {contentModel}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingProperty">Element "{elementName}" is missing required property "{propertyName}"!{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.idNotUnique">Property ID "{id}" (found on "{elementName}") previously used; ID values must be unique within a document!{severity,equals,EventSeverity:FATAL,, | |||||
Any reference to it will be considered a reference to the first occurrence in the document.}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerBlockContainerAbsolutePosition">Only an fo:block-container that does not generate absolutely positioned areas may have one or more fo:markers as its initial children.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotInitialChild">fo:marker must be an initial child: {mcname}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotUniqueForSameParent">fo:marker "marker-class-name" must be unique for same parent: {mcname}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidProperty">Invalid property encountered on "{elementName}": {attr}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidPropertyValue">Invalid property value encountered in {propName}="{propValue}"[: {e}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.unimplementedFeature">The following feature isn't implemented by Apache FOP, yet: {feature} (on {elementName}){{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingLinkDestination">Missing attribute on {elementName}: Either external-destination or internal-destination must be specified.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerCloningFailed">Unable to clone subtree of fo:marker (marker-class-name="{markerClassName}") for fo:retrieve-marker.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.colorProfileNameNotUnique">Duplicate color profile profile name: {name}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.regionNameMappedToMultipleRegionClasses">Region-name ("{regionName}") is being mapped to multiple region-classes ({defaultRegionClass1} and {defaultRegionClass2}).{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.masterNameNotUnique">The page master name ("{name}") must be unique across page-masters and page-sequence-masters.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.duplicateFlowNameInPageSequence">Duplicate flow-name "{flowName}" found within {elementName}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.flowNameNotMapped">The flow-name "{flowName}" on {elementName} could not be mapped to a region-name in the layout-master-set.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.masterNotFound">The master-reference "{masterReference}" on {elementName} matches no simple-page-master or page-sequence-master.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.illegalRegionName">The region-name "{regionName}" for {elementName} is not permitted.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.nonZeroBorderPaddingOnRegion">Border and padding for {elementName} "{regionName}" should be '0' (See 6.4.14 in XSL 1.1); non-standard values are allowed if relaxed validation is enabled. {{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.columnCountErrorOnRegionBodyOverflowScroll">If overflow property is set to "scroll" on {elementName}, a column-count other than "1" may not be specified.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidFORoot">First element must be the fo:root formatting object. Found {elementName} instead. Please make sure you're producing a valid XSL-FO document.</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.emptyDocument">Document is empty (something might be wrong with your XSLT stylesheet).</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.unknownFormattingObject">Unknown formatting object "{offendingNode}" encountered (a child of {elementName}}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.nonAutoBPDOnTable">Only a value of "auto" for block-progression-dimension has a well-specified behavior on fo:table. Falling back to "auto".{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.noTablePaddingWithCollapsingBorderModel">In collapsing border model a table does not have padding (see http://www.w3.org/TR/REC-CSS2/tables.html#collapsing-borders), but a non-zero value for padding was found. The padding will be ignored.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.noMixRowsAndCells">Either fo:table-rows or fo:table-cells may be children of an {elementName} but not both.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.footerOrderCannotRecover">This table uses the collapsing border model. In order to resolve borders in an efficient way the table-footer must be known before any table-body is parsed. Either put the footer at the correct place or switch to the separate border model.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.startEndRowUnderTableRowWarning">starts-row/ends-row for fo:table-cells non-applicable for children of an fo:table-row.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.tooManyCells">The column-number or number of cells in the row overflows the number of fo:table-columns specified for the table.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.valueMustBeBiggerGtEqOne">{propName} must be 1 or bigger, but got {actualValue}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.warnImplicitColumns">table-layout=\"fixed\" and column-width unspecified => falling back to proportional-column-width(1){{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.paddingNotApplicable">padding-* properties are not applicable to {elementName}, but a non-zero value for padding was found.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.cellOverlap">{elementName} overlaps in column {column}.<!-- no locator here, exception will be wrapped --></message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.forceNextColumnNumber">Negative value {propValue} of property column-number of element {elementName} forced into the next available column number {columnNumber}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.breakIgnoredDueToRowSpanning">{breakBefore,if,break-before,break-after} ignored on {elementName} because of row spanning in progress (See XSL 1.1, {breakBefore,if,7.20.2,7.20.1}){{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageNotFound">Image not found.[ URI: {uri}.]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageError">Image not available.[ URI: {uri}.] Reason:[ {reason}][ {e}]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageIOError">I/O error while loading image.[ URI: {uri}.][ Reason: {ioe}]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.ifoNoIntrinsicSize">The intrinsic dimensions of an instream-foreign-object could not be determined.{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.uriError">Error while handling URI: {uri}. Reason: {e}{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.foreignXMLProcessingError">Some XML content will be ignored. Could not render XML in namespace "{namespaceURI}".[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.foreignXMLNoHandler">Some XML content will be ignored. No handler defined for XML with namespace "{namespaceURI}".</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageWritingError">Error while writing an image to the target file.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.cannotDeleteTempFile">Temporary file could not be deleted: {tempFile}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.catalogResolverNotFound">Catalog resolver not found along the classpath</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.catalogResolverNotCreated">Error creating the catalog resolver: {message}</message> | |||||
<message key="org.apache.fop.layoutmgr.inline.InlineLevelEventProducer.leaderWithoutContent">fo:leader is set to "use-content" but has no content.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.inline.InlineLevelEventProducer.lineOverflows">Line {line} of a paragraph overflows the available area by {overflowLength,choice,50000#{overflowLength} millipoints|50000<more than 50 points}.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.rowTooTall">The contents of table-row {row} are taller than they should be (there is a block-progression-dimension or height constraint on the indicated row). Due to its contents the row grows to {effCellBPD} millipoints, but the row shouldn't get any taller than {maxCellBPD} millipoints.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.tableFixedAutoWidthNotSupported">table-layout="fixed" and width="auto", but auto-layout not supported => assuming width="100%".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.objectTooWide">The extent in inline-progression-direction (width) of a {elementName} is bigger than the available space ({effIPD}mpt > {maxIPD}mpt).{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.overconstrainedAdjustEndIndent">An {elementName} {{locator}} is wider than the available room in inline-progression-dimension. Adjusting end-indent based on overconstrained geometry rules (XSL 1.1, ch. 5.3.4)</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.viewportOverflow">Content overflows the viewport of an {elementName} in block-progression direction by {amount} millipoints.{clip,if, Content will be clipped.}{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.regionOverflow">Content overflows the viewport of the {elementName} on page {page} in block-progression direction by {amount} millipoints.{clip,if, Content will be clipped.}{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.flowNotMappingToRegionBody">Flow "{flowName}" does not map to the region-body in page-master "{masterName}". FOP presently does not support this.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.pageSequenceMasterExhausted">Subsequences exhausted in page-sequence-master "{pageSequenceMasterName}", {canRecover,if,using previous subsequence,cannot recover}.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.missingSubsequencesInPageSequenceMaster">No subsequences in page-sequence-master "{pageSequenceMasterName}".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.noMatchingPageMaster">No simple-page-master matching "{pageMasterName}" in page-sequence-master "{pageSequenceMasterName}".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.nonRestartableContentFlowingToNarrowerPage">Content that cannot handle IPD changes is flowing to a narrower page. Part of it may be clipped by the page border.</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.error">SVG error: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.alert">SVG alert: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.info">SVG info: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.svgNotBuilt">SVG graphic could not be built. Reason: {e}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.svgRenderingError">SVG graphic could not be rendered. Reason: {e}</message> | |||||
<message key="org.apache.fop.render.RendererEventProducer.ioError">I/O error while writing to target file.[ Reason: {ioe}]</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.unresolvedIDReference">{type}: Unresolved ID reference "{id}" found.</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.unresolvedIDReferenceOnPage">Page {page}: Unresolved ID reference "{id}" found.</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageLoadError">Error while deserializing page {page}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageSaveError">Error while serializing page {page}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.area.AreaEventProducer.pageRenderingError">Error while rendering page {page}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.fonts.FontEventAdapter.fontSubstituted">Font "{requested}" not found. Substituting with "{effective}".</message> | |||||
<message key="org.apache.fop.fonts.FontEventAdapter.fontLoadingErrorAtAutoDetection">Unable to load font file: {fontURL}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.fonts.FontEventAdapter.glyphNotAvailable">Glyph "{ch}" (0x{ch,hex}[, {ch,glyph-name}]) not available in font "{fontName}".</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.altTextMissing">Alternate text is missing on {foElement}.{{locator}}</message> | |||||
</catalogue> |
/* | |||||
* 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$ */ | |||||
package org.apache.fop.events; | |||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | |||||
* Factory for FOP's main event model. | |||||
*/ | |||||
public class FOPEventModelFactory extends AbstractEventModelFactory { | |||||
private static final String EVENT_MODEL_FILENAME = "event-model.xml"; | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), EVENT_MODEL_FILENAME); | |||||
} | |||||
} |
import java.io.IOException; | import java.io.IOException; | ||||
import org.w3c.dom.Document; | import org.w3c.dom.Document; | ||||
import org.xml.sax.Locator; | import org.xml.sax.Locator; | ||||
import org.apache.xmlgraphics.image.loader.ImageException; | import org.apache.xmlgraphics.image.loader.ImageException; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | /** | ||||
* Event producer interface for resource events (missing images, fonts etc.). | * Event producer interface for resource events (missing images, fonts etc.). | ||||
*/ | */ | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Image not found. | * Image not found. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageNotFound">Image not found.[ URI: {uri}.]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageError">Image not available.[ URI: {uri}.] Reason:[ {reason}][ {e}]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageIOError">I/O error while loading image.[ URI: {uri}.][ Reason: {ioe}]{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.ifoNoIntrinsicSize">The intrinsic dimensions of an instream-foreign-object could not be determined.{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.uriError">Error while handling URI: {uri}. Reason: {e}{{locator}}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.foreignXMLProcessingError">Some XML content will be ignored. Could not render XML in namespace "{namespaceURI}".[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.foreignXMLNoHandler">Some XML content will be ignored. No handler defined for XML with namespace "{namespaceURI}".</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.imageWritingError">Error while writing an image to the target file.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.cannotDeleteTempFile">Temporary file could not be deleted: {tempFile}</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.catalogResolverNotFound">Catalog resolver not found along the classpath</message> | |||||
<message key="org.apache.fop.events.ResourceEventProducer.catalogResolverNotCreated">Error creating the catalog resolver: {message}</message> | |||||
</catalogue> |
import org.apache.fop.apps.FOPException; | import org.apache.fop.apps.FOPException; | ||||
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
import org.apache.fop.fo.expr.PropertyException; | import org.apache.fop.fo.expr.PropertyException; | ||||
/** | /** | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Too many child nodes. | * Too many child nodes. | ||||
* @param source the event source | * @param source the event source |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="rule.markerDescendantOfFlow">An fo:marker is permitted only as the descendant of an fo:flow.</message> | |||||
<message key="rule.retrieveMarkerDescendantOfStaticContent">An fo:retrieve-marker is permitted only as the descendant of an fo:static-content.</message> | |||||
<message key="rule.retrieveTableMarkerDescendantOfHeaderOrFooter">An fo:retrieve-table-marker is permitted only as the descendant of an fo:table-header or an fo:table-footer.</message> | |||||
<message key="rule.bidiOverrideContent">An fo:bidi-override that is a descendant of an fo:leader or of the fo:inline child of an fo:footnote may not have block-level children, unless it has a nearer ancestor that is an fo:inline-container.</message> | |||||
<message key="rule.inlineContent">An fo:inline that is a descendant of an fo:leader or fo:footnote may not have block-level children, unless it has a nearer ancestor that is an fo:inline-container.</message> | |||||
<message key="rule.childOfSPM">The element must be a child of fo:simple-page-master.</message> | |||||
<message key="rule.childOfDeclarations">The element must be a child of fo:declarations.</message> | |||||
<message key="rule.childOfSPMorDeclarations">The element must be a child of fo:declarations or fo:simple-page-master.</message> | |||||
<message key="rule.childOfInstreamForeignObjectorExternalGraphic">The element must be a child of fo:instream-foreign-object or fo:external-graphic.</message> | |||||
<message key="rule.childOfPageSequence">The element must be a child of fo:page-sequence.</message> | |||||
<message key="rule.childOfPageSequenceOrSPM">The element must be a child of fo:page-sequence or fo:simple-page-master.</message> | |||||
<message key="rule.wrapperInvalidChildForParent">An fo:wrapper is only permitted to have children that would be permitted for its parent.</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.tooManyNodes">For "{elementName}", only one "{offendingNode}" may be declared.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.nodeOutOfOrder">For "{elementName}", "{tooLateNode}" must be declared before "{tooEarlyNode}"!{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidChild">"{offendingNode}" is not a valid child of "{elementName}"![ {ruleViolated,lookup}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingChildElement">"{elementName}" is missing child elements.[ Required content model: {contentModel}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingProperty">Element "{elementName}" is missing required property "{propertyName}"!{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.idNotUnique">Property ID "{id}" (found on "{elementName}") previously used; ID values must be unique within a document!{severity,equals,EventSeverity:FATAL,, Any reference to it will be considered a reference to the first occurrence in the document.}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerBlockContainerAbsolutePosition">Only an fo:block-container that does not generate absolutely positioned areas may have one or more fo:markers as its initial children.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotInitialChild">fo:marker must be an initial child: {mcname}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotUniqueForSameParent">fo:marker "marker-class-name" must be unique for same parent: {mcname}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidProperty">Invalid property encountered on "{elementName}": {attr}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidPropertyValue">Invalid property value encountered in {propName}="{propValue}"[: {e}]{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.unimplementedFeature">The following feature isn't implemented by Apache FOP, yet: {feature} (on {elementName}){{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.missingLinkDestination">Missing attribute on {elementName}: Either external-destination or internal-destination must be specified.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.markerCloningFailed">Unable to clone subtree of fo:marker (marker-class-name="{markerClassName}") for fo:retrieve-marker.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.colorProfileNameNotUnique">Duplicate color profile profile name: {name}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.regionNameMappedToMultipleRegionClasses">Region-name ("{regionName}") is being mapped to multiple region-classes ({defaultRegionClass1} and {defaultRegionClass2}).{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.masterNameNotUnique">The page master name ("{name}") must be unique across page-masters and page-sequence-masters.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.duplicateFlowNameInPageSequence">Duplicate flow-name "{flowName}" found within {elementName}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.flowNameNotMapped">The flow-name "{flowName}" on {elementName} could not be mapped to a region-name in the layout-master-set.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.masterNotFound">The master-reference "{masterReference}" on {elementName} matches no simple-page-master or page-sequence-master.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.illegalRegionName">The region-name "{regionName}" for {elementName} is not permitted.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.nonZeroBorderPaddingOnRegion">Border and padding for {elementName} "{regionName}" should be '0' (See 6.4.14 in XSL 1.1); non-standard values are allowed if relaxed validation is enabled. {{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.columnCountErrorOnRegionBodyOverflowScroll">If overflow property is set to "scroll" on {elementName}, a column-count other than "1" may not be specified.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidFORoot">First element must be the fo:root formatting object. Found {elementName} instead. Please make sure you're producing a valid XSL-FO document.</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.emptyDocument">Document is empty (something might be wrong with your XSLT stylesheet).</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.unknownFormattingObject">Unknown formatting object "{offendingNode}" encountered (a child of {elementName}}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.FOValidationEventProducer.altTextMissing">Alternate text is missing on {foElement}.{{locator}}</message> | |||||
</catalogue> |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
import org.apache.fop.fo.ValidationException; | import org.apache.fop.fo.ValidationException; | ||||
import org.apache.fop.fo.expr.PropertyException; | import org.apache.fop.fo.expr.PropertyException; | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* A value other than "auto" has been specified on fo:table. | * A value other than "auto" has been specified on fo:table. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.nonAutoBPDOnTable">Only a value of "auto" for block-progression-dimension has a well-specified behavior on fo:table. Falling back to "auto".{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.noTablePaddingWithCollapsingBorderModel">In collapsing border model a table does not have padding (see http://www.w3.org/TR/REC-CSS2/tables.html#collapsing-borders), but a non-zero value for padding was found. The padding will be ignored.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.noMixRowsAndCells">Either fo:table-rows or fo:table-cells may be children of an {elementName} but not both.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.footerOrderCannotRecover">This table uses the collapsing border model. In order to resolve borders in an efficient way the table-footer must be known before any table-body is parsed. Either put the footer at the correct place or switch to the separate border model.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.startEndRowUnderTableRowWarning">starts-row/ends-row for fo:table-cells non-applicable for children of an fo:table-row.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.tooManyCells">The column-number or number of cells in the row overflows the number of fo:table-columns specified for the table.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.valueMustBeBiggerGtEqOne">{propName} must be 1 or bigger, but got {actualValue}{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.warnImplicitColumns">table-layout=\"fixed\" and column-width unspecified => falling back to proportional-column-width(1){{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.paddingNotApplicable">padding-* properties are not applicable to {elementName}, but a non-zero value for padding was found.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.cellOverlap">{elementName} overlaps in column {column}.<!-- no locator here, exception will be wrapped --></message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.forceNextColumnNumber">Negative value {propValue} of property column-number of element {elementName} forced into the next available column number {columnNumber}.{{locator}}</message> | |||||
<message key="org.apache.fop.fo.flow.table.TableEventProducer.breakIgnoredDueToRowSpanning">{breakBefore,if,break-before,break-after} ignored on {elementName} because of row spanning in progress (See XSL 1.1, {breakBefore,if,7.20.2,7.20.1}){{locator}}</message> | |||||
</catalogue> |
package org.apache.fop.fonts; | package org.apache.fop.fonts; | ||||
import java.util.Map; | |||||
import org.apache.fop.events.Event; | |||||
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.model.EventSeverity; | |||||
/** | /** | ||||
* Event listener interface for font-related events. This interface extends FontEventListener | * Event listener interface for font-related events. This interface extends FontEventListener | ||||
*/ | */ | ||||
public class FontEventAdapter implements FontEventListener { | public class FontEventAdapter implements FontEventListener { | ||||
private EventBroadcaster eventBroadcaster; | |||||
private final EventBroadcaster eventBroadcaster; | |||||
private FontEventProducer eventProducer; | |||||
/** | /** | ||||
* Creates a new FontEventAdapter. | * Creates a new FontEventAdapter. | ||||
this.eventBroadcaster = broadcaster; | this.eventBroadcaster = broadcaster; | ||||
} | } | ||||
/** | |||||
* Returns the event group ID. | |||||
* @return the event group ID | |||||
*/ | |||||
protected String getEventGroupID() { | |||||
return getClass().getName(); | |||||
private FontEventProducer getEventProducer() { | |||||
if (eventProducer == null) { | |||||
eventProducer = FontEventProducer.Provider.get(eventBroadcaster); | |||||
} | |||||
return eventProducer; | |||||
} | } | ||||
/** {@inheritDoc} */ | /** {@inheritDoc} */ | ||||
public void fontSubstituted(Object source, FontTriplet requested, FontTriplet effective) { | public void fontSubstituted(Object source, FontTriplet requested, FontTriplet effective) { | ||||
Map params = new java.util.HashMap(); | |||||
params.put("requested", requested); | |||||
params.put("effective", effective); | |||||
Event ev = new Event(source, getEventGroupID() + ".fontSubstituted", | |||||
EventSeverity.WARN, params); | |||||
this.eventBroadcaster.broadcastEvent(ev); | |||||
getEventProducer().fontSubstituted(source, requested, effective); | |||||
} | } | ||||
/** {@inheritDoc} */ | /** {@inheritDoc} */ | ||||
public void fontLoadingErrorAtAutoDetection(Object source, String fontURL, Exception e) { | public void fontLoadingErrorAtAutoDetection(Object source, String fontURL, Exception e) { | ||||
Map params = new java.util.HashMap(); | |||||
params.put("fontURL", fontURL); | |||||
params.put("e", e); | |||||
Event ev = new Event(source, getEventGroupID() + ".fontLoadingErrorAtAutoDetection", | |||||
EventSeverity.WARN, params); | |||||
this.eventBroadcaster.broadcastEvent(ev); | |||||
getEventProducer().fontLoadingErrorAtAutoDetection(source, fontURL, e); | |||||
} | } | ||||
/** {@inheritDoc} */ | /** {@inheritDoc} */ | ||||
public void glyphNotAvailable(Object source, char ch, String fontName) { | public void glyphNotAvailable(Object source, char ch, String fontName) { | ||||
Map params = new java.util.HashMap(); | |||||
params.put("ch", new Character(ch)); | |||||
params.put("fontName", fontName); | |||||
Event ev = new Event(source, getEventGroupID() + ".glyphNotAvailable", | |||||
EventSeverity.WARN, params); | |||||
this.eventBroadcaster.broadcastEvent(ev); | |||||
getEventProducer().glyphNotAvailable(source, ch, fontName); | |||||
} | } | ||||
} | } |
/* | |||||
* 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$ */ | |||||
package org.apache.fop.fonts; | |||||
import org.apache.fop.events.EventBroadcaster; | |||||
import org.apache.fop.events.EventProducer; | |||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | |||||
* Event producer for fonts-related events. | |||||
*/ | |||||
public interface FontEventProducer extends EventProducer { | |||||
/** | |||||
* Provider class for the event producer. | |||||
*/ | |||||
final class Provider { | |||||
private Provider() { } | |||||
/** | |||||
* Returns an event producer. | |||||
* @param broadcaster the event broadcaster to use | |||||
* @return the event producer | |||||
*/ | |||||
public static FontEventProducer get(EventBroadcaster broadcaster) { | |||||
return (FontEventProducer) broadcaster.getEventProducerFor(FontEventProducer.class); | |||||
} | |||||
} | |||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | |||||
* Notifies about a font being substituted as the requested one isn't available. | |||||
* @param source the event source | |||||
* @param requested the requested font triplet | |||||
* @param effective the effective font triplet | |||||
* @event.severity WARN | |||||
*/ | |||||
void fontSubstituted(Object source, FontTriplet requested, FontTriplet effective); | |||||
/** | |||||
* An error occurred while loading a font for auto-detection. | |||||
* @param source the event source | |||||
* @param fontURL the font URL | |||||
* @param e the original exception | |||||
* @event.severity WARN | |||||
*/ | |||||
void fontLoadingErrorAtAutoDetection(Object source, String fontURL, Exception e); | |||||
/** | |||||
* A glyph has been requested that is not available in the font. | |||||
* @param source the event source | |||||
* @param ch the character for which the glyph isn't available | |||||
* @param fontName the name of the font | |||||
* @event.severity WARN | |||||
*/ | |||||
void glyphNotAvailable(Object source, char ch, String fontName); | |||||
} |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="org.apache.fop.fonts.FontEventProducer.fontSubstituted">Font "{requested}" not found. Substituting with "{effective}".</message> | |||||
<message key="org.apache.fop.fonts.FontEventProducer.fontLoadingErrorAtAutoDetection">Unable to load font file: {fontURL}.[ Reason: {e}]</message> | |||||
<message key="org.apache.fop.fonts.FontEventProducer.glyphNotAvailable">Glyph "{ch}" (0x{ch,hex}[, {ch,glyph-name}]) not available in font "{fontName}".</message> | |||||
</catalogue> |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
import org.apache.fop.fo.pagination.PageProductionException; | import org.apache.fop.fo.pagination.PageProductionException; | ||||
/** | /** | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* The contents of a table-row are too big to fit in the constraints. | * The contents of a table-row are too big to fit in the constraints. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.rowTooTall">The contents of table-row {row} are taller than they should be (there is a block-progression-dimension or height constraint on the indicated row). Due to its contents the row grows to {effCellBPD} millipoints, but the row shouldn't get any taller than {maxCellBPD} millipoints.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.tableFixedAutoWidthNotSupported">table-layout="fixed" and width="auto", but auto-layout not supported => assuming width="100%".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.objectTooWide">The extent in inline-progression-direction (width) of a {elementName} is bigger than the available space ({effIPD}mpt > {maxIPD}mpt).{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.overconstrainedAdjustEndIndent">An {elementName} {{locator}} is wider than the available room in inline-progression-dimension. Adjusting end-indent based on overconstrained geometry rules (XSL 1.1, ch. 5.3.4)</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.viewportOverflow">Content overflows the viewport of an {elementName} in block-progression direction by {amount} millipoints.{clip,if, Content will be clipped.}{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.regionOverflow">Content overflows the viewport of the {elementName} on page {page} in block-progression direction by {amount} millipoints.{clip,if, Content will be clipped.}{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.flowNotMappingToRegionBody">Flow "{flowName}" does not map to the region-body in page-master "{masterName}". FOP presently does not support this.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.pageSequenceMasterExhausted">Subsequences exhausted in page-sequence-master "{pageSequenceMasterName}", {canRecover,if,using previous subsequence,cannot recover}.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.missingSubsequencesInPageSequenceMaster">No subsequences in page-sequence-master "{pageSequenceMasterName}".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.noMatchingPageMaster">No simple-page-master matching "{pageMasterName}" in page-sequence-master "{pageSequenceMasterName}".{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.BlockLevelEventProducer.nonRestartableContentFlowingToNarrowerPage">Content that cannot handle IPD changes is flowing to a narrower page. Part of it may be clipped by the page border.</message> | |||||
</catalogue> |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | /** | ||||
* Event producer interface for inline-level layout managers. | * Event producer interface for inline-level layout managers. | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* fo:leader with "use-content" but without children. | * fo:leader with "use-content" but without children. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message> | |||||
<message key="org.apache.fop.layoutmgr.inline.InlineLevelEventProducer.leaderWithoutContent">fo:leader is set to "use-content" but has no content.{{locator}}</message> | |||||
<message key="org.apache.fop.layoutmgr.inline.InlineLevelEventProducer.lineOverflows">Line {line} of a paragraph overflows the available area by {overflowLength,choice,50000#{overflowLength} millipoints|50000<more than 50 points}.{{locator}}</message> | |||||
</catalogue> |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | /** | ||||
* Event producer interface for rendering-specific events. | * Event producer interface for rendering-specific events. | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* I/O error while writing target file. | * I/O error while writing target file. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="org.apache.fop.render.RendererEventProducer.ioError">I/O error while writing to target file.[ Reason: {ioe}]</message> | |||||
</catalogue> |
import org.apache.fop.events.EventBroadcaster; | import org.apache.fop.events.EventBroadcaster; | ||||
import org.apache.fop.events.EventProducer; | import org.apache.fop.events.EventProducer; | ||||
import org.apache.fop.events.model.AbstractEventModelFactory; | |||||
import org.apache.fop.events.model.EventModel; | |||||
/** | /** | ||||
* Event producer interface for SVG-related events. | * Event producer interface for SVG-related events. | ||||
} | } | ||||
} | } | ||||
/** Event model factory for Accessibility. */ | |||||
public static class EventModelFactory extends AbstractEventModelFactory { | |||||
/** {@inheritDoc} */ | |||||
public EventModel createEventModel() { | |||||
return loadModel(getClass(), "event-model.xml"); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Error during SVG processing. Either message or e must be set. | * Error during SVG processing. Either message or e must be set. | ||||
* @param source the event source | * @param source the event source |
<?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$ --> | |||||
<catalogue xml:lang="en"> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.error">SVG error: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.alert">SVG alert: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.info">SVG info: {message}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.svgNotBuilt">SVG graphic could not be built. Reason: {e}</message> | |||||
<message key="org.apache.fop.svg.SVGEventProducer.svgRenderingError">SVG graphic could not be rendered. Reason: {e}</message> | |||||
</catalogue> |
<?xml version="1.0" standalone="no"?> | |||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||||
<fo:layout-master-set> | |||||
<fo:simple-page-master master-name="page" | |||||
page-height="420pt" page-width="320pt" margin="10pt"> | |||||
<fo:region-body background-color="#F0F0F0"/> | |||||
</fo:simple-page-master> | |||||
</fo:layout-master-set> | |||||
<fo:page-sequence master-reference="page"> | |||||
<fo:flow flow-name="xsl-region-body"> | |||||
<fo:block font-family="blah">This block uses an unknown font.</fo:block> | |||||
</fo:flow> | |||||
</fo:page-sequence> | |||||
</fo:root> |
import org.apache.fop.area.AreaEventProducer; | import org.apache.fop.area.AreaEventProducer; | ||||
import org.apache.fop.fo.FOValidationEventProducer; | import org.apache.fop.fo.FOValidationEventProducer; | ||||
import org.apache.fop.fo.flow.table.TableEventProducer; | import org.apache.fop.fo.flow.table.TableEventProducer; | ||||
import org.apache.fop.fonts.FontEventProducer; | |||||
import org.apache.fop.layoutmgr.BlockLevelEventProducer; | import org.apache.fop.layoutmgr.BlockLevelEventProducer; | ||||
import org.apache.fop.layoutmgr.inline.InlineLevelEventProducer; | import org.apache.fop.layoutmgr.inline.InlineLevelEventProducer; | ||||
InlineLevelEventProducer.class.getName() + ".lineOverflows"); | InlineLevelEventProducer.class.getName() + ".lineOverflows"); | ||||
} | } | ||||
public void testFont() throws FOPException, TransformerException { | |||||
doTest("font.fo", | |||||
FontEventProducer.class.getName() + ".fontSubstituted"); | |||||
} | |||||
public static Test suite() { | public static Test suite() { | ||||
TestSuite suite = new TestSuite(); | TestSuite suite = new TestSuite(); | ||||
suite.addTestSuite(EventProcessingTestCase.class); | suite.addTestSuite(EventProcessingTestCase.class); |