KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > implementation > notification > support > Listener


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software 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 GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package test.implementation.notification.support;
23
24 import java.util.ArrayList JavaDoc;
25 import java.util.HashMap JavaDoc;
26
27 import javax.management.Notification JavaDoc;
28 import javax.management.NotificationListener JavaDoc;
29
30 /**
31  * A listener
32  *
33  * @author <a HREF="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
34  */

35 public class Listener
36    implements NotificationListener JavaDoc
37 {
38    // Attributes ----------------------------------------------------------------
39

40    /**
41     * The notifications received by handback object
42     */

43    public HashMap JavaDoc notifications = new HashMap JavaDoc();
44
45    public boolean waiting = false;
46
47    // Constructor ---------------------------------------------------------------
48

49    /**
50     * Constructor
51     */

52    public Listener()
53    {
54    }
55
56    // Notification Listener Implementation --------------------------------------
57

58    /**
59     * Handle the notification
60     */

61    public void handleNotification(Notification JavaDoc notification, Object JavaDoc handback)
62    {
63       doWait(true);
64
65       synchronized(notifications)
66       {
67          ArrayList JavaDoc received = (ArrayList JavaDoc) notifications.get(handback);
68          if (received == null)
69          {
70             received = new ArrayList JavaDoc();
71             notifications.put(handback, received);
72          }
73          received.add(notification);
74       }
75
76       doNotify(false);
77    }
78
79    public synchronized void doWait(boolean value)
80    {
81       try
82       {
83          waiting = value;
84          this.wait();
85       }
86       catch (InterruptedException JavaDoc e)
87       {
88          throw new RuntimeException JavaDoc(e.toString());
89       }
90    }
91
92    public synchronized void doNotify(boolean expected)
93    {
94       try
95       {
96          while (waiting != expected)
97             this.wait(10);
98          this.notifyAll();
99       }
100       catch (InterruptedException JavaDoc e)
101       {
102          throw new RuntimeException JavaDoc(e.toString());
103       }
104    }
105 }
106
Popular Tags