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 static java.util.UUID.randomUUID; 23 24 /* ------------------------------------------------------------ */ 25 /** 26 * EventTrigger 27 * 28 * Abstract base class for all EventTrigger implementations. 29 * Used to determine whether the necessary conditions for 30 * triggering an event are present. 31 */ 32 public abstract class EventTrigger 33 { 34 private final String _id; 35 36 /* ------------------------------------------------------------ */ 37 /** 38 * Construct an event trigger 39 */ 40 public EventTrigger() 41 { 42 _id = randomUUID().toString(); 43 } 44 45 /* ------------------------------------------------------------ */ 46 /** 47 * Retrieve the identification string of the event trigger 48 * 49 * @return unique identification string 50 */ 51 public String getID() 52 { 53 return _id; 54 } 55 56 /* ------------------------------------------------------------ */ 57 /** 58 * Abstract method to verify if the event trigger conditions 59 * are in the appropriate state for an event to be triggered 60 * 61 * @return true to trigger an event 62 */ 63 public abstract boolean match(long timestamp) throws Exception; 64 65 /* ------------------------------------------------------------ */ 66 /** 67 * Retrieve the event state associated with specified invocation 68 * of the event trigger match method 69 * 70 * @param timestamp time stamp associated with invocation 71 * @return event state or null if not found 72 */ 73 public abstract EventState<?> getState(long timestamp); 74 }