MBeanObjectNameResolver.java :  » Google-tech » s3blazeds » qa » management » Java Open Source

Java Open Source » Google tech » s3blazeds 
s3blazeds » qa » management » MBeanObjectNameResolver.java
/*************************************************************************
 *
 * ADOBE CONFIDENTIAL
 * __________________
 *
 *  Copyright 2002 - 2007 Adobe Systems Incorporated
 *  All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated
 * and its suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 **************************************************************************/

package qa.management;

import java.util.ArrayList;
import java.util.Collection;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import flex.messaging.FlexContext;
import flex.management.BaseControl;
import flex.management.jmx.MBeanServerGateway;
import flex.messaging.services.Service;
import flex.messaging.MessageBroker;
import flex.messaging.Destination;
import flex.messaging.MessageDestination;
import flex.messaging.services.ServiceAdapter;
import flex.messaging.endpoints.Endpoint;

/*
 *  helper class to resolve MBean ObjectName
 */
public class MBeanObjectNameResolver
{
    private MBeanServerGateway gateway; 
    private MessageBroker mb;
    
    public MBeanObjectNameResolver()
    {
        mb = FlexContext.getMessageBroker();
        gateway = new MBeanServerGateway();
    }
   
    /*
     *   resolve the MessageBroker MBean name
     *   @return An objectName for the MessageBroker MBean.
     */
    public String getObjectNameForMessageBroker() throws Exception
    {           
        BaseControl bc = mb.getControl(); 
        return bc.getObjectName().toString();
    }  
   
    /*
     *   resolve a service MBean name
     *   @param serviceName The target service name
     *   @return An objectName for the service MBean.
     */
    public String getObjectNameForService(String serviceName) throws Exception
    {         
        Service service = (Service) mb.getService(serviceName);
        if (service == null)
            throw new Exception("Service " + serviceName + " not found"); 
        BaseControl bc = service.getControl(); 
        return bc.getObjectName().toString();
    }     
    
    /*
     *   resolve a destination MBean name
     *   @param serviceName The target service name 
     *   @param destinationName  The target destination name.
     *   @return An objectName for the destination MBean.
     */
    public String getObjectNameForDestination(String serviceName, String destinationName) throws Exception
    {          
        Destination dest = getDestination(serviceName, destinationName);
        BaseControl bc = dest.getControl(); 
        return bc.getObjectName().toString();
    } 
    
    /*
     *   resolve a destination MBean name
     *   @param serviceName The target service name 
     *   @param destinationName  The target destination name.
     *   @param destinationName  The target adapterName name.
     *   @return An objectName for the destination MBean.
     */
    public String getObjectNameForAdapter(String serviceName, String destinationName, String adapterName) throws Exception
    { 
        Destination dest = getDestination(serviceName, destinationName);
        ServiceAdapter adp = dest.getAdapter();
        
        if (adp == null)
            throw new Exception("Adapter " + adapterName + " not found");
        
        BaseControl bc = adp.getControl(); 
        return bc.getObjectName().toString();
    }
    
    /*
     *   resolve a SubscriptionManager MBean name for MessageDestination
     *   @param serviceName The target service name 
     *   @param destinationName  The target destination name.
     *   @return An objectName for the SubscriptionManager MBean.
     */
    public String getObjectNameForSubscriptionManager(String serviceName, String destinationName) throws Exception
    {         
        Destination dest = getDestination(serviceName, destinationName);
        if (!(dest instanceof MessageDestination))
            throw new Exception(destinationName + " not a MessageDestination");
        MessageDestination mdest = (MessageDestination)dest;

        BaseControl bc = mdest.getSubscriptionManager().getControl();     
        return bc.getObjectName().toString();
    }
    
    /*
     *   resolve a ThrottleManager MBean name for MessageDestination
     *   @param serviceName The target service name 
     *   @param destinationName  The target destination name.
     *   @return An objectName for the ThrottleManager MBean.
     */
    public String getObjectNameForThrottleManager(String serviceName, String destinationName) throws Exception
    {         
        Destination dest = getDestination(serviceName, destinationName);
        if (!(dest instanceof MessageDestination))
            throw new Exception(destinationName + " not a MessageDestination");

        MessageDestination mdest = (MessageDestination)dest;
        BaseControl bc = mdest.getThrottleManager().getControl();      
        return bc.getObjectName().toString();
    }
    
    private Destination getDestination(String serviceName, String destinationName) throws Exception
    {
        Service service = (Service) mb.getService(serviceName); 
        if (service == null)
            throw new Exception("Service " + serviceName + " not found"); 
        
        Destination dest = service.getDestination(destinationName); 
        if (dest == null)
            throw new Exception("Destination " + destinationName + " not found");

        return dest;
    }

    /*
     *   resolve an endpoint MBean name
     *   @param endpointName The target endpoint name
     *   @return An objectName for the endpoint MBean.
     */
    public String getObjectNameForEndpoint(String endpointName) throws Exception
    { 
        Endpoint endpoint = (Endpoint) mb.getEndpoint(endpointName);
        if (endpoint == null)
            throw new Exception("Endpoint " + endpointName + " not found"); 
        
        BaseControl bc = endpoint.getControl(); 
        return bc.getObjectName().toString();
    }
    
    /*
     *   resolve FlexClientManagerControl MBean name
     */
    public String getObjectNameForFlexClientManager()
    {
        return mb.getFlexClientManager().getControl().getObjectName().toString();
    }
    
    /*
     *   resolve LogManagerControl MBean name
     */
    public String getObjectNameForLogManager()
    {
        return mb.getLogManager().getControl().getObjectName().toString();
    }
    
    /*
     *   retrieve a list of allowed operation for a given MBean
     *   @param objectName The target MBean ObjectName name
     *   @return A collection of allowed operation for the MBean.
     */    
    public Collection<String> getMBeanOperationList(String objectName)
    {
        ArrayList<String> list = new ArrayList<String>(); 
        
        try 
        {     
            MBeanInfo info = getMBeanInfo(objectName);
            MBeanOperationInfo[] ops = info.getOperations();
            for (int i=0;i<ops.length;i++)
            {
                list.add(ops[i].getName());                
            }
        }
        catch (Exception e)
        {
            //ignore
        }
        return list;
    }
    
    /*
     *   retrieve a list of attributes for a given MBean
     *   @param objectName The target MBean ObjectName name
     *   @return A collection of attributes for the MBean.
     */
    public Collection<String> getMBeanAttributeList(String objectName)
    {
        ArrayList<String> list = new ArrayList<String>(); 
                
        try 
        {  
            MBeanInfo info = getMBeanInfo(objectName);
            MBeanAttributeInfo[] ops = info.getAttributes();
            for (int i=0;i<ops.length;i++)
            {
                list.add(ops[i].getName());                
            }
        }
        catch (Exception e)
        {
           // ignore
        }
        return list;
    } 
    
    /*
     *   retrieve MBeanInfo from the gateway
     */
    private MBeanInfo getMBeanInfo(String objectName)
    {                
        return gateway.getMBeanInfo(objectName).toMBeanInfo();
    }
    
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.