Interface Event<T extends Enum<T>>

    • Method Detail

      • getType

        T getType()
        Return the Event's type.
        Returns:
        the Event's type
      • getDispatcher

        EventDispatcher getDispatcher()
        Return the EventDispatcher this event was raised by.
        Returns:
        the EventDispatcher this event was raised by
      • nextInterceptor

        void nextInterceptor()
                      throws RuntimeException
        Dispatch this event to the next EventInterceptor in the chain if one exists. After each subsequent interceptor has run, this method will return giving the caller the opportunity to observe any side effects caused by down stream EventInterceptors. EventInterceptors that do not explicitly call this method will not prevent other interceptors from being executed, but rather will not have the opportunity to see any side effects of those interceptors.

        In the following example an interceptor looks for an INSERTING storage event, and calls nextInterceptor. This allows "more application logic" to look at the effects of other interceptors down stream. If the event is not an INSERTING storage event, the interceptor is not interested in the side effects, and simply returns.

        
         public void onEvent(Event event)
           {
           if (event.getType() == StorageEntryEvent.INSERTING)
             {
             // application logic
        
             event.nextInterceptor();
        
             // more application logic
             }
           }
         
        If an Exception is thrown by an interceptor's onEvent method and this event is pre-committed, the processing of further interceptors will be terminated, the exception is re-thrown and the operation that generated the event will fail. If this event is immutable however, the exception will be caught and logged and normal processing of subsequent interceptors will continue.

        Throws:
        RuntimeException