| // |
| // ======================================================================== |
| // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. |
| // ------------------------------------------------------------------------ |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // and Apache License v2.0 which accompanies this distribution. |
| // |
| // The Eclipse Public License is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // The Apache License v2.0 is available at |
| // http://www.opensource.org/licenses/apache2.0.php |
| // |
| // You may elect to redistribute this code under either of these licenses. |
| // ======================================================================== |
| // |
| |
| package org.eclipse.jetty.monitor.jmx; |
| |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.Map; |
| import java.util.concurrent.ConcurrentHashMap; |
| |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * EventState |
| * |
| * Holds the state of one or more {@link org.eclipse.jetty.monitor.jmx.EventTrigger event trigger} |
| * instances to be used when sending notifications as well as executing the actions |
| * @param <TYPE> the event trigger type |
| */ |
| public class EventState<TYPE> |
| { |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * State |
| * |
| * Holds the state of a single {@link org.eclipse.jetty.monitor.jmx.EventTrigger event trigger} |
| * @param <TYPE> the event trigger type |
| */ |
| public static class TriggerState<TYPE> |
| { |
| private final String _id; |
| private final String _desc; |
| private final TYPE _value; |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Construct a trigger state |
| * |
| * @param id unique identification string of the associated event trigger |
| * @param desc description of the associated event trigger |
| * @param value effective value of the MXBean attribute (if applicable) |
| */ |
| public TriggerState(String id, String desc, TYPE value) |
| { |
| _id = id; |
| _desc = desc; |
| _value = value; |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Retrieve the identification string of associated event trigger |
| * |
| * @return unique identification string |
| */ |
| public String getID() |
| { |
| return _id; |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Retrieve the description string set by event trigger |
| * |
| * @return description string |
| */ |
| public String getDescription() |
| { |
| return _desc; |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Retrieve the effective value of the MXBean attribute (if applicable) |
| * |
| * @return attribute value |
| */ |
| public TYPE getValue() |
| { |
| return _value; |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * @return string representation of the state |
| */ |
| public String toString() |
| { |
| StringBuilder result = new StringBuilder(); |
| |
| result.append(_desc); |
| result.append('='); |
| result.append(_value); |
| |
| return result.toString(); |
| } |
| } |
| |
| protected Map<String, TriggerState<TYPE>> _states; |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Constructs an empty event state |
| */ |
| public EventState() |
| { |
| _states = new ConcurrentHashMap<String, TriggerState<TYPE>>(); |
| } |
| |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Constructs an event state and adds a specified trigger state to it |
| * |
| * @param id unique identification string of the associated event trigger |
| * @param desc description of the associated event trigger |
| * @param value effective value of the MXBean attribute (if applicable) |
| */ |
| public EventState(String id, String desc, TYPE value) |
| { |
| this(); |
| |
| add(new TriggerState<TYPE>(id, desc, value)); |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Adds a trigger state to the event state |
| * |
| * @param state trigger state to add |
| */ |
| public void add(TriggerState<TYPE> state) |
| { |
| _states.put(state.getID(), state); |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Adds a collection of trigger states to the event state |
| * |
| * @param entries collection of trigger states to add |
| */ |
| public void addAll(Collection<TriggerState<TYPE>> entries) |
| { |
| for (TriggerState<TYPE> entry : entries) |
| { |
| add(entry); |
| } |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Retrieves a single trigger state |
| * |
| * @param id unique identification string of the event trigger |
| * @return requested trigger state or null if not found |
| */ |
| public TriggerState<TYPE> get(String id) |
| { |
| return _states.get(id); |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Retrieves a collection of all trigger states of the event state |
| * |
| * @return collection of the trigger states |
| */ |
| public Collection<TriggerState<TYPE>> values() |
| { |
| return Collections.unmodifiableCollection(_states.values()); |
| } |
| |
| /* ------------------------------------------------------------ */ |
| /** |
| * Returns a string representation of the event state |
| * |
| * @return string representation of the event state |
| */ |
| public String toString() |
| { |
| int cnt = 0; |
| StringBuilder result = new StringBuilder(); |
| |
| for (TriggerState<TYPE> value : _states.values()) |
| { |
| result.append(cnt++>0?"#":""); |
| result.append(value.toString()); |
| } |
| |
| return result.toString(); |
| } |
| } |