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
`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
`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