Class XmlIf

All Implemented Interfaces:
HasTransactionAttribute, IConfigurable, IConfigurationAware, IForwardTarget, INamedObject, IPipe, IScopeProvider, IWithParameters, EventThrowing, HasStatistics, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware

@Forward(name="*",description="when {@literal thenForwardName} or {@literal elseForwardName} are used") @Forward(name="then",description="the configured condition is met") @Forward(name="else",description="the configured condition is not met") @EnterpriseIntegrationPattern(ROUTER) public class XmlIf extends AbstractPipe
Selects a forward, based on XPath evaluation
Since:
4.3
Author:
Peter Leeuwenburgh
  • Constructor Details

    • XmlIf

      public XmlIf()
  • Method Details

    • makeStylesheet

      protected String makeStylesheet(String xpathExpression, String resultVal)
    • configure

      public void configure() throws ConfigurationException
      Description copied from class: AbstractPipe
      configure() is called after the Pipeline is registered at the Adapter. Purpose of this method is to reduce creating connections to databases etc. in the doPipe() method. As much as possible class-instantiating should take place in the configure() method, to improve performance.
      Specified by:
      configure in interface IConfigurable
      Specified by:
      configure in interface IPipe
      Overrides:
      configure in class AbstractPipe
      Throws:
      ConfigurationException
    • doPipe

      public PipeRunResult doPipe(Message message, PipeLineSession session) throws PipeRunException
      Description copied from interface: IPipe
      This is where the action takes place. Pipes may only throw a PipeRunException, to be handled by the caller of this object. Implementations must either consume the message, or pass it on to the next Pipe in the PipeRunResult. If the result of the Pipe does not depend on the input, like for the FixedResultPipe, the Pipe can schedule the input to be closed at session exit, by calling Message.closeOnCloseOf(PipeLineSession, String) This allows the previous Pipe to release any resources (e.g. connections) that it might have kept open until the message was consumed. Doing so avoids connections leaking from pools, while it enables efficient streaming processing of data while it is being read from a stream.
      Throws:
      PipeRunException
    • consumesSessionVariable

      public boolean consumesSessionVariable(String sessionKey)
      Description copied from interface: IPipe
      returns true if the pipe or one of its children use the named session variable. Callers can use this to determine if a message needs to be preserved.
      Specified by:
      consumesSessionVariable in interface IPipe
      Overrides:
      consumesSessionVariable in class AbstractPipe
    • setSessionKey

      @Deprecated(forRemoval=true, since="7.7.0") @ConfigurationWarning("Please use getInputFromSessionKey instead.") public void setSessionKey(String sessionKey)
      Deprecated, for removal: This API element is subject to removal in a future version.
      name of the key in the pipelinesession to retrieve the input-message from. if not set, the current input message of the pipe is taken. n.b. same as getinputfromsessionkey
    • setExpressionValue

      public void setExpressionValue(String expressionValue)
      a string to compare the result of the xpathExpression (or the input-message itself) to. If not specified, a non-empty result leads to the 'then'-forward, an empty result to 'else'-forward
    • setThenForwardName

      public void setThenForwardName(String thenForwardName)
      forward returned when output is true
      Default value
      then
    • setElseForwardName

      public void setElseForwardName(String elseForwardName)
      forward returned when output is false
      Default value
      else
    • setXpathExpression

      public void setXpathExpression(String string)
      xpath expression to be applied to the input-message. if not set, no transformation is done
    • setRegex

      @Deprecated(forRemoval=true, since="9.0") @ConfigurationWarning("Use RegExPipe instead") public void setRegex(String regex)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Regular expression to be applied to the input-message (ignored if xpathExpression is specified). The input-message fully matching the given regular expression leads to the 'then'-forward
    • setXsltVersion

      public void setXsltVersion(int xsltVersion)
      If set to 2 or 3 a Saxon (net.sf.saxon) xslt processor 2.0 or 3.0 respectively will be used, otherwise xslt processor 1.0 (org.apache.xalan)
      Default value
      2
    • setNamespaceDefs

      public void setNamespaceDefs(String namespaceDefs)
      namespace definitions for xpathExpression. Must be in the form of a comma or space separated list of prefix=namespaceuri definitions.
    • setNamespaceAware

      public void setNamespaceAware(boolean b)
      controls namespace-awareness of XSLT transformation
      Default value
      true
    • getNamespaceDefs

      public String getNamespaceDefs()
    • getSessionKey

      public String getSessionKey()
    • getXpathExpression

      public String getXpathExpression()
    • getExpressionValue

      public String getExpressionValue()
    • getThenForwardName

      public String getThenForwardName()
    • getElseForwardName

      public String getElseForwardName()
    • getRegex

      public String getRegex()
    • getXsltVersion

      public int getXsltVersion()
    • isNamespaceAware

      public boolean isNamespaceAware()