1 /* 2 * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.management; 27 28 import java.lang.management.ManagementPermission; 29 import java.util.List; 30 import javax.management.ObjectName; 31 import javax.management.MalformedObjectNameException; 32 33 34 public class Util { 35 private Util() {} // there are no instances of this class 36 37 static RuntimeException newException(Exception e) { 38 throw new RuntimeException(e); 39 } 40 41 private static final String[] EMPTY_STRING_ARRAY = new String[0]; 42 static String[] toStringArray(List<String> list) { 43 return list.toArray(EMPTY_STRING_ARRAY); 44 } 45 46 public static ObjectName newObjectName(String domainAndType, String name) { 47 return newObjectName(domainAndType + ",name=" + name); 48 } 49 50 public static ObjectName newObjectName(String name) { 51 try { 52 return ObjectName.getInstance(name); 53 } catch (MalformedObjectNameException e) { 54 throw new IllegalArgumentException(e); 55 } 56 } 57 58 private static ManagementPermission monitorPermission = 59 new ManagementPermission("monitor"); 60 private static ManagementPermission controlPermission = 61 new ManagementPermission("control"); 62 private static ManagementPermission diagnosticCommandPermission = 63 new ManagementPermission("diagnosticCommand"); 64 65 /** 66 * Check that the current context is trusted to perform monitoring 67 * or management. 68 * <p> 69 * If the check fails we throw a SecurityException, otherwise 70 * we return normally. 71 * 72 * @exception SecurityException if a security manager exists and if 73 * the caller does not have ManagementPermission("control"). 74 */ 75 static void checkAccess(ManagementPermission p) 76 throws SecurityException { 77 SecurityManager sm = System.getSecurityManager(); 78 if (sm != null) { 79 sm.checkPermission(p); 80 } 81 } 82 83 static void checkMonitorAccess() throws SecurityException { 84 checkAccess(monitorPermission); 85 } 86 static void checkControlAccess() throws SecurityException { 87 checkAccess(controlPermission); 88 } 89 90 static void checkDiagnosticCommandAccess() throws SecurityException { 91 checkAccess(diagnosticCommandPermission); 92 } 93 }