View Javadoc

1   /* $Id: RegistrationNotificationHandler.java 4167 2006-02-06 19:22:53Z dbernstein $
2    *
3    * (Created on Dec 12, 2005
4    *
5    * Copyright (C) 2005 Internet Archive.
6    *  
7    * This file is part of the Heritrix Cluster Controller (crawler.archive.org).
8    *  
9    * HCC is free software; you can redistribute it and/or modify
10   * it under the terms of the GNU Lesser Public License as published by
11   * the Free Software Foundation; either version 2.1 of the License, or
12   * any later version.
13   * 
14   * Heritrix is distributed in the hope that it will be useful, 
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU Lesser Public License for more details.
18   * 
19   * You should have received a copy of the GNU Lesser Public License
20   * along with Heritrix; if not, write to the Free Software
21   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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  }