You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2004/02/18 16:33:09 UTC

cvs commit: incubator-geronimo/applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/web/beanlib MBeanInfoHelper.java MBeanServerHelper.java

geirm       2004/02/18 07:33:09

  Added:       applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/web/beanlib
                        MBeanInfoHelper.java MBeanServerHelper.java
  Log:
  little helpers to deal w/ JMX stuff in Vel
  
  Revision  Changes    Path
  1.1                  incubator-geronimo/applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/web/beanlib/MBeanInfoHelper.java
  
  Index: MBeanInfoHelper.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.jmxdebug.web.beanlib;
  
  import javax.management.MBeanInfo;
  import javax.management.ObjectInstance;
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  import javax.management.MalformedObjectNameException;
  import javax.management.ReflectionException;
  import javax.management.InstanceNotFoundException;
  import javax.management.IntrospectionException;
  import javax.management.MBeanAttributeInfo;
  import javax.management.MBeanOperationInfo;
  import javax.management.MBeanException;
  import javax.management.AttributeNotFoundException;
  import javax.management.RuntimeMBeanException;
  import java.util.Map;
  import java.util.List;
  import java.util.Hashtable;
  import java.util.Iterator;
  import java.util.ArrayList;
  import java.util.HashMap;
  
  /**
   * Simple helper bean for dealing with MBeanInfo.  Helps dodge such
   * wacky APIs like  HashMap getKeyPropertyLIst() and wrap in
   * convenient ways for working in Velocity
   * 
   * @version $Id: MBeanInfoHelper.java,v 1.1 2004/02/18 15:33:09 geirm Exp $
   */
  public class MBeanInfoHelper {
  
      ObjectName oName;
      MBeanInfo info;
  
      public MBeanInfoHelper(String name) {
          MBeanServer server = MBeanServerHelper.getMBeanServer();
  
          if (server != null) {
              init(server, name);
          }
      }
  
      void init(MBeanServer server, String name) {
          try {
              oName = new ObjectName(name);
              info = server.getMBeanInfo(oName);
          }
          catch (MalformedObjectNameException e) {
              e.printStackTrace();
          }
          catch (ReflectionException e) {
              e.printStackTrace();
          }
          catch (InstanceNotFoundException e) {
              e.printStackTrace();
          }
          catch (IntrospectionException e) {
              e.printStackTrace();
          }
      }
  
      public String getCanonicalName() {
          return oName.getCanonicalName();
      }
  
      public String getDomain() {
          return oName.getDomain();
      }
  
      /**
       * Returns the key properties and values a list of
       * maps, w/ 'key' and 'value' as entryies in each
       * map.  Makes easy in vel to do
       * #foreach($item in $list)
       * $item.key
       * $item.value
       * #end
       *
       * @return
       */
      public List getKeyProperties() {
          Hashtable h = oName.getKeyPropertyList();
  
          Iterator it = h.keySet().iterator();
  
          List l = new ArrayList();
  
          while (it.hasNext()) {
              String key = (String) it.next();
  
              Map m = new HashMap();
  
              m.put("key", key);
              m.put("value", h.get(key));
  
              l.add(m);
          }
  
          return l;
      }
  
      public String getDescription() {
          return info.getDescription();
      }
  
      public String getClassName() {
          return info.getClassName();
      }
  
      public List getAttributes() {
          
          List l = new ArrayList();
          MBeanAttributeInfo[] arr = info.getAttributes();
          MBeanServer server = MBeanServerHelper.getMBeanServer();
  
          for (int i = 0; i < arr.length; i++) {
              MBeanAttributeInfo foo = arr[i];
              Object value = null;
              try {
                  value = server.getAttribute(oName, foo.getName());
              }
              catch (MBeanException e) {
                  e.printStackTrace();
              }
              catch (AttributeNotFoundException e) {
                  e.printStackTrace();
              }
              catch (InstanceNotFoundException e) {
                  e.printStackTrace();
              }
              catch (ReflectionException e) {
                  e.printStackTrace();
              }
              catch (RuntimeMBeanException rme) {
                  rme.printStackTrace();
              }
  
              Map m = new HashMap();
              m.put("info", foo);
              m.put("value", value);
              l.add(m);
          }
  
          return l;
      }
  
  
      public MBeanOperationInfo[] getOperationInfo() {
          MBeanOperationInfo foo;
  
          return info.getOperations();
      }
  
  }
  
  
  
  1.1                  incubator-geronimo/applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/web/beanlib/MBeanServerHelper.java
  
  Index: MBeanServerHelper.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.jmxdebug.web.beanlib;
  
  import org.apache.geronimo.jmxdebug.util.ObjectInstanceComparator;
  
  import javax.management.MBeanServer;
  import javax.management.MBeanServerFactory;
  import javax.management.ObjectName;
  import javax.management.MalformedObjectNameException;
  import java.util.List;
  import java.util.Collection;
  import java.util.Set;
  import java.util.ArrayList;
  import java.util.Collections;
  
  /**
   * Little helper bean to deal w/ the mbean server
   *
   * @version $Id: MBeanServerHelper.java,v 1.1 2004/02/18 15:33:09 geirm Exp $
   */
  public class MBeanServerHelper {
      final private MBeanServer server;
  
      public MBeanServerHelper() {
          this.server = getMBeanServer();
      }
  
      /**
       * Returns the mbean server.  Hokey as we just take the first
       * one...
       *
       * @return
       */
      public static MBeanServer getMBeanServer() {
          List l = MBeanServerFactory.findMBeanServer(null);
  
          if (l.size() > 0) {
              return (MBeanServer) l.get(0);
          }
  
          return null;
      }
  
      /**
       *  Returns a Collection of InstanceObjects for all mbeans in the server
       *
       * @return Collection of InstanceObjects
       */
      public Collection getMBeans() {
          return getMBeans("*:*");
      }
  
      /**
       *   Returns a Collection of InstanceObjects filtered by the input
       *   filter
       *
       * @param filterString  filter to use.  Defaults to *:* if null
       * @return Collection of InstanceObjects that match the filter
       */
      public Collection getMBeans(String filterString) {
  
          if (server != null) {
              ObjectName objectName = null;
              try {
                  objectName = new ObjectName((filterString == null ? "*:*" : filterString));
                  Set s = server.queryMBeans(objectName, null);
  
                  List list = new ArrayList();
                  list.addAll(s);
                  ObjectInstanceComparator comparator = new ObjectInstanceComparator();
                  Collections.sort(list, comparator);
  
                  return list;
              }
              catch (MalformedObjectNameException e) {
                  e.printStackTrace();
              }
          }
          else {
              System.out.println("MBeanServerHelper : error : no mbean server");
          }
  
          return null;
      }
  }