Class NotifyBuilder


  • public class NotifyBuilder
    extends Object
    A builder to build an expression based on EventNotifier notifications about Exchange being routed.

    This builder can be used for testing purposes where you want to know when a test is supposed to be done. The idea is that you can build an expression that explains when the test is done. For example when Camel have finished routing 5 messages. You can then in your test await for this condition to occur.

    • Constructor Detail

      • NotifyBuilder

        public NotifyBuilder​(org.apache.camel.CamelContext context)
        Creates a new builder.
        Parameters:
        context - the Camel context
    • Method Detail

      • from

        public NotifyBuilder from​(String endpointUri)
        Optionally a from endpoint which means that this expression should only be based on Exchange which is originated from the particular endpoint(s).
        Parameters:
        endpointUri - uri of endpoint or pattern (see the EndpointHelper javadoc)
        Returns:
        the builder
        See Also:
        EndpointHelper.matchEndpoint(org.apache.camel.CamelContext, String, String)
      • fromRoute

        public NotifyBuilder fromRoute​(String routeId)
        Optionally a from route which means that this expression should only be based on Exchange which is originated from the particular route(s).
        Parameters:
        routeId - id of route or pattern (see the EndpointHelper javadoc)
        Returns:
        the builder
        See Also:
        EndpointHelper.matchEndpoint(org.apache.camel.CamelContext, String, String)
      • fromCurrentRoute

        public NotifyBuilder fromCurrentRoute​(String routeId)
        Optionally a from current route which means that this expression should only be based on Exchange which is the current route(s).
        Parameters:
        routeId - id of route or pattern (see the EndpointHelper javadoc)
        Returns:
        the builder
        See Also:
        EndpointHelper.matchEndpoint(org.apache.camel.CamelContext, String, String)
      • filter

        public NotifyBuilder filter​(org.apache.camel.Predicate predicate)
        Optionally a filter to only allow matching Exchange to be used for matching.
        Parameters:
        predicate - the predicate to use for the filter
        Returns:
        the builder
      • wereSentTo

        public NotifyBuilder wereSentTo​(String endpointUri)
        Optionally a sent to endpoint which means that this expression should only be based on Exchange which has been sent to the given endpoint uri.

        Notice the Exchange may have been sent to other endpoints as well. This condition will match if the Exchange has been sent at least once to the given endpoint.

        Parameters:
        endpointUri - uri of endpoint or pattern (see the EndpointHelper javadoc)
        Returns:
        the builder
        See Also:
        EndpointHelper.matchEndpoint(org.apache.camel.CamelContext, String, String)
      • whenReceived

        public NotifyBuilder whenReceived​(int number)
        Sets a condition when number of Exchange has been received.

        The number matching is at least based which means that if more messages received it will match also.

        Parameters:
        number - at least number of messages
        Returns:
        the builder
      • whenDone

        public NotifyBuilder whenDone​(int number)
        Sets a condition when number of Exchange is done being processed.

        The number matching is at least based which means that if more messages received it will match also.

        The difference between done and completed is that done can also include failed messages, where as completed is only successful processed messages.

        Parameters:
        number - at least number of messages
        Returns:
        the builder
      • whenDoneByIndex

        public NotifyBuilder whenDoneByIndex​(int index)
        Sets a condition when tne n'th (by index) Exchange is done being processed.

        The difference between done and completed is that done can also include failed messages, where as completed is only successful processed messages.

        Parameters:
        index - the message by index to be done
        Returns:
        the builder
      • whenCompleted

        public NotifyBuilder whenCompleted​(int number)
        Sets a condition when number of Exchange has been completed.

        The number matching is at least based which means that if more messages received it will match also.

        The difference between done and completed is that done can also include failed messages, where as completed is only successful processed messages.

        Parameters:
        number - at least number of messages
        Returns:
        the builder
      • whenFailed

        public NotifyBuilder whenFailed​(int number)
        Sets a condition when number of Exchange has failed.

        The number matching is at least based which means that if more messages received it will match also.

        Parameters:
        number - at least number of messages
        Returns:
        the builder
      • whenExactlyDone

        public NotifyBuilder whenExactlyDone​(int number)
        Sets a condition when number of Exchange is done being processed.

        messages, where as completed is only successful processed messages.

        Parameters:
        number - exactly number of messages
        Returns:
        the builder
      • whenExactlyCompleted

        public NotifyBuilder whenExactlyCompleted​(int number)
        Sets a condition when number of Exchange has been completed.

        The difference between done and completed is that done can also include failed messages, where as completed is only successful processed messages.

        Parameters:
        number - exactly number of messages
        Returns:
        the builder
      • whenExactlyFailed

        public NotifyBuilder whenExactlyFailed​(int number)
        Sets a condition when number of Exchange has failed.
        Parameters:
        number - exactly number of messages
        Returns:
        the builder
      • whenAnyReceivedMatches

        public NotifyBuilder whenAnyReceivedMatches​(org.apache.camel.Predicate predicate)
        Sets a condition that any received Exchange should match the Predicate
        Parameters:
        predicate - the predicate
        Returns:
        the builder
      • whenAnyDoneMatches

        public NotifyBuilder whenAnyDoneMatches​(org.apache.camel.Predicate predicate)
        Sets a condition that any done Exchange should match the Predicate
        Parameters:
        predicate - the predicate
        Returns:
        the builder
      • whenAllReceivedMatches

        public NotifyBuilder whenAllReceivedMatches​(org.apache.camel.Predicate predicate)
        Sets a condition that all received Exchange should match the Predicate
        Parameters:
        predicate - the predicate
        Returns:
        the builder
      • whenAllDoneMatches

        public NotifyBuilder whenAllDoneMatches​(org.apache.camel.Predicate predicate)
        Sets a condition that all done Exchange should match the Predicate
        Parameters:
        predicate - the predicate
        Returns:
        the builder
      • whenExactBodiesReceived

        public NotifyBuilder whenExactBodiesReceived​(Object... bodies)
        Sets a condition that the bodies is expected to be received in the order as well.

        This condition is strict which means that it only expect that exact number of bodies

        Parameters:
        bodies - the expected bodies
        Returns:
        the builder
        See Also:
        whenBodiesReceived(Object...)
      • whenExactBodiesDone

        public NotifyBuilder whenExactBodiesDone​(Object... bodies)
        Sets a condition that the bodies is expected to be done in the order as well.

        This condition is strict which means that it only expect that exact number of bodies

        Parameters:
        bodies - the expected bodies
        Returns:
        the builder
        See Also:
        whenExactBodiesDone(Object...)
      • whenDoneSatisfied

        public NotifyBuilder whenDoneSatisfied​(org.apache.camel.spi.NotifyBuilderMatcher matcher)
        Sets a condition when the provided matcher (such as mock endpoint) is satisfied based on Exchange being sent to it when they are done.

        The idea is that you can use mock endpoints (or other matchers) for setting fine grained expectations and then use that together with this builder. The mock provided does NOT have to already exist in the route. You can just create a new pseudo mock and this builder will send the done Exchange to it. So its like adding the mock to the end of your route(s).

        Parameters:
        matcher - the matcher such as mock endpoint
        Returns:
        the builder
      • whenReceivedSatisfied

        public NotifyBuilder whenReceivedSatisfied​(org.apache.camel.spi.NotifyBuilderMatcher matcher)
        Sets a condition when the provided matcher (such as mock endpoint) is satisfied based on Exchange being sent to it when they are received.

        The idea is that you can use mock endpoints (or other matchers) for setting fine grained expectations and then use that together with this builder. The mock provided does NOT have to already exist in the route. You can just create a new pseudo mock and this builder will send the done Exchange to it. So its like adding the mock to the end of your route(s).

        Parameters:
        matcher - the matcher such as mock endpoint
        Returns:
        the builder
      • whenReceivedNotSatisfied

        public NotifyBuilder whenReceivedNotSatisfied​(org.apache.camel.spi.NotifyBuilderMatcher matcher)
        Sets a condition when the provided matcher (such as mock endpoint) is not satisfied based on Exchange being sent to it when they are received.

        The idea is that you can use mock endpoints (or other matchers) for setting fine grained expectations and then use that together with this builder. The mock provided does NOT have to already exist in the route. You can just create a new pseudo mock and this builder will send the done Exchange to it. So its like adding the mock to the end of your route(s).

        Parameters:
        matcher - the matcher such as mock endpoint
        Returns:
        the builder
      • whenDoneNotSatisfied

        public NotifyBuilder whenDoneNotSatisfied​(org.apache.camel.spi.NotifyBuilderMatcher matcher)
        Sets a condition when the provided matcher (such as mock endpoint) is not satisfied based on Exchange being sent to it when they are done.

        The idea is that you can use mock endpoints (or other matchers) for setting fine grained expectations and then use that together with this builder. The mock provided does NOT have to already exist in the route. You can just create a new pseudo mock and this builder will send the done Exchange to it. So its like adding the mock to the end of your route(s).

        Parameters:
        matcher - the matcher such as mock endpoint
        Returns:
        the builder
      • and

        public NotifyBuilder and()
        Prepares to append an additional expression using the and operator.
        Returns:
        the builder
      • or

        public NotifyBuilder or()
        Prepares to append an additional expression using the or operator.
        Returns:
        the builder
      • not

        public NotifyBuilder not()
        Prepares to append an additional expression using the not operator.
        Returns:
        the builder
      • create

        public NotifyBuilder create()
        Creates the expression this builder should use for matching.

        You must call this method when you are finished building the expressions.

        Returns:
        the created builder ready for matching
      • destroy

        public void destroy()
        De-registers this builder from its CamelContext.

        Once destroyed, this instance will not function again.

      • matches

        public boolean matches()
        Does all the expression match?

        This operation will return immediately which means it can be used for testing at this very moment.

        Returns:
        true if matching, false otherwise
      • matches

        public boolean matches​(long timeout,
                               TimeUnit timeUnit)
        Does all the expression match?

        This operation will wait until the match is true or otherwise a timeout occur which means false will be returned.

        Parameters:
        timeout - the timeout value
        timeUnit - the time unit
        Returns:
        true if matching, false otherwise due to timeout
      • matchesMockWaitTime

        @Deprecated
        public boolean matchesMockWaitTime()
        Deprecated.
        use matchesWaitTime() instead
        Does all the expressions match?

        This operation will wait until the match is true or otherwise a timeout occur which means false will be returned.

        The timeout value is by default 10 seconds.

        Returns:
        true if matching, false otherwise due to timeout
      • matchesWaitTime

        public boolean matchesWaitTime()
        Does all the expressions match?

        This operation will wait until the match is true or otherwise a timeout occur which means false will be returned.

        The timeout value is by default 10 seconds.

        Returns:
        true if matching, false otherwise due to timeout
      • reset

        public void reset()
        Resets the notifier.