diff options
Diffstat (limited to 'gcc-4.2.1/libjava/java/lang/VMSecurityManager.java')
| -rw-r--r-- | gcc-4.2.1/libjava/java/lang/VMSecurityManager.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gcc-4.2.1/libjava/java/lang/VMSecurityManager.java b/gcc-4.2.1/libjava/java/lang/VMSecurityManager.java new file mode 100644 index 000000000..25aeb7c49 --- /dev/null +++ b/gcc-4.2.1/libjava/java/lang/VMSecurityManager.java @@ -0,0 +1,68 @@ +/* + * java.lang.SecurityManager: part of the Java Class Libraries project. + * Copyright (C) 1998, 2001, 2002, 2005 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +package java.lang; + +import java.net.*; +import java.util.*; +import java.io.*; + +/** + ** VMSecurityManager is a helper class for SecurityManager the VM must + ** implement. + ** + ** @author John Keiser + ** @version 1.1.0, 31 May 1998 + **/ +class VMSecurityManager +{ + /** Get a list of all the classes currently executing + ** methods on the Java stack. getClassContext()[0] is + ** the currently executing method + ** <STRONG>Spec Note:</STRONG> does not say whether + ** the stack will include the getClassContext() call or + ** the one just before it. + ** + ** @return an array containing all the methods on classes + ** on the Java execution stack. + **/ + static native Class[] getClassContext(Class caller); + + /** Get the current ClassLoader--the one nearest to the + ** top of the stack. + ** @return the current ClassLoader. + **/ + static ClassLoader currentClassLoader(Class caller) + { + // The docs above are wrong. See the online docs. + // FIXME this implementation is a bit wrong too -- the docs say we + // must also consider ancestors of the system class loader. + ClassLoader systemClassLoader = ClassLoader.systemClassLoader; + Class[] classStack = getClassContext (caller); + for (int i = 0; i < classStack.length; i++) + { + ClassLoader loader = classStack[i].getClassLoader(); + if (loader != null && loader != systemClassLoader) + return loader; + } + + return null; + } +} |
