| package net.onrc.onos.core.util; |
| |
| /** |
| * Class for encapsulating events with event-related data entry. |
| */ |
| public class EventEntry<T> { |
| /** |
| * The event types. |
| */ |
| public enum Type { |
| ENTRY_ADD, // Add or update an entry |
| ENTRY_REMOVE, // Remove an entry |
| ENTRY_NOOP // NO-OP event (No Operation) |
| } |
| |
| private Type eventType; // The event type |
| private T eventData; // The relevant event data entry |
| |
| /** |
| * Constructor for a given event type and event-related data entry. |
| * |
| * @param eventType the event type. |
| * @param eventData the event data entry. |
| */ |
| public EventEntry(EventEntry.Type eventType, T eventData) { |
| this.eventType = eventType; |
| this.eventData = eventData; |
| } |
| |
| /** |
| * Creates a NO-OP event. |
| * <p/> |
| * This is a factory method that can be called without an object: |
| * <p/> |
| * <code> |
| * EventEntry<TopologyEvent> eventEntry = EventEntry.makeNoop(); |
| * </code> |
| * |
| * @return a NO-OP event. |
| */ |
| public static <T> EventEntry<T> makeNoop() { |
| return new EventEntry<T>(Type.ENTRY_NOOP, null); |
| } |
| |
| /** |
| * Tests whether the event type is ENTRY_ADD. |
| * |
| * @return true if the event type is ENTRY_ADD, otherwise false. |
| */ |
| public boolean isAdd() { |
| return (this.eventType == Type.ENTRY_ADD); |
| } |
| |
| /** |
| * Tests whether the event type is ENTRY_REMOVE. |
| * |
| * @return true if the event type is ENTRY_REMOVE, otherwise false. |
| */ |
| public boolean isRemove() { |
| return (this.eventType == Type.ENTRY_REMOVE); |
| } |
| |
| /** |
| * Tests whether the event type is ENTRY_NOOP. |
| * |
| * @return true if the event type is ENTRY_NOOP, otherwise false. |
| */ |
| public boolean isNoop() { |
| return (this.eventType == Type.ENTRY_NOOP); |
| } |
| |
| /** |
| * Gets the event type. |
| * |
| * @return the event type. |
| */ |
| public EventEntry.Type eventType() { |
| return this.eventType; |
| } |
| |
| /** |
| * Gets the event-related data entry. |
| * |
| * @return the event-related data entry. |
| */ |
| public T eventData() { |
| return this.eventData; |
| } |
| } |