View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.module.management.support;
8   
9   import java.util.Collection;
10  import java.util.HashSet;
11  import java.util.Iterator;
12  import java.util.Set;
13  
14  import javax.management.MBeanServer;
15  import javax.management.MalformedObjectNameException;
16  import javax.management.ObjectName;
17  
18  /**
19   * Support class for JMX 1.1 based systems.
20   */
21  public class JmxLegacySupport extends AbstractJmxSupport
22  {
23  
24      /**
25       * Uses simpler rules for escaping non-JMX compliant chars.
26       * Much of the work has already been performed in {@link org.mule.util.ObjectNameHelper}.
27       *
28       * @param name value to escape for JMX compliance
29       * @return value valid for JMX
30       */
31      public String escape(String name)
32      {
33          // do nothing at the moment, as ObjectNameHelper handles most of the conversion scenarios
34          // kept as a placeholder and no-op to keep newer JMX classes from kicking in.
35          return name;
36      }
37  
38  
39      /**
40       * For modern JMX implementation just delegate to a standard factory method.
41       *
42       * @param name object name
43       * @return ObjectName for MBeanServer
44       * @throws javax.management.MalformedObjectNameException
45       *          for invalid names
46       */
47      public ObjectName getObjectName(String name) throws MalformedObjectNameException
48      {
49          return new ObjectName(name);
50      }
51  
52  
53      /** {@inheritDoc} */
54      protected Collection getDomains(final MBeanServer server)
55      {
56          // list all MBean names and collect unique domains
57          Set set = server.queryNames(null, null);
58          Set domains = new HashSet();
59          for (Iterator it = set.iterator(); it.hasNext();)
60          {
61              ObjectName objectName = (ObjectName) it.next();
62              domains.add(objectName.getDomain());
63          }
64          return domains;
65      }
66  }