⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 policypermission.java

📁 aglet的部分源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.ibm.aglets.security;/* * @(#)PolicyPermission.java *  * IBM Confidential-Restricted *  * OCO Source Materials *  * 03L7246 (c) Copyright IBM Corp. 1996, 1998 *  * The source code for this program is not published or otherwise * divested of its trade secrets, irrespective of what has been * deposited with the U.S. Copyright Office. */import java.security.Permission;import com.ibm.aglet.security.Protection;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.util.Vector;import java.util.Enumeration;import java.util.StringTokenizer;import org.aglets.log.*;/** * The <tt>PolicyPermission</tt> class represents a permission in a grant * of Java policy database. *  * @version     1.00    $Date: 2002/02/20 22:17:18 $ * @author      ONO Kouichi */public class PolicyPermission {    private static final LogCategory log =        LogInitializer.getCategory(PolicyPermission.class.getName() );	private static final String CLASSNAME_PERMISSION = 		"java.security.Permission";	private static final String CLASSNAME_BASIC_PERMISSION = 		"java.security.BasicPermission";	private static final String CLASSNAME_FILE_PERMISSION = 		"java.io.FilePermission";	private static final String CLASSNAME_SOCKET_PERMISSION = 		"java.net.SocketPermission";	private static final String CLASSNAME_AWT_PERMISSION = 		"java.awt.AWTPermission";	private static final String CLASSNAME_NET_PERMISSION = 		"java.net.NetPermission";	private static final String CLASSNAME_PROPERTY_PERMISSION = 		"java.util.PropertyPermission";	private static final String CLASSNAME_REFLECT_PERMISSION = 		"java.lang.reflect.ReflectPermission";	private static final String CLASSNAME_RUNTIME_PERMISSION = 		"java.lang.RuntimePermission";	private static final String CLASSNAME_SECURITY_PERMISSION = 		"java.security.SecurityPermission";	private static final String CLASSNAME_SERIALIZABLE_PERMISSION = 		"java.io.SerializablePermission";	private static final String CLASSNAME_UNRESOLVED_PERMISSION = 		"java.security.UnresolvedPermission";	private static final String CLASSNAME_ALL_PERMISSION = 		"java.security.AllPermission";	// for aglets	private static final String CLASSNAME_AGLET_PERMISSION = 		"com.ibm.aglets.security.AgletPermission";	private static final String CLASSNAME_MESSAGE_PERMISSION = 		"com.ibm.aglets.security.MessagePermission";	private static final String CLASSNAME_CONTEXT_PERMISSION = 		"com.ibm.aglets.security.ContextPermission";	// -   private static final String CLASSNAME_THREAD_PERMISSION       = "com.ibm.awb.security.ThreadPermission";	private static final String CLASSNAME_ACTIVITY_PERMISSION = 		"com.ibm.aglets.security.ActivityPermission";	private static final String CLASSNAME_AGLET_PROTECTION = 		"com.ibm.aglet.security.AgletProtection";	private static final String CLASSNAME_MESSAGE_PROTECTION = 		"com.ibm.aglet.security.MessageProtection";	private static final String CLASSNAME_PERMISSION_TMP = 		"java.security.Permission";	private static final String CLASSNAME_BASIC_PERMISSION_TMP = 		"java.security.BasicPermission";	private static final String CLASSNAME_FILE_PERMISSION_TMP = 		"java.io.FilePermission";	private static final String CLASSNAME_SOCKET_PERMISSION_TMP = 		"java.net.SocketPermission";	private static final String CLASSNAME_AWT_PERMISSION_TMP = 		"java.awt.AWTPermission";	private static final String CLASSNAME_NET_PERMISSION_TMP = 		"java.net.NetPermission";	private static final String CLASSNAME_PROPERTY_PERMISSION_TMP = 		"java.util.PropertyPermission";	private static final String CLASSNAME_REFLECT_PERMISSION_TMP = 		"java.lang.reflect.ReflectPermission";	private static final String CLASSNAME_RUNTIME_PERMISSION_TMP = 		"java.lang.RuntimePermission";	private static final String CLASSNAME_SECURITY_PERMISSION_TMP = 		"java.security.SecurityPermission";	private static final String CLASSNAME_SERIALIZABLE_PERMISSION_TMP = 		"java.io.SerializablePermission";	private static final String CLASSNAME_UNRESOLVED_PERMISSION_TMP = 		"java.security.UnresolvedPermission";	private static final String CLASSNAME_ALL_PERMISSION_TMP = 		"java.security.AllPermission";	private String _originalClassName = null;	private String _className = null;	private Class _class = null;	private String _targetName = null;	private String _actions = null;	private String _signerNames = null;	private static final String QUOTE = 		String.valueOf(PolicyFileReader.CHAR_STRING_QUOTE);	private static final String COMMA = 		String.valueOf(PolicyFileReader.CHAR_COMMA);	private static final String TERMINATOR = 		String.valueOf(PolicyFileReader.CHAR_TERMINATOR);	private static final String NAME_SEPARATOR = COMMA;	private static final char CHAR_SLASH = '/';	private static final char CHAR_BACKSLASH = '\\';	private static final char CHAR_ESCAPE = CHAR_BACKSLASH;	private static final int NO_TYPE = 0;	private static final int TYPE_PERMISSION = 1;	private static final int TYPE_PROTECTION = 2;	// #   private static final int TYPE_ALLOWANCE    = 3;	private int _type = NO_TYPE;	private Vector _signers = null;	private Permission _permission = null;	private PolicyFileReader _reader = null;	public PolicyPermission(PolicyFileReader reader, String type, 							String className) throws ClassNotFoundException {		_reader = reader;		setType(type);		setClassName(className);	}	public PolicyPermission(String className) throws ClassNotFoundException {		setType(getType(className));		setClassName(className);	}	protected void checkSigner(String signer) throws SecurityException {		// check the permission class is signed by the signer.		if (!isSignedBy(signer)) {			throw new SecurityException("The permission class '" 										+ _class.getName() 										+ "' is not signed by '" + signer 										+ "'.");		} 		return;	}	protected void checkSigners(Vector signers) throws SecurityException {		// check the permission class is signed by signers.		if (signers == null) {			// regard as anybody			return;		} 		final int num = signers.size();		int i;		for (i = 0; i < num; i++) {			Object obj = signers.elementAt(i);			if (obj instanceof String) {				String signer = (String)obj;				checkSigner(signer);			} 		} 		return;	}	private static String convertClassName(String name) {		if (name == null) {			return null;		} 		String className = name;		if (name.equals(CLASSNAME_PERMISSION)) {			className = CLASSNAME_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_BASIC_PERMISSION)) {			className = CLASSNAME_BASIC_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_FILE_PERMISSION)) {			className = CLASSNAME_FILE_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_SOCKET_PERMISSION)) {			className = CLASSNAME_SOCKET_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_AWT_PERMISSION)) {			className = CLASSNAME_AWT_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_NET_PERMISSION)) {			className = CLASSNAME_NET_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_PROPERTY_PERMISSION)) {			className = CLASSNAME_PROPERTY_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_REFLECT_PERMISSION)) {			className = CLASSNAME_REFLECT_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_RUNTIME_PERMISSION)) {			className = CLASSNAME_RUNTIME_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_SECURITY_PERMISSION)) {			className = CLASSNAME_SECURITY_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_SERIALIZABLE_PERMISSION)) {			className = CLASSNAME_SERIALIZABLE_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_UNRESOLVED_PERMISSION)) {			className = CLASSNAME_UNRESOLVED_PERMISSION_TMP;		} else if (name.equals(CLASSNAME_ALL_PERMISSION)) {			className = CLASSNAME_ALL_PERMISSION_TMP;		} 		return className;	}	public Permission create() 			throws PolicyFileParsingException, SecurityException {		if (_class == null) {			throw getParsingException("No permission class.");		} 		int numArgs = 0;		if (_targetName != null) {			numArgs++;		} 		if (_actions != null) {			numArgs++;		} 		Class[] classes = new Class[numArgs];		int i = 0;		try {			if (_targetName != null) {				classes[i] = Class.forName("java.lang.String");				i++;			} 			if (_actions != null) {				classes[i] = Class.forName("java.lang.String");				i++;			} 		} catch (ClassNotFoundException excpt) {			throw getParsingException(excpt.toString());		} 		Constructor constructor;		try {			constructor = _class.getConstructor(classes);		} catch (NoSuchMethodException excpt) {			throw getParsingException(excpt.toString() + " : " 									  + _class.getName());		} 		if (constructor == null) {			throw getParsingException("No constructor.");		} 		String[] args = new String[numArgs];		i = 0;		if (_targetName != null) {			args[i] = _targetName;			i++;		} 		if (_actions != null) {			args[i] = _actions;			i++;		} 		Object obj;		try {			obj = constructor.newInstance(args);		} catch (InstantiationException excpt) {			throw getParsingException(excpt.toString());		} catch (IllegalAccessException excpt) {			throw getParsingException(excpt.toString());		} catch (IllegalArgumentException excpt) {			throw getParsingException(excpt.toString());		} catch (InvocationTargetException excpt) {			throw getParsingException(excpt.getTargetException().toString());		} 		if (!(obj instanceof Permission)) {			_permission = null;			throw getParsingException("Non-permission class cannot be specified.");		} 		if (_type == TYPE_PROTECTION) {			if (!(obj instanceof Protection)) {				_permission = null;				throw getParsingException("Protection class is excepted.");			} 		} 		_permission = (Permission)obj;        log.debug("Created permission: "+_permission);		return _permission;	}	public boolean equals(PolicyPermission permission) {		if (permission == null) {			return false;		} 		if (!equalsClassName(permission.getClassName())) {			return false;		} 		if (!equalsSigners(permission._signers)) {			return false;		} 		if (!equalsTargetName(permission.getTargetName())) {			return false;		} 		if (!equalsActions(permission.getActions())) {			return false;		} 		return true;	}	public boolean equals(Object obj) {		if (obj instanceof PolicyPermission) {			PolicyPermission perm = (PolicyPermission)obj;			return equals(perm);		} 		return false;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -