Interface OutputProcessor

All Known Implementing Classes:
AbstractBufferingOutputProcessor, AbstractOutputProcessor

public interface OutputProcessor
This is the Interface which every OutputProcessor must implement. The order of processors is defined by:
  1. XMLSecurityConstants.Phase (required)
  2. Action order (optional): allows grouping processors per action without them accidentally being reordered incorrectly by processors of unrelated other action. It helps grouping processors where before/after processor classes doesn't cut it: signature-after-encryption is a valid use case, but also encryption-after-signature. There is no absolute ordering of signature processors versus encryption processors. That is where the action order comes in: whichever action comes first, it groups those processors together such they can't accidentally get mingled in between processors of unrelated actions. It's optional, if you set the action order to -1 it will be ignored. The action order thus only defines the order between two processors if both these processors have an action order != -1.
  3. Before/after processors based on processor classes (optional): this allows ordering of processors typically belonging to a single action.
  • Method Details

    • setXMLSecurityProperties

      void setXMLSecurityProperties(XMLSecurityProperties xmlSecurityProperties)
      setter for the XMLSecurityProperties after instantiation of the processor
      Parameters:
      xmlSecurityProperties -
    • setAction

      void setAction(XMLSecurityConstants.Action action, int actionOrder)
      setter for the Action after instantiation of the processor
      Parameters:
      action - The action this processor belongs to, possibly null for no particular action.
      actionOrder - The action order of this processor, possibly -1 for no particular action order.
    • getAction

      Returns:
      The action to which this processor belongs, if any, else null.
    • getActionOrder

      int getActionOrder()
      Returns:
      The action order of this processor, or -1.
    • init

      void init(OutputProcessorChain outputProcessorChain) throws XMLSecurityException
      Method will be called after setting the properties
      Throws:
      XMLSecurityException
    • addBeforeProcessor

      void addBeforeProcessor(Class<? extends OutputProcessor> processor)
      Add this processor before the given processor
      Parameters:
      processor -
    • getBeforeProcessors

      Set<Class<? extends OutputProcessor>> getBeforeProcessors()
      This OutputProcessor will be added before the processors in this set
      Returns:
      The set with the named OutputProcessor
    • addAfterProcessor

      void addAfterProcessor(Class<? extends OutputProcessor> processor)
      Add this processor after the given processor
      Parameters:
      processor -
    • getAfterProcessors

      Set<Class<? extends OutputProcessor>> getAfterProcessors()
      This OutputProcessor will be added after the processors in this set
      Returns:
      The set with the named OutputProcessor
    • getPhase

      The Phase in which this OutputProcessor should be applied
      Returns:
      The Phase
    • processEvent

      void processEvent(org.apache.xml.security.stax.ext.stax.XMLSecEvent xmlSecEvent, OutputProcessorChain outputProcessorChain) throws XMLStreamException, XMLSecurityException
      Will be called from the framework for every XMLEvent
      Parameters:
      xmlSecEvent - The next XMLEvent to process
      outputProcessorChain -
      Throws:
      XMLStreamException - thrown when a streaming error occurs
      XMLSecurityException - thrown when a Security failure occurs
    • doFinal

      void doFinal(OutputProcessorChain outputProcessorChain) throws XMLStreamException, XMLSecurityException
      Will be called when the whole document is processed.
      Parameters:
      outputProcessorChain -
      Throws:
      XMLStreamException - thrown when a streaming error occurs
      XMLSecurityException - thrown when a Security failure occurs