1 /* 2 * File: EventQueue.java 3 * Created: 23.02.2006 7:33:19 4 * 5 * Copyright 2007 Michal Burda. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 package net.sf.webmancer.base; 23 24 import java.util.LinkedList; 25 import java.util.Queue; 26 27 import net.sf.webmancer.util.ContractChecker; 28 29 import org.apache.log4j.Logger; 30 31 /** 32 * @author Michal Burda 33 * 34 */ 35 public class EventQueue implements IEventQueue { 36 /** 37 * 38 */ 39 private static Logger logger = Logger.getLogger(EventQueue.class); 40 41 /** 42 * 43 */ 44 private Queue<Event> events; 45 46 /** 47 * Constructs the EventQueue. 48 * 49 */ 50 public EventQueue() { 51 this.events = new LinkedList<Event>(); 52 } 53 54 /** 55 * @see net.sf.webmancer.base.IEventQueue#hasEvents() 56 */ 57 public boolean hasEvents() { 58 return this.events.peek() != null; 59 } 60 61 /** 62 * @see net.sf.webmancer.base.IEventQueue#nextEvent() 63 */ 64 public Event nextEvent() { 65 Event event = this.events.poll(); 66 assert event != null; 67 if (logger.isDebugEnabled()) { 68 logger.debug("Dequeueing event " + event); 69 } 70 return event; 71 } 72 73 /** 74 * @see net.sf.webmancer.base.IEventQueue#putEvent(net.sf.webmancer.base.Event) 75 */ 76 public void putEvent(final Event event) { 77 ContractChecker.mustNotBeNull(event, "event"); 78 79 if (logger.isDebugEnabled()) { 80 logger.debug("Enqueueing event " + event); 81 } 82 this.events.offer(event); 83 } 84 85 }