1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.archive.hcc.util.jmx;
24
25 import java.util.logging.Level;
26 import java.util.logging.Logger;
27
28 import javax.management.MBeanServerNotification;
29 import javax.management.Notification;
30 import javax.management.ObjectName;
31
32 import org.archive.hcc.util.NotificationDelegatableBase;
33 import org.archive.util.JmxUtils;
34
35 public abstract class RegistrationNotificationHandler
36 extends
37 NotificationDelegatableBase {
38 private static final Logger log = Logger.getLogger(RegistrationNotificationHandler.class.getName());
39
40 @Override
41 protected boolean delegate(Notification n, Object handback) {
42 if (n instanceof MBeanServerNotification) {
43 MBeanServerNotification msn = (MBeanServerNotification) n;
44 ObjectName name = msn.getMBeanName();
45
46 if (name.getKeyProperty(JmxUtils.TYPE).equals(getType())) {
47 if (msn.getType().equals(
48 MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
49 if(log.isLoggable(Level.FINE)){
50 log.fine("handling registration of " + name);
51 }
52 handleRegistered(name);
53 return true;
54 } else if (msn.getType().equals(
55 MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
56 if(log.isLoggable(Level.FINE)){
57 log.fine("handling deregistration of " + name);
58 }
59 handleUnregistered(name);
60 return true;
61 }
62 }
63
64 return false;
65 }
66 return false;
67 }
68
69 protected abstract String getType();
70
71 protected abstract void handleRegistered(ObjectName n);
72
73 protected abstract void handleUnregistered(ObjectName n);
74 }