Class ForkAdjunct


  • public class ForkAdjunct
    extends StreamingAdjunct
    Streaming code to implement an xsl:fork expression

    The general strategy is to create an inversion of the expression in each prong of the fork, and to create a separate watch for each one. These watches create output which is buffered, and on completion the outputs of each watch are assembled in the right order.

    The implementation is NOT multithreaded: although the prongs of the fork execute conceptually in parallel, in that they all act as listeners responding to the same sequence of events, they actually all run in the same thread.

    • Constructor Detail

      • ForkAdjunct

        public ForkAdjunct()
    • Method Detail

      • computeStreamability

        public PostureAndSweep computeStreamability​(ContextItemStaticInfoEE contextInfo,
                                                    java.util.List<java.lang.String> reasons)
        Compute the posture and sweep of this expression as defined in the W3C streamability specifications. This must be implemented in all subclasses that don't use the general streamability rules.
        Overrides:
        computeStreamability in class StreamingAdjunct
        Parameters:
        contextInfo - Information about the context item type and posture
        reasons - the caller may supply a list, in which case the implementation may add to this
        Returns:
        the posture and sweep of the expression
      • getWatchMaker

        public WatchMaker getWatchMaker​(boolean forGrouping)
                                 throws XPathException
        Description copied from class: StreamingAdjunct
        Get a WatchMaker, a factory class that creates a Watch to evaluate this expression in streaming mode. This method will only be called if the getImplementationMethod() method of the expression includes the value Expression.WATCH_METHOD
        Overrides:
        getWatchMaker in class StreamingAdjunct
        Parameters:
        forGrouping - true if the selected items are being grouped
        Returns:
        a Watchmaker to evaluate the expression, or null if it is not streamable with respect to the specificed argument.
        Throws:
        XPathException - in the event of a failure