KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > mx4j > tools > remote > local > LocalServerInvoker


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package mx4j.tools.remote.local;
10
11 import java.io.IOException JavaDoc;
12 import java.util.HashSet JavaDoc;
13 import java.util.Set JavaDoc;
14 import javax.management.InstanceNotFoundException JavaDoc;
15 import javax.management.ListenerNotFoundException JavaDoc;
16 import javax.management.MBeanServer JavaDoc;
17 import javax.management.NotificationFilter JavaDoc;
18 import javax.management.NotificationListener JavaDoc;
19 import javax.management.ObjectName JavaDoc;
20 import javax.security.auth.Subject JavaDoc;
21
22 import mx4j.remote.NotificationTuple;
23 import mx4j.tools.remote.AbstractServerInvoker;
24
25 /**
26  * @version $Revision: 1.3 $
27  */

28 class LocalServerInvoker extends AbstractServerInvoker implements LocalConnection
29 {
30    private final Set JavaDoc listeners = new HashSet JavaDoc();
31
32    LocalServerInvoker(MBeanServer JavaDoc server)
33    {
34       super(server);
35    }
36
37    public void close() throws IOException JavaDoc
38    {
39       NotificationTuple[] tuples = null;
40       synchronized (listeners)
41       {
42          tuples = (NotificationTuple[])listeners.toArray(new NotificationTuple[listeners.size()]);
43          listeners.clear();
44       }
45       for (int i = 0; i < tuples.length; i++)
46       {
47          NotificationTuple tuple = tuples[i];
48          try
49          {
50             getServer().removeNotificationListener(tuple.getObjectName(), tuple.getNotificationListener(), tuple.getNotificationFilter(), tuple.getHandback());
51          }
52          catch (InstanceNotFoundException JavaDoc ignored)
53          {
54          }
55          catch (ListenerNotFoundException JavaDoc ignored)
56          {
57          }
58       }
59    }
60
61    public void addNotificationListener(ObjectName JavaDoc observed, NotificationListener JavaDoc listener, NotificationFilter JavaDoc filter, Object JavaDoc handback, Subject JavaDoc delegate)
62            throws InstanceNotFoundException JavaDoc, IOException JavaDoc
63    {
64       NotificationTuple tuple = new NotificationTuple(observed, listener, filter, handback);
65       synchronized (listeners)
66       {
67          listeners.add(tuple);
68       }
69       getServer().addNotificationListener(observed, listener, filter, handback);
70    }
71
72    public void removeNotificationListener(ObjectName JavaDoc observed, NotificationListener JavaDoc listener, Subject JavaDoc delegate)
73            throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc, IOException JavaDoc
74    {
75       NotificationTuple tuple = new NotificationTuple(observed, listener);
76       synchronized (listeners)
77       {
78          listeners.remove(tuple);
79       }
80       getServer().removeNotificationListener(observed, listener);
81    }
82
83    public void removeNotificationListener(ObjectName JavaDoc observed, NotificationListener JavaDoc listener, NotificationFilter JavaDoc filter, Object JavaDoc handback, Subject JavaDoc delegate)
84            throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc, IOException JavaDoc
85    {
86       NotificationTuple tuple = new NotificationTuple(observed, listener, filter, handback);
87       synchronized (listeners)
88       {
89          listeners.remove(tuple);
90       }
91       getServer().removeNotificationListener(observed, listener, filter, handback);
92    }
93 }
94
Popular Tags