Home | History | Annotate | Download | only in eventbus
      1 /*
      2  * Copyright (C) 2013 The Guava Authors
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
      5  * use this file except in compliance with the License. You may obtain a copy of
      6  * the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     13  * License for the specific language governing permissions and limitations under
     14  * the License.
     15  */
     16 package com.google.common.eventbus;
     17 
     18 import static com.google.common.base.Preconditions.checkNotNull;
     19 
     20 import java.lang.reflect.Method;
     21 
     22 /**
     23  * Context for an exception thrown by a subscriber.
     24  *
     25  * @since 16.0
     26  */
     27 public class SubscriberExceptionContext {
     28   private final EventBus eventBus;
     29   private final Object event;
     30   private final Object subscriber;
     31   private final Method subscriberMethod;
     32 
     33   /**
     34    * @param eventBus The {@link EventBus} that handled the event and the
     35    *     subscriber. Useful for broadcasting a a new event based on the error.
     36    * @param event The event object that caused the subscriber to throw.
     37    * @param subscriber The source subscriber context.
     38    * @param subscriberMethod the subscribed method.
     39    */
     40   SubscriberExceptionContext(EventBus eventBus, Object event, Object subscriber,
     41       Method subscriberMethod) {
     42     this.eventBus = checkNotNull(eventBus);
     43     this.event = checkNotNull(event);
     44     this.subscriber = checkNotNull(subscriber);
     45     this.subscriberMethod = checkNotNull(subscriberMethod);
     46   }
     47 
     48   /**
     49    * @return The {@link EventBus} that handled the event and the subscriber.
     50    *     Useful for broadcasting a a new event based on the error.
     51    */
     52   public EventBus getEventBus() {
     53     return eventBus;
     54   }
     55 
     56   /**
     57    * @return The event object that caused the subscriber to throw.
     58    */
     59   public Object getEvent() {
     60     return event;
     61   }
     62 
     63   /**
     64    * @return The object context that the subscriber was called on.
     65    */
     66   public Object getSubscriber() {
     67     return subscriber;
     68   }
     69 
     70   /**
     71    * @return The subscribed method that threw the exception.
     72    */
     73   public Method getSubscriberMethod() {
     74     return subscriberMethod;
     75   }
     76 }
     77