Frames | No Frames |
1: /* ManagementPermission.java - Permissions for system management. 2: Copyright (C) 2006 Free Software Foundation 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: package java.lang.management; 39: 40: import java.security.BasicPermission; 41: 42: /** 43: * <p> 44: * Represents the permission to view or modify the data 45: * which forms part of the system management interfaces. 46: * Calls to methods of the system management beans, 47: * provided by the {@link ManagementFactory}, may perform 48: * checks against the current {@link java.lang.SecurityManager} 49: * (if any) before allowing the operation to proceed. 50: * Instances of this object are supplied to the 51: * {@link java.lang.SecurityManager} in order to perform 52: * these checks. It is not normal for instances of this 53: * class to be created outside the use of the 54: * {@link java.lang.SecurityManager}. 55: * </p> 56: * <p> 57: * This object can represent two types of management 58: * permission: 59: * </p> 60: * <ul> 61: * <li><strong>monitor</strong> — this allows access 62: * to information such as the arguments supplied to the 63: * virtual machine, the currently loaded classes and the 64: * stack traces of running threads. Malicious code may 65: * use this to obtain information about the system and 66: * exploit any vulnerabilities found.</li> 67: * <li><strong>control</strong> — this allows the 68: * information stored by the management beans to be altered. 69: * For example, additional debugging information (such 70: * as class loading traces) may be turned on or memory 71: * usage limits changed. Malicious code could use 72: * this to alter the behaviour of the system.</li> 73: * </ul> 74: * 75: * @author Andrew John Hughes (gnu_andrew@member.fsf.org) 76: * @since 1.5 77: */ 78: public final class ManagementPermission 79: extends BasicPermission 80: { 81: 82: /** 83: * Compatible with JDK 1.5 84: */ 85: private static final long serialVersionUID = 1897496590799378737L; 86: 87: /** 88: * Constructs a new <code>ManagementPermission</code> 89: * for one of the two permission targets, "monitor" 90: * and "control". 91: * 92: * @param name the name of the permission this instance 93: * should represent; either "monitor" or 94: * "control". 95: * @throws IllegalArgumentException if the name is not 96: * either "monitor" 97: * or "control". 98: */ 99: public ManagementPermission(String name) 100: { 101: super(name); 102: if (!(name.equals("monitor") || name.equals("control"))) 103: throw new IllegalArgumentException("Invalid permission."); 104: } 105: 106: /** 107: * Constructs a new <code>ManagementPermission</code> 108: * for one of the two permission targets, "monitor" 109: * and "control". Actions are not supported, so 110: * this value should be either <code>null</code> 111: * or the empty string. 112: * 113: * @param name the name of the permission this instance 114: * should represent; either "monitor" or 115: * "control". 116: * @param actions either <code>null</code> or the 117: * empty string. 118: * @throws IllegalArgumentException if the name is not 119: * either "monitor" 120: * or "control", or 121: * a value for actions 122: * is specified. 123: */ 124: public ManagementPermission(String name, String actions) 125: { 126: this(name); 127: if (!(actions == null || actions.equals(""))) 128: throw new IllegalArgumentException("Invalid actions."); 129: } 130: 131: }