jdk/src/jdk.management/share/classes/com/sun/management/internal/PlatformMBeanProviderImpl.java
author sjiang
Fri, 17 Apr 2015 09:40:02 +0200
changeset 30355 e37c7eba132f
parent 28775 jdk/src/java.management/share/classes/com/sun/management/internal/PlatformMBeanProviderImpl.java@d786aae24263
permissions -rw-r--r--
8042901: Allow com.sun.management to be in a different module to java.lang.management Reviewed-by: mchung, dfuchs, erikj, jbachorik
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     1
/*
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     4
 *
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    10
 *
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    15
 * accompanied this code).
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    16
 *
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    20
 *
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    23
 * questions.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    24
 */
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    25
package com.sun.management.internal;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    26
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    27
import com.sun.management.DiagnosticCommandMBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    28
import com.sun.management.HotSpotDiagnosticMXBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    29
import com.sun.management.ThreadMXBean;
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    30
import java.lang.management.ManagementFactory;
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    31
import java.lang.management.MemoryManagerMXBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    32
import java.lang.management.OperatingSystemMXBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    33
import java.security.AccessController;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    34
import java.security.PrivilegedAction;
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    35
import java.util.ArrayList;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    36
import java.util.Collections;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    37
import java.util.HashMap;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    38
import java.util.List;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    39
import java.util.Map;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    40
import java.util.Set;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    41
import java.util.stream.Collectors;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    42
import java.util.stream.Stream;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    43
import javax.management.DynamicMBean;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    44
import sun.management.ManagementFactoryHelper;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    45
import sun.management.spi.PlatformMBeanProvider;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    46
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    47
public final class PlatformMBeanProviderImpl extends PlatformMBeanProvider {
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    48
    final static String DIAGNOSTIC_COMMAND_MBEAN_NAME =
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    49
        "com.sun.management:type=DiagnosticCommand";
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    50
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    51
    private final List<PlatformComponent<?>> mxbeanList;
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    52
    private static HotSpotDiagnostic hsDiagMBean = null;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    53
    private static OperatingSystemMXBean osMBean = null;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    54
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    55
    static {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    56
       AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    57
           System.loadLibrary("management_ext");
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    58
           return null;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    59
       });
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    60
    }
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    61
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    62
    public PlatformMBeanProviderImpl() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    63
        mxbeanList = Collections.unmodifiableList(init());
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    64
    }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    65
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    66
    @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    67
    public List<PlatformComponent<?>> getPlatformComponentList() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    68
        return mxbeanList;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    69
    }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    70
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    71
    private List<PlatformComponent<?>> init() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    72
        ArrayList<PlatformComponent<?>> initMBeanList = new ArrayList<>();
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    73
        /**
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    74
         * Garbage Collector in the Java virtual machine.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    75
         */
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    76
        initMBeanList.add(new PlatformComponent<MemoryManagerMXBean>() {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    77
            private final Set<String> garbageCollectorMXBeanInterfaceNames
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    78
                    = Collections.unmodifiableSet(
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    79
                            Stream.of("java.lang.management.MemoryManagerMXBean",
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    80
                                    "java.lang.management.GarbageCollectorMXBean",
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    81
                                    "com.sun.management.GarbageCollectorMXBean")
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    82
                            .collect(Collectors.toSet()));
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    83
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    84
            @Override
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    85
            public Set<Class<? extends MemoryManagerMXBean>> mbeanInterfaces() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
    86
                return Stream.of(MemoryManagerMXBean.class,
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    87
                        java.lang.management.GarbageCollectorMXBean.class,
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    88
                        com.sun.management.GarbageCollectorMXBean.class)
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    89
                        .collect(Collectors.toSet());
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    90
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    91
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    92
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    93
            public Set<String> mbeanInterfaceNames() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    94
                return garbageCollectorMXBeanInterfaceNames;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    95
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    96
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    97
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    98
            public String getObjectNamePattern() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
    99
                return ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE + ",name=*";
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   100
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   101
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   102
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   103
            public boolean isSingleton() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   104
                return false; // zero or more instances
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   105
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   106
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   107
            @Override
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   108
            public Map<String, MemoryManagerMXBean> nameToMBeanMap() {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   109
                List<java.lang.management.GarbageCollectorMXBean> list
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   110
                        = ManagementFactoryHelper.getGarbageCollectorMXBeans();
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   111
                Map<String, MemoryManagerMXBean> map;
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   112
                if (list.isEmpty()) {
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   113
                    map = Collections.emptyMap();
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   114
                } else {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   115
                    map = new HashMap<>(list.size());
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   116
                    for (MemoryManagerMXBean gcm : list) {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   117
                        map.put(gcm.getObjectName().getCanonicalName(),
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   118
                                gcm);
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   119
                    }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   120
                }
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   121
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   122
                return map;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   123
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   124
        });
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   125
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   126
        /**
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   127
         * Threading system of the Java virtual machine.
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   128
         */
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   129
        initMBeanList.add(new PlatformComponent<java.lang.management.ThreadMXBean>() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   130
            private final Set<String> threadMXBeanInterfaceNames
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   131
                    = Collections.unmodifiableSet(
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   132
                            Stream.of("java.lang.management.ThreadMXBean",
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   133
                                    "com.sun.management.ThreadMXBean")
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   134
                            .collect(Collectors.toSet()));
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   135
            private ThreadMXBean threadMBean = null;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   136
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   137
            @Override
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   138
            public Set<Class<? extends java.lang.management.ThreadMXBean>> mbeanInterfaces() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   139
                return Stream.of(java.lang.management.ThreadMXBean.class,
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   140
                        com.sun.management.ThreadMXBean.class)
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   141
                        .collect(Collectors.toSet());
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   142
            }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   143
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   144
            @Override
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   145
            public Set<String> mbeanInterfaceNames() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   146
                return threadMXBeanInterfaceNames;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   147
            }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   148
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   149
            @Override
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   150
            public String getObjectNamePattern() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   151
                return ManagementFactory.THREAD_MXBEAN_NAME;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   152
            }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   153
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   154
            @Override
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   155
            public synchronized Map<String, java.lang.management.ThreadMXBean> nameToMBeanMap() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   156
                if (threadMBean == null) {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   157
                    threadMBean = new HotSpotThreadImpl(ManagementFactoryHelper.getVMManagement());
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   158
                }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   159
                return Collections.singletonMap(
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   160
                        ManagementFactory.THREAD_MXBEAN_NAME,
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   161
                        threadMBean);
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   162
            }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   163
        });
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   164
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   165
        /**
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   166
         * OperatingSystemMXBean
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   167
         */
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   168
        initMBeanList.add(new PlatformComponent<OperatingSystemMXBean>() {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   169
            private final Set<String> operatingSystemMXBeanInterfaceNames
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   170
                    = Collections.unmodifiableSet(
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   171
                            Stream.of("java.lang.management.OperatingSystemMXBean",
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   172
                                    "com.sun.management.OperatingSystemMXBean",
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   173
                                    "com.sun.management.UnixOperatingSystemMXBean")
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   174
                            .collect(Collectors.toSet()));
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   175
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   176
            @Override
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   177
            public Set<Class<? extends OperatingSystemMXBean>> mbeanInterfaces() {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   178
                return Stream.of(java.lang.management.OperatingSystemMXBean.class,
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   179
                        com.sun.management.OperatingSystemMXBean.class,
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   180
                        com.sun.management.UnixOperatingSystemMXBean.class)
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   181
                        .collect(Collectors.toSet());
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   182
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   183
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   184
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   185
            public Set<String> mbeanInterfaceNames() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   186
                return operatingSystemMXBeanInterfaceNames;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   187
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   188
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   189
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   190
            public String getObjectNamePattern() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   191
                return ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   192
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   193
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   194
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   195
            public Map<String, java.lang.management.OperatingSystemMXBean> nameToMBeanMap() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   196
                return Collections.<String, java.lang.management.OperatingSystemMXBean>singletonMap(
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   197
                        ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME,
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   198
                        getOperatingSystemMXBean());
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   199
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   200
        });
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   201
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   202
        /**
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   203
         * Diagnostic support for the HotSpot Virtual Machine.
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   204
         */
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   205
        initMBeanList.add(new PlatformComponent<com.sun.management.HotSpotDiagnosticMXBean>() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   206
            private final Set<String> hotSpotDiagnosticMXBeanInterfaceNames =
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   207
                    Collections.unmodifiableSet(Collections.<String>singleton(
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   208
                            "com.sun.management.HotSpotDiagnosticMXBean"));
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   209
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   210
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   211
            public Set<Class<? extends com.sun.management.HotSpotDiagnosticMXBean>> mbeanInterfaces() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   212
                return Collections.singleton(com.sun.management.HotSpotDiagnosticMXBean.class);
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   213
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   214
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   215
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   216
            public Set<String> mbeanInterfaceNames() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   217
                return hotSpotDiagnosticMXBeanInterfaceNames;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   218
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   219
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   220
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   221
            public String getObjectNamePattern() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   222
                return "com.sun.management:type=HotSpotDiagnostic";
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   223
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   224
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   225
            @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   226
            public Map<String, com.sun.management.HotSpotDiagnosticMXBean> nameToMBeanMap() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   227
                return Collections.<String, com.sun.management.HotSpotDiagnosticMXBean>singletonMap(
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   228
                        "com.sun.management:type=HotSpotDiagnostic",
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   229
                        getDiagnosticMXBean());
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   230
            }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   231
        });
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   232
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   233
        /**
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   234
         * Diagnostic command MBean
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   235
         */
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   236
        DiagnosticCommandMBean diagMBean = DiagnosticCommandImpl.getDiagnosticCommandMBean();
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   237
        if (diagMBean != null) {
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   238
            initMBeanList.add(new PlatformComponent<DynamicMBean>() {
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   239
                final Set<String> dynamicMBeanInterfaceNames
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   240
                        = Collections.unmodifiableSet(Collections.<String>singleton(
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   241
                                "javax.management.DynamicMBean"));
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   242
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   243
                @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   244
                public Set<String> mbeanInterfaceNames() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   245
                    return dynamicMBeanInterfaceNames;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   246
                }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   247
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   248
                @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   249
                public Set<Class<? extends DynamicMBean>> mbeanInterfaces() {
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   250
                    // DynamicMBean cannot be used to find an MBean by ManagementFactory
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   251
                    return Collections.emptySet();
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   252
                }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   253
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   254
                @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   255
                public String getObjectNamePattern() {
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   256
                    return DIAGNOSTIC_COMMAND_MBEAN_NAME;
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   257
                }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   258
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   259
                @Override
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   260
                public Map<String, DynamicMBean> nameToMBeanMap() {
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   261
                    return Collections.<String, DynamicMBean>singletonMap(
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   262
                            DIAGNOSTIC_COMMAND_MBEAN_NAME,
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   263
                            diagMBean);
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   264
                }
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   265
            });
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   266
        }
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   267
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   268
        initMBeanList.trimToSize();
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   269
        return initMBeanList;
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   270
    }
30355
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   271
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   272
    private static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   273
        if (hsDiagMBean == null) {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   274
            hsDiagMBean = new HotSpotDiagnostic();
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   275
        }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   276
        return hsDiagMBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   277
    }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   278
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   279
    private static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   280
        if (osMBean == null) {
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   281
            osMBean = new OperatingSystemImpl(ManagementFactoryHelper.getVMManagement());
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   282
        }
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   283
        return osMBean;
e37c7eba132f 8042901: Allow com.sun.management to be in a different module to java.lang.management
sjiang
parents: 28775
diff changeset
   284
    }
28775
d786aae24263 8065213: Specify and implement PlatformMBeanProvider for looking for all platform MBeans
sjiang
parents:
diff changeset
   285
}