1 // ======================================================================== 2 // Copyright (c) Webtide LLC 3 // ------------------------------------------------------------------------ 4 // All rights reserved. This program and the accompanying materials 5 // are made available under the terms of the Eclipse Public License v1.0 6 // and Apache License v2.0 which accompanies this distribution. 7 // The Eclipse Public License is available at 8 // http://www.eclipse.org/legal/epl-v10.html 9 // The Apache License v2.0 is available at 10 // http://www.opensource.org/licenses/apache2.0.php 11 // You may elect to redistribute this code under either of these licenses. 12 // ======================================================================== 13 14 15 package org.eclipse.jetty.monitor.jmx; 16 17 import java.util.Collection; 18 import java.util.Collections; 19 import java.util.HashSet; 20 import java.util.Set; 21 22 23 24 /* ------------------------------------------------------------ */ 25 /** 26 * NotifierGroup 27 * 28 * This class allows for grouping of the event notifiers 29 */ 30 public class NotifierGroup implements EventNotifier 31 { 32 private Set<EventNotifier> _group; 33 34 /* ------------------------------------------------------------ */ 35 /** 36 * Create a notifier group 37 */ 38 public NotifierGroup() 39 { 40 _group = new HashSet<EventNotifier>(); 41 } 42 43 /* ------------------------------------------------------------ */ 44 /** 45 * Retrieve all event notifier associated with this group 46 * 47 * @return collection of event notifiers 48 */ 49 public Collection<EventNotifier> getNotifiers() 50 { 51 return Collections.unmodifiableSet(_group); 52 } 53 54 /* ------------------------------------------------------------ */ 55 /** 56 * Add specified event notifier to event notifier group 57 * 58 * @param notifier event notifier to be added 59 * @return true if successful 60 */ 61 public boolean addNotifier(EventNotifier notifier) 62 { 63 return _group.add(notifier); 64 } 65 66 /* ------------------------------------------------------------ */ 67 /** 68 * Add a collection of event notifiers to event notifier group 69 * 70 * @param notifiers collection of event notifiers to be added 71 * @return true if successful 72 */ 73 public boolean addNotifiers(Collection<EventNotifier> notifiers) 74 { 75 return _group.addAll(notifiers); 76 } 77 78 /* ------------------------------------------------------------ */ 79 /** 80 * Remove event notifier from event notifier group 81 * 82 * @param notifier event notifier to be removed 83 * @return true if successful 84 */ 85 public boolean removeNotifier(EventNotifier notifier) 86 { 87 return _group.remove(notifier); 88 } 89 90 /* ------------------------------------------------------------ */ 91 /** 92 * Remove a collection of event notifiers from event notifier group 93 * 94 * @param notifiers collection of event notifiers to be removed 95 * @return true if successful 96 */ 97 public boolean removeNotifiers(Collection<EventNotifier> notifiers) 98 { 99 return _group.removeAll(notifiers); 100 } 101 102 /* ------------------------------------------------------------ */ 103 /** 104 * Invoke the notify() method of each of the notifiers in group 105 * 106 * @see org.eclipse.jetty.monitor.jmx.EventNotifier#notify(org.eclipse.jetty.monitor.jmx.EventTrigger, org.eclipse.jetty.monitor.jmx.EventState, long) 107 */ 108 public void notify(EventTrigger trigger, EventState<?> state, long timestamp) 109 { 110 for (EventNotifier notifier: _group) 111 { 112 notifier.notify(trigger, state, timestamp); 113 } 114 } 115 }