AbstractPSExtensionElement (Apache FOP Core 2.11 API)
Date: 2025-04-24

org.apache.fop.render.ps.extensions

## Class AbstractPSExtensionElement

- java.lang.Object
- - org.apache.fop.fo.FONode
  - - org.apache.fop.render.ps.extensions.AbstractPSExtensionElement

- All Implemented Interfaces:
    Cloneable
  Direct Known Subclasses:
    AbstractPSCommentElement, PSSetPageDeviceElement

      public abstract class AbstractPSExtensionElement
      extends FONode

  Base class for the PostScript-specific extension elements.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.fop.fo.FONode

      `FONode.FONodeIterator, FONode.GatherContextInfoFunction`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected PSExtensionAttachment` | `attachment` extension attachment

    - ### Fields inherited from class org.apache.fop.fo.FONode

      `FO_URI, FOX_URI, locator, log, nodeChangeBarList, parent, siblings, startOfNodeChangeBarList`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractPSExtensionElement(FONode parent)` Default constructor

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `characters(char[] data, int start, int length, PropertyList pList, Locator locator)` Adds characters.
    `void` | `endOfNode()` Primarily used for making final content model validation checks and/or informing the `FOEventHandler` that the end of this FO has been reached.
    `ExtensionAttachment` | `getExtensionAttachment()` This method is overridden by extension elements and allows the extension element to return a pass-through attachment which the parent formatting objects should simply carry with them but otherwise ignore.
    `String` | `getNamespaceURI()` Returns the namespace URI for this node
    `String` | `getNormalNamespacePrefix()` Returns the normally used namespace prefix for this node
    `protected abstract ExtensionAttachment` | `instantiateExtensionAttachment()` Instantiates extension attachment object
    `protected void` | `validateChildNode(Locator loc, String nsURI, String localName)` Blocks XSL FO's from having non-FO parents.

    - ### Methods inherited from class org.apache.fop.fo.FONode

      `addCharacters, addChildNode, attachSiblings, bind, canHaveMarkers, charIterator, clone, clone, collectDelimitedTextRanges, collectDelimitedTextRanges, createPropertyList, decorateWithContextInfo, errorText, finalizeNode, gatherContextInfo, getBuilderContext, getChangeBarList, getChildNodes, getChildNodes, getContentHandlerFactory, getContextInfo, getContextInfoAlt, getFOEventHandler, getFOValidationEventProducer, getLocalName, getLocator, getLocatorString, getLogger, getName, getName, getNameId, getNodePrefix, getNodeString, getParent, getRoot, getStructureTreeElement, getUserAgent, inMarker, invalidChildError, invalidChildError, invalidPropertyValueError, isBidiRangeBlockItem, isChangeBarElement, isDelimitedTextRangeBoundary, missingChildElementError, missingChildElementError, missingPropertyError, nodesOutOfOrderError, nodesOutOfOrderError, notSupportedChildError, processNode, removeChild, setLocator, setStructureTreeElement, startOfNode, tooManyNodesError, tooManyNodesError, tooManyNodesError, validateChildNode, warningText`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### attachment

          protected PSExtensionAttachment attachment

      extension attachment

  - ### Constructor Detail

    - #### AbstractPSExtensionElement

          public AbstractPSExtensionElement(FONode parent)

      Default constructor
      Parameters:
        `parent` - parent of this node
      See Also:
        `FONode.FONode(FONode)`

  - ### Method Detail

    - #### validateChildNode

          protected void validateChildNode(Locator loc,
                                           String nsURI,
                                           String localName)
                                    throws ValidationException

      Blocks XSL FO's from having non-FO parents.
      Overrides:
        `validateChildNode` in class `FONode`
      Parameters:
        `loc` - location in the FO source file
        `nsURI` - namespace of incoming node
        `localName` - (e.g. "table" for "fo:table")
      Throws:
        `ValidationException` - if incoming node not valid for parent
      See Also:
        `FONode.validateChildNode(Locator, String, String)`

    - #### characters

          protected void characters(char[] data,
                                    int start,
                                    int length,
                                    PropertyList pList,
                                    Locator locator)

      Adds characters. Does nothing by default. To be overridden in subclasses that allow `#PCDATA` content.
      Overrides:
        `characters` in class `FONode`
      Parameters:
        `data` - array of characters containing text to be added
        `start` - starting array element to add
        `length` - number of elements to add
        `pList` - currently applicable PropertyList
        `locator` - location in the XSL-FO source file.

    - #### getNamespaceURI

          public String getNamespaceURI()

      Description copied from class: `FONode`
      Returns the namespace URI for this node
      Overrides:
        `getNamespaceURI` in class `FONode`
      Returns:
        a String representation of this object
      See Also:
        `FONode.getNamespaceURI()`

    - #### getNormalNamespacePrefix

          public String getNormalNamespacePrefix()

      Description copied from class: `FONode`
      Returns the normally used namespace prefix for this node
      Specified by:
        `getNormalNamespacePrefix` in class `FONode`
      Returns:
        a String representation of this object
      See Also:
        `FONode.getNormalNamespacePrefix()`

    - #### endOfNode

          public void endOfNode()
                         throws FOPException

      Description copied from class: `FONode`
      Primarily used for making final content model validation checks and/or informing the `FOEventHandler` that the end of this FO has been reached. The default implementation simply calls `FONode.finalizeNode()`, without sending any event to the `FOEventHandler`.

      Note: the recommended way to override this method in subclasses is

      `super.endOfNode(); // invoke finalizeNode()`

      `getFOEventHandler().endXXX(); // send endOfNode() notification`

      Overrides:
        `endOfNode` in class `FONode`
      Throws:
        `FOPException` - if there's a problem during processing
      See Also:
        `FONode.endOfNode()`

    - #### getExtensionAttachment

          public ExtensionAttachment getExtensionAttachment()

      Description copied from class: `FONode`
      This method is overridden by extension elements and allows the extension element to return a pass-through attachment which the parent formatting objects should simply carry with them but otherwise ignore. This mechanism is used to pass non-standard information from the FO tree through to the layout engine and the renderers.
      Overrides:
        `getExtensionAttachment` in class `FONode`
      Returns:
        the extension attachment if one is created by the extension element, null otherwise.
      See Also:
        `FONode.getExtensionAttachment()`

    - #### instantiateExtensionAttachment

          protected abstract ExtensionAttachment instantiateExtensionAttachment()

      Instantiates extension attachment object
      Returns:
        extension attachment

Copyright © 2025 Apache Software Foundation. All rights reserved.