Interface IMessageFilter<M>

  • All Known Implementing Classes:
    ElFilter, Filters.RejectSubtypes, Filters.SubtypesOnly

    public interface IMessageFilter<M>
    Message filters can be used to control what messages are delivered to a specific message handler. Filters are attached to message handler using the @Handler annotation. If a message handler specifies filters, the filters accepts(...) method will be checked before the actual handler is invoked. The handler will be invoked only if each filter accepted the message. Example:
     
     @Listener
     @Filters(Urlfilter.class)
     public void someHandler(String message){...}
    
     class Urlfilter implements IMessageFilter{
         public boolean accepts(String message, SubscriptionContext context){
             return message.startsWith("http");
         }
     }
    
     bus.post("http://www.infoq.com"); // will be delivered
     bus.post("www.stackoverflow.com"); // will not be delivered
    
     
     
    NOTE: A message filter must provide a no-arg constructor!!!
    • Method Detail

      • accepts

        boolean accepts​(M message,
                        SubscriptionContext context)
        Check whether the message matches some criteria
        Parameters:
        message - The message to be handled by the handler
        context - The context object containing a description of the message handler and the bus environment
        Returns:
        true: if the message matches the criteria and should be delivered to the handler false: otherwise