Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *        JacORB - a free Java ORB
   *
   *   Copyright (C) 1999-2012 Gerald Brose / The JacORB Team.
   *
   *   This library is free software; you can redistribute it and/or
   *   modify it under the terms of the GNU Library General Public
   *   License as published by the Free Software Foundation; either
   *   version 2 of the License, or (at your option) any later version.
  *
  *   This library is distributed in the hope that it will be useful,
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  *   Library General Public License for more details.
  *
  *   You should have received a copy of the GNU Library General Public
  *   License along with this library; if not, write to the Free
  *   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
  */
 
 package org.jacorb.notification.jmx.jboss;
 
 import java.net.URL;
 
 
 import  org.jboss.mx.modelmbean.XMBean;
 import  org.nanocontainer.remoting.jmx.DynamicMBeanProvider;
 import  org.nanocontainer.remoting.jmx.JMXRegistrationException;
 import  org.nanocontainer.remoting.jmx.JMXRegistrationInfo;
 import  org.picocontainer.ComponentAdapter;
 import  org.picocontainer.PicoContainer;

JBoss specific DynamicMBeanProvider.

Author(s):
Alphonse Bendt
 
 public class JMXManageableXMBeanProvider implements DynamicMBeanProvider
 {
     private static class JMXManageableXMBean extends XMBean implements NotificationEmitter
     {
         long notificationSequence_ = 1;
         private final String[] types_;
         
         public JMXManageableXMBean(final JMXManageable manageableURL urlthrows NotCompliantMBeanExceptionMBeanException
         {
             super(manageableurl);
      
              = manageable.getJMXNotificationTypes();
             
             manageable.setJMXCallback(new JMXManageable.JMXCallback(){
 
                 public void sendJMXNotification(String typeString message)
                 {
                     .sendNotification(new Notification(type,// type
                             manageable// source
                             ++// seq. number
                             message // message
                             ));
                 }
 
                 public void sendJMXAttributeChanged(String nameObject oldValueObject newValue)
                 {
                     .sendNotification(new AttributeChangeNotification(manageable,
                             ++
                             System.currentTimeMillis(), 
                             "Attribute value changed",
                             name
                             oldValue == null ? null : oldValue.getClass().getName(), 
                             oldValue
                             newValue));
                 }
 
                 public void sendJMXNotification(String typeString messageObject payload)
                 {
                     sendJMXNotification(typemessage);
                 }});
         }
         
         public void addNotificationListener(NotificationListener listenerNotificationFilter filter,
                 Object handbackthrows IllegalArgumentException
         {
             .addNotificationListener(listenerfilterhandback);
        }
        public void removeNotificationListener(NotificationListener listener)
                throws ListenerNotFoundException
        {
            .removeNotificationListener(listener);
        }
        public void removeNotificationListener(NotificationListener listenerNotificationFilter filterObject handbackthrows ListenerNotFoundException
        {
            .removeNotificationListener(listenerfilterhandback);
        }
        public MBeanNotificationInfo[] getNotificationInfo()
        {
            return new MBeanNotificationInfo[] {
                    new MBeanNotificationInfo(
                            Notification.class.getName(),
                            "User Notifications"),
                    new MBeanNotificationInfo(new String[] { . },
                            AttributeChangeNotification.class.getName(),
                            "User attribute change notification") };
        }
    }
    
    private final String domain_;
    private final JMXManageableMBeanProvider fallback_;
    public JMXManageableXMBeanProvider(String domain)
    {
        super();
        
         = domain;
         = new JMXManageableMBeanProvider(domain);
    }
    public JMXRegistrationInfo provide(PicoContainer picoContainer,
            ComponentAdapter componentAdapter)
    {
        final Object _componentInstance = componentAdapter.getComponentInstance(picoContainer);
        try
        {
            final JMXManageable _manageable = (JMXManageable_componentInstance;
            Exception _exception = null;
            try
            {
                // try to load XML XMBean Descriptor.
                String _clazzName = _manageable.getClass().getName().replace('.''/');
                URL _url = _manageable.getClass().getResource("/" + _clazzName + ".xml");
                if (_url == null)
                {
                    return .provide(picoContainercomponentAdapter);
                }
                final ObjectName _objectName = ObjectName.getInstance( + ":" + _manageable.getJMXObjectName());
                final JMXManageableXMBean _xmbean = new JMXManageableXMBean(_manageable_url);
                
                return new JMXRegistrationInfo(_objectName_xmbean);
            } catch (MalformedObjectNameException e)
            {
                _exception = e;
            } catch (NotCompliantMBeanException e)
            {
                _exception = e;
            } catch (NullPointerException e)
            {
                _exception = e;
            } catch (MBeanException e)
            {
                _exception = e;
            }
            throw new JMXRegistrationException("Cannot create MBean for component '"
                    + componentAdapter.getComponentKey() + "'"_exception);
            
        } catch (ClassCastException e)
        {
            return null;
        }
    }
New to GrepCode? Check out our FAQ X