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