EventService Event <-- EventService.EventService.EventService() <-- EventService.EventService.publish(EventService.Event) <-- EventService.Filter.apply(EventService.Event) <-- EventService.Subscriber.inform(EventService.Event) <-- NetworkManagementApp.Events.CriticalFaultFilter.apply(EventService.Event) <-- NetworkManagementApp.Events.ManagementEvent <-- NetworkManagementApp.Main.main(java.lang.String[]) <-- NetworkManagementApp.Publishers.Hub.triggerPublication(EventService.Event) <-- NetworkManagementApp.Publishers.Router.triggerPublication(EventService.Event) <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) --> java.lang.Object * EventService <-- NetworkManagementApp.Publishers.Hub.triggerPublication(EventService.Event) <-- NetworkManagementApp.Publishers.Router.triggerPublication(EventService.Event) <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() --> java.lang.Object * EventService() --> EventService.Event --> EventService.EventService.eventClass <-- EventService.EventService.instance() --> EventService.EventService.subscriptions --> java.lang.Class * --> java.lang.Object.Object() * --> java.util.ArrayList.ArrayList() * --> java.util.List * eventClass <-- EventService.EventService.EventService() <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.Class * instance() --> EventService.EventService.EventService() --> EventService.EventService.singleton <-- NetworkManagementApp.Publishers.Hub.triggerPublication(EventService.Event) <-- NetworkManagementApp.Publishers.Router.triggerPublication(EventService.Event) <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() publish(EventService.Event) --> EventService.Event --> EventService.EventService.subscriptions --> EventService.Filter --> EventService.Filter.apply(EventService.Event) --> EventService.Subscriber --> EventService.Subscriber.inform(EventService.Event) --> EventService.Subscription --> EventService.Subscription.eventType --> EventService.Subscription.filter --> EventService.Subscription.subscriber <-- NetworkManagementApp.Publishers.Hub.triggerPublication(EventService.Event) <-- NetworkManagementApp.Publishers.Router.triggerPublication(EventService.Event) --> java.lang.Class * --> java.lang.Class.isAssignableFrom(java.lang.Class) * --> java.lang.Object * --> java.lang.Object.getClass() * --> java.util.Iterator * --> java.util.Iterator.hasNext() * --> java.util.Iterator.next() * --> java.util.List * --> java.util.List.iterator() * singleton <-- EventService.EventService.instance() <-- EventService.EventService.static {} static {} --> EventService.EventService.singleton subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.EventService.eventClass --> EventService.EventService.subscriptions --> EventService.Filter --> EventService.InvalidEventTypeException --> EventService.InvalidEventTypeException.InvalidEventTypeException() --> EventService.Subscriber --> EventService.Subscription --> EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() --> java.lang.Class * --> java.lang.Class.isAssignableFrom(java.lang.Class) * --> java.lang.Object * --> java.util.List * --> java.util.List.add(java.lang.Object) * --> java.util.List.contains(java.lang.Object) * subscriptions <-- EventService.EventService.EventService() <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.util.List * unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.EventService.eventClass --> EventService.EventService.subscriptions --> EventService.Filter --> EventService.InvalidEventTypeException --> EventService.InvalidEventTypeException.InvalidEventTypeException() --> EventService.Subscriber --> EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.Class * --> java.lang.Class.isAssignableFrom(java.lang.Class) * --> java.lang.Object * --> java.util.List * --> java.util.List.remove(java.lang.Object) * Filter <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.filter <-- NetworkManagementApp.Events.CriticalFaultFilter <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() --> java.lang.Object * apply(EventService.Event) --> EventService.Event <-- EventService.EventService.publish(EventService.Event) InvalidEventTypeException <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.RuntimeException * InvalidEventTypeException() <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.RuntimeException.RuntimeException() * Subscriber <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.subscriber <-- NetworkManagementApp.Subscribers.ErrorLogger <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() --> java.lang.Object * inform(EventService.Event) --> EventService.Event <-- EventService.EventService.publish(EventService.Event) Subscription <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.Object * Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.Filter --> EventService.Subscriber --> EventService.Subscription.eventType --> EventService.Subscription.filter --> EventService.Subscription.subscriber --> java.lang.Class * --> java.lang.Object.Object() * eventType <-- EventService.EventService.publish(EventService.Event) <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) --> java.lang.Class * filter <-- EventService.EventService.publish(EventService.Event) --> EventService.Filter <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) subscriber <-- EventService.EventService.publish(EventService.Event) --> EventService.Subscriber <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) NetworkManagementApp Main --> java.lang.Object * Main() --> java.lang.Object.Object() * main(java.lang.String[]) --> EventService.Event --> NetworkManagementApp.Events.FaultEvent.FaultEvent(int, java.lang.String) --> NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String, java.lang.String) --> NetworkManagementApp.Publishers.Hub.triggerPublication(EventService.Event) --> NetworkManagementApp.Publishers.Router.triggerPublication(EventService.Event) --> NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() --> NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() --> NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() --> java.lang.String * NetworkManagementApp.Events CriticalFaultFilter --> EventService.Filter --> java.lang.Object * CriticalFaultFilter() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() --> java.lang.Object.Object() * apply(EventService.Event) --> EventService.Event --> NetworkManagementApp.Events.FaultEvent --> NetworkManagementApp.Events.FaultEvent.severity FaultEvent <-- NetworkManagementApp.Events.CriticalFaultFilter.apply(EventService.Event) --> NetworkManagementApp.Events.ManagementEvent <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) --> java.lang.Object * CRITICAL FaultEvent(int, java.lang.String) --> NetworkManagementApp.Events.FaultEvent.severity --> NetworkManagementApp.Events.FaultEvent.source <-- NetworkManagementApp.Main.main(java.lang.String[]) --> java.lang.Object.Object() * --> java.lang.String * FaultEvent(java.lang.String) --> NetworkManagementApp.Events.FaultEvent.severity --> NetworkManagementApp.Events.FaultEvent.source --> java.lang.Object.Object() * --> java.lang.String * LOW MODERATE severity <-- NetworkManagementApp.Events.CriticalFaultFilter.apply(EventService.Event) <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(int, java.lang.String) <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(java.lang.String) <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) source <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(int, java.lang.String) <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(java.lang.String) <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) --> java.lang.String * ManagementEvent --> EventService.Event <-- NetworkManagementApp.Events.FaultEvent <-- NetworkManagementApp.Events.StatusEvent --> java.lang.Object * StatusEvent --> NetworkManagementApp.Events.ManagementEvent <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) --> java.lang.Object * StatusEvent(java.lang.String) --> NetworkManagementApp.Events.StatusEvent.source --> NetworkManagementApp.Events.StatusEvent.status --> java.lang.Object.Object() * --> java.lang.String * StatusEvent(java.lang.String, java.lang.String) --> NetworkManagementApp.Events.StatusEvent.source --> NetworkManagementApp.Events.StatusEvent.status <-- NetworkManagementApp.Main.main(java.lang.String[]) --> java.lang.Object.Object() * --> java.lang.String * source <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String, java.lang.String) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) --> java.lang.String * status <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String, java.lang.String) --> java.lang.String * NetworkManagementApp.Publishers Hub --> java.lang.Object * Hub() --> java.lang.Object.Object() * triggerPublication(EventService.Event) --> EventService.Event --> EventService.EventService --> EventService.EventService.instance() --> EventService.EventService.publish(EventService.Event) <-- NetworkManagementApp.Main.main(java.lang.String[]) Router --> java.lang.Object * Router() --> java.lang.Object.Object() * triggerPublication(EventService.Event) --> EventService.Event --> EventService.EventService --> EventService.EventService.instance() --> EventService.EventService.publish(EventService.Event) <-- NetworkManagementApp.Main.main(java.lang.String[]) NetworkManagementApp.Subscribers ErrorLogger --> EventService.Subscriber --> java.lang.Object * ErrorLogger() --> EventService.EventService --> EventService.EventService.instance() --> EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.Filter --> EventService.Subscriber --> NetworkManagementApp.Events.FaultEvent <-- NetworkManagementApp.Main.main(java.lang.String[]) --> java.lang.Class * --> java.lang.Object.Object() * inform(EventService.Event) --> EventService.Event --> NetworkManagementApp.Events.FaultEvent --> NetworkManagementApp.Events.FaultEvent.severity --> NetworkManagementApp.Events.FaultEvent.source --> java.io.PrintStream * --> java.io.PrintStream.println(java.lang.String) * --> java.lang.String * --> java.lang.System.out * PagingSystem --> EventService.Subscriber --> java.lang.Object * PagingSystem() --> EventService.EventService --> EventService.EventService.instance() --> EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.Filter --> EventService.Subscriber --> NetworkManagementApp.Events.CriticalFaultFilter.CriticalFaultFilter() --> NetworkManagementApp.Events.FaultEvent <-- NetworkManagementApp.Main.main(java.lang.String[]) --> java.lang.Class * --> java.lang.Object.Object() * inform(EventService.Event) --> EventService.Event --> NetworkManagementApp.Events.FaultEvent --> NetworkManagementApp.Events.FaultEvent.source --> java.io.PrintStream * --> java.io.PrintStream.println(java.lang.String) * --> java.lang.String * --> java.lang.System.out * StatusConsole --> EventService.Subscriber --> java.lang.Object * StatusConsole() --> EventService.EventService --> EventService.EventService.instance() --> EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) --> EventService.Filter --> EventService.Subscriber --> NetworkManagementApp.Events.FaultEvent --> NetworkManagementApp.Events.StatusEvent <-- NetworkManagementApp.Main.main(java.lang.String[]) --> java.lang.Class * --> java.lang.Object.Object() * inform(EventService.Event) --> EventService.Event --> NetworkManagementApp.Events.FaultEvent --> NetworkManagementApp.Events.FaultEvent.source --> NetworkManagementApp.Events.StatusEvent --> NetworkManagementApp.Events.StatusEvent.source --> java.io.PrintStream * --> java.io.PrintStream.println(java.lang.String) * --> java.lang.String * --> java.lang.System.out * java.io * PrintStream * <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) println(java.lang.String) * <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) java.lang * Class * <-- EventService.EventService.EventService() <-- EventService.EventService.eventClass <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Subscription.eventType <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() isAssignableFrom(java.lang.Class) * <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) Object * <-- EventService.Event <-- EventService.EventService <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.Filter <-- EventService.Subscriber <-- EventService.Subscription <-- NetworkManagementApp.Events.CriticalFaultFilter <-- NetworkManagementApp.Events.FaultEvent <-- NetworkManagementApp.Events.ManagementEvent <-- NetworkManagementApp.Events.StatusEvent <-- NetworkManagementApp.Main <-- NetworkManagementApp.Publishers.Hub <-- NetworkManagementApp.Publishers.Router <-- NetworkManagementApp.Subscribers.ErrorLogger <-- NetworkManagementApp.Subscribers.PagingSystem <-- NetworkManagementApp.Subscribers.StatusConsole Object() * <-- EventService.EventService.EventService() <-- EventService.Subscription.Subscription(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- NetworkManagementApp.Events.CriticalFaultFilter.CriticalFaultFilter() <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(int, java.lang.String) <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String, java.lang.String) <-- NetworkManagementApp.Main.Main() <-- NetworkManagementApp.Publishers.Hub.Hub() <-- NetworkManagementApp.Publishers.Router.Router() <-- NetworkManagementApp.Subscribers.ErrorLogger.ErrorLogger() <-- NetworkManagementApp.Subscribers.PagingSystem.PagingSystem() <-- NetworkManagementApp.Subscribers.StatusConsole.StatusConsole() getClass() * <-- EventService.EventService.publish(EventService.Event) RuntimeException * <-- EventService.InvalidEventTypeException RuntimeException() * <-- EventService.InvalidEventTypeException.InvalidEventTypeException() String * <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(int, java.lang.String) <-- NetworkManagementApp.Events.FaultEvent.FaultEvent(java.lang.String) <-- NetworkManagementApp.Events.FaultEvent.source <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.StatusEvent(java.lang.String, java.lang.String) <-- NetworkManagementApp.Events.StatusEvent.source <-- NetworkManagementApp.Events.StatusEvent.status <-- NetworkManagementApp.Main.main(java.lang.String[]) <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) System * out * <-- NetworkManagementApp.Subscribers.ErrorLogger.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.PagingSystem.inform(EventService.Event) <-- NetworkManagementApp.Subscribers.StatusConsole.inform(EventService.Event) java.util * ArrayList * ArrayList() * <-- EventService.EventService.EventService() Iterator * <-- EventService.EventService.publish(EventService.Event) hasNext() * <-- EventService.EventService.publish(EventService.Event) next() * <-- EventService.EventService.publish(EventService.Event) List * <-- EventService.EventService.EventService() <-- EventService.EventService.publish(EventService.Event) <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) <-- EventService.EventService.subscriptions <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) add(java.lang.Object) * <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) contains(java.lang.Object) * <-- EventService.EventService.subscribe(java.lang.Class, EventService.Filter, EventService.Subscriber) iterator() * <-- EventService.EventService.publish(EventService.Event) remove(java.lang.Object) * <-- EventService.EventService.unsubscribe(java.lang.Class, EventService.Filter, EventService.Subscriber)