1 /******************************************************************************* 2 * Copyright (c) 2007, 2014 Massimiliano Ziccardi 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of 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, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 *******************************************************************************/ 16 package it.jnrpe.events; 17 18 import it.jnrpe.JNRPEExecutionContext; 19 20 import java.util.Collection; 21 22 /** 23 * This is an utility class than can be used to send simply events to all the 24 * registered listeners. 25 * 26 * @author Massimiliano Ziccardi 27 */ 28 public final class EventsUtil { 29 30 /** 31 * Private default constructor. 32 */ 33 private EventsUtil() { 34 35 } 36 37 /** 38 * This method sends log events to the registered listeners. It is an. 39 * utility method that relieve the programmer from the need to create all. 40 * the EventParam object just to send log events. Supported event type are. 41 * TRACE, DEBUG, INFO, WARNING, ERROR, FATAL. 42 * 43 * @param listenersList 44 * The list of all the listeners that will receive the event 45 * @param sender 46 * The sender of the event (usually <code>this</code>) 47 * @param evt 48 * The event type 49 * @param message 50 * The log message 51 */ 52 public static void sendEvent( 53 final Collection<IJNRPEEventListener> listenersList, 54 final Object sender, final LogEvent evt, final String message) { 55 if (listenersList == null || listenersList.isEmpty()) { 56 return; 57 } 58 59 sendEvent(listenersList, sender, evt, message, null); 60 } 61 62 public static void sendEvent(final JNRPEExecutionContext context, 63 final Object sender, final LogEvent evt, final String message) { 64 sendEvent(context, sender, evt, message, null); 65 } 66 67 public static void sendEvent(final JNRPEExecutionContext context, 68 final Object sender, final LogEvent evt, final String message, 69 final Throwable exception) { 70 sendEvent(context.getListeners(), sender, evt, message, exception); 71 } 72 73 /** 74 * This method sends log events to the registered listeners. It is an. 75 * utility method that relieve the programmer from the need to create all. 76 * the EventParam object just to send log events. Supported event type are. 77 * TRACE, DEBUG, INFO, WARNING, ERROR, FATAL. 78 * 79 * @param listenerList 80 * The list of all the listeners that will receive the event 81 * @param sender 82 * The sender of the event (usually <code>this</code>) 83 * @param evt 84 * The event type 85 * @param message 86 * The log message 87 * @param exception 88 * The exception to be, eventually, logged (can be null). 89 */ 90 public static void sendEvent( 91 final Collection<IJNRPEEventListener> listenerList, 92 final Object sender, final LogEvent evt, final String message, 93 final Throwable exception) { 94 if (listenerList == null || listenerList.isEmpty()) { 95 return; 96 } 97 98 if (sender == null || evt == null || message == null) { 99 throw new NullPointerException( 100 "The sender, evt and message parameter can't be null"); 101 } 102 103 if (exception != null) { 104 sendEvent(listenerList, sender, evt.name(), new EventMessageParam( 105 message), new EventExceptionParam(exception)); 106 } else { 107 sendEvent(listenerList, sender, evt.name(), new EventMessageParam( 108 message)); 109 } 110 } 111 112 /** 113 * This method is used to send custom events to the registered listeners. 114 * The event type can be a freely chosen string. A custom listener should be 115 * instructed to handle such event with its parameters. 116 * 117 * @param listenerList 118 * The list of all the listeners that will receive the event 119 * @param sender 120 * The sender of the event (usually <code>this</code>) 121 * @param customEvtType 122 * The custom event type 123 * @param paramsList 124 * The event parameters 125 */ 126 public static void sendEvent( 127 final Collection<IJNRPEEventListener> listenerList, 128 final Object sender, final String customEvtType, 129 final EventParam... paramsList) { 130 if (sender == null || customEvtType == null) { 131 throw new NullPointerException( 132 "The sender and event type parameter can't be null"); 133 } 134 135 if (listenerList == null || listenerList.isEmpty()) { 136 return; 137 } 138 139 SimpleEvent se = new SimpleEvent(customEvtType, paramsList); 140 141 for (IJNRPEEventListener listener : listenerList) { 142 listener.receive(sender, se); 143 } 144 } 145 }