View Javadoc

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  }