mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-19 03:43:59 +08:00
Makefile.in: Rebuilt.
* Makefile.in: Rebuilt. * Makefile.am (core_java_source_files): Added RuntimePermission.java. * java/lang/RuntimePermission.java: Imported from Classpath. * java/lang/Thread.java (getContextClassLoader): Now synchronized. Added security code. (setContextClassLoader): Likewise. From-SVN: r37772
This commit is contained in:
parent
2721806e98
commit
0cf17a8051
@ -1,5 +1,13 @@
|
||||
2000-11-26 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuilt.
|
||||
* Makefile.am (core_java_source_files): Added
|
||||
RuntimePermission.java.
|
||||
* java/lang/RuntimePermission.java: Imported from Classpath.
|
||||
* java/lang/Thread.java (getContextClassLoader): Now
|
||||
synchronized. Added security code.
|
||||
(setContextClassLoader): Likewise.
|
||||
|
||||
* prims.cc (_Jv_NewObjectArray): Use const_cast to initialize
|
||||
length field of array.
|
||||
(_Jv_NewPrimArray): Likewise.
|
||||
|
@ -816,6 +816,7 @@ java/lang/Process.java \
|
||||
java/lang/Runnable.java \
|
||||
java/lang/Runtime.java \
|
||||
java/lang/RuntimeException.java \
|
||||
java/lang/RuntimePermission.java \
|
||||
java/lang/SecurityException.java \
|
||||
java/lang/SecurityManager.java \
|
||||
java/lang/Short.java \
|
||||
@ -941,6 +942,7 @@ java/util/EventListener.java \
|
||||
java/util/EventObject.java \
|
||||
java/util/GregorianCalendar.java \
|
||||
java/util/HashMap.java \
|
||||
java/util/HashSet.java \
|
||||
java/util/Hashtable.java \
|
||||
java/util/Iterator.java \
|
||||
java/util/LinkedList.java \
|
||||
@ -968,6 +970,8 @@ java/util/TimeZone.java \
|
||||
java/util/Timer.java \
|
||||
java/util/TimerTask.java \
|
||||
java/util/TooManyListenersException.java \
|
||||
java/util/TreeMap.java \
|
||||
java/util/TreeSet.java \
|
||||
java/util/Vector.java
|
||||
|
||||
|
||||
|
@ -120,29 +120,43 @@ here = @here@
|
||||
libgcj_basedir = @libgcj_basedir@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign no-installinfo
|
||||
@TESTSUBDIR_TRUE@SUBDIRS = @TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include
|
||||
@TESTSUBDIR_FALSE@SUBDIRS = @TESTSUBDIR_FALSE@$(DIRLTDL) gcj include
|
||||
@USE_LIBDIR_TRUE@toolexeclibdir = @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR)
|
||||
@USE_LIBDIR_FALSE@toolexeclibdir = @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR)
|
||||
@USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
|
||||
@NO_X_TRUE@cond_x_ltlibrary =
|
||||
@NO_X_FALSE@cond_x_ltlibrary = @NO_X_FALSE@libgcjx.la
|
||||
@TESTSUBDIR_TRUE@SUBDIRS = \
|
||||
@TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include
|
||||
@TESTSUBDIR_FALSE@SUBDIRS = \
|
||||
@TESTSUBDIR_FALSE@$(DIRLTDL) gcj include
|
||||
@USE_LIBDIR_TRUE@toolexeclibdir = \
|
||||
@USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR)
|
||||
@USE_LIBDIR_FALSE@toolexeclibdir = \
|
||||
@USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR)
|
||||
@USE_LIBDIR_FALSE@toolexecdir = \
|
||||
@USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
|
||||
@NO_X_TRUE@cond_x_ltlibrary = \
|
||||
@NO_X_FALSE@cond_x_ltlibrary = \
|
||||
@NO_X_FALSE@libgcjx.la
|
||||
|
||||
toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
|
||||
toolexeclib_DATA = libgcj.spec
|
||||
data_DATA = libgcj.zip
|
||||
|
||||
@NEEDS_DATA_START_TRUE@toolexeclib_LIBRARIES = @NEEDS_DATA_START_TRUE@libgcjdata.a
|
||||
@NEEDS_DATA_START_TRUE@libgcjdata_a_SOURCES = @NEEDS_DATA_START_TRUE@libgcjdata.c
|
||||
@NEEDS_DATA_START_TRUE@toolexeclib_LIBRARIES = \
|
||||
@NEEDS_DATA_START_TRUE@libgcjdata.a
|
||||
@NEEDS_DATA_START_TRUE@libgcjdata_a_SOURCES = \
|
||||
@NEEDS_DATA_START_TRUE@libgcjdata.c
|
||||
|
||||
@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij
|
||||
@NATIVE_TRUE@bin_PROGRAMS = \
|
||||
@NATIVE_TRUE@jv-convert gij
|
||||
|
||||
bin_SCRIPTS = addr2name.awk
|
||||
@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||
@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_FALSE@zip
|
||||
@CANADIAN_FALSE@ZIP = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||
@CANADIAN_TRUE@GCJH = @CANADIAN_TRUE@gcjh
|
||||
@CANADIAN_FALSE@GCJH = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
|
||||
@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = \
|
||||
@CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||
@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = \
|
||||
@CANADIAN_TRUE@@NULL_TARGET_FALSE@zip
|
||||
@CANADIAN_FALSE@ZIP = \
|
||||
@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||
@CANADIAN_TRUE@GCJH = \
|
||||
@CANADIAN_TRUE@gcjh
|
||||
@CANADIAN_FALSE@GCJH = \
|
||||
@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
|
||||
|
||||
GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c
|
||||
GCJLINK = $(LIBTOOL) --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@
|
||||
@ -157,8 +171,10 @@ AM_CXXFLAGS = -fno-rtti -fvtable-thunks -fasynchronous-exceptions \
|
||||
-fdollars-in-identifiers \
|
||||
@LIBGCJ_CXXFLAGS@ @EXCEPTIONSPEC@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE
|
||||
|
||||
@USING_GCC_TRUE@AM_CFLAGS = @USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS)
|
||||
@USING_GCC_FALSE@AM_CFLAGS = @USING_GCC_FALSE@@LIBGCJ_CFLAGS@
|
||||
@USING_GCC_TRUE@AM_CFLAGS = \
|
||||
@USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS)
|
||||
@USING_GCC_FALSE@AM_CFLAGS = \
|
||||
@USING_GCC_FALSE@@LIBGCJ_CFLAGS@
|
||||
|
||||
JCFLAGS = -g
|
||||
JC1FLAGS = -g @LIBGCJ_JAVAFLAGS@
|
||||
@ -225,7 +241,8 @@ extra_headers = java/lang/Object.h java/lang/Class.h
|
||||
|
||||
NM = nm
|
||||
|
||||
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS
|
||||
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \
|
||||
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS
|
||||
|
||||
CONVERT_DIR = gnu/gcj/convert
|
||||
|
||||
@ -567,6 +584,7 @@ java/lang/Process.java \
|
||||
java/lang/Runnable.java \
|
||||
java/lang/Runtime.java \
|
||||
java/lang/RuntimeException.java \
|
||||
java/lang/RuntimePermission.java \
|
||||
java/lang/SecurityException.java \
|
||||
java/lang/SecurityManager.java \
|
||||
java/lang/Short.java \
|
||||
@ -692,6 +710,7 @@ java/util/EventListener.java \
|
||||
java/util/EventObject.java \
|
||||
java/util/GregorianCalendar.java \
|
||||
java/util/HashMap.java \
|
||||
java/util/HashSet.java \
|
||||
java/util/Hashtable.java \
|
||||
java/util/Iterator.java \
|
||||
java/util/LinkedList.java \
|
||||
@ -719,6 +738,8 @@ java/util/TimeZone.java \
|
||||
java/util/Timer.java \
|
||||
java/util/TimerTask.java \
|
||||
java/util/TooManyListenersException.java \
|
||||
java/util/TreeMap.java \
|
||||
java/util/TreeSet.java \
|
||||
java/util/Vector.java
|
||||
|
||||
|
||||
@ -1167,7 +1188,7 @@ libgcj-test.spec.in libgcj.spec.in
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = gtar
|
||||
TAR = tar
|
||||
GZIP_ENV = --best
|
||||
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
|
||||
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||
@ -1497,10 +1518,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||
.deps/java/lang/NumberFormatException.P .deps/java/lang/Object.P \
|
||||
.deps/java/lang/OutOfMemoryError.P .deps/java/lang/Process.P \
|
||||
.deps/java/lang/Runnable.P .deps/java/lang/Runtime.P \
|
||||
.deps/java/lang/RuntimeException.P .deps/java/lang/SecurityException.P \
|
||||
.deps/java/lang/SecurityManager.P .deps/java/lang/Short.P \
|
||||
.deps/java/lang/StackOverflowError.P .deps/java/lang/String.P \
|
||||
.deps/java/lang/StringBuffer.P \
|
||||
.deps/java/lang/RuntimeException.P .deps/java/lang/RuntimePermission.P \
|
||||
.deps/java/lang/SecurityException.P .deps/java/lang/SecurityManager.P \
|
||||
.deps/java/lang/Short.P .deps/java/lang/StackOverflowError.P \
|
||||
.deps/java/lang/String.P .deps/java/lang/StringBuffer.P \
|
||||
.deps/java/lang/StringIndexOutOfBoundsException.P \
|
||||
.deps/java/lang/System.P .deps/java/lang/Thread.P \
|
||||
.deps/java/lang/ThreadDeath.P .deps/java/lang/ThreadGroup.P \
|
||||
@ -1647,11 +1668,11 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||
.deps/java/util/EmptyStackException.P .deps/java/util/Enumeration.P \
|
||||
.deps/java/util/EventListener.P .deps/java/util/EventObject.P \
|
||||
.deps/java/util/GregorianCalendar.P .deps/java/util/HashMap.P \
|
||||
.deps/java/util/Hashtable.P .deps/java/util/Iterator.P \
|
||||
.deps/java/util/LinkedList.P .deps/java/util/List.P \
|
||||
.deps/java/util/ListIterator.P .deps/java/util/ListResourceBundle.P \
|
||||
.deps/java/util/Locale.P .deps/java/util/Map.P \
|
||||
.deps/java/util/MissingResourceException.P \
|
||||
.deps/java/util/HashSet.P .deps/java/util/Hashtable.P \
|
||||
.deps/java/util/Iterator.P .deps/java/util/LinkedList.P \
|
||||
.deps/java/util/List.P .deps/java/util/ListIterator.P \
|
||||
.deps/java/util/ListResourceBundle.P .deps/java/util/Locale.P \
|
||||
.deps/java/util/Map.P .deps/java/util/MissingResourceException.P \
|
||||
.deps/java/util/NoSuchElementException.P .deps/java/util/Observable.P \
|
||||
.deps/java/util/Observer.P .deps/java/util/Properties.P \
|
||||
.deps/java/util/PropertyPermission.P \
|
||||
@ -1661,7 +1682,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||
.deps/java/util/SortedSet.P .deps/java/util/Stack.P \
|
||||
.deps/java/util/StringTokenizer.P .deps/java/util/TimeZone.P \
|
||||
.deps/java/util/Timer.P .deps/java/util/TimerTask.P \
|
||||
.deps/java/util/TooManyListenersException.P .deps/java/util/Vector.P \
|
||||
.deps/java/util/TooManyListenersException.P .deps/java/util/TreeMap.P \
|
||||
.deps/java/util/TreeSet.P .deps/java/util/Vector.P \
|
||||
.deps/java/util/jar/Attributes.P .deps/java/util/jar/JarEntry.P \
|
||||
.deps/java/util/jar/JarException.P .deps/java/util/jar/JarFile.P \
|
||||
.deps/java/util/jar/JarInputStream.P \
|
||||
@ -2058,7 +2080,7 @@ distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
cp -pr $$/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|
@ -88,6 +88,7 @@ GCTESTSPEC = @GCTESTSPEC@
|
||||
INCLTDL = @INCLTDL@
|
||||
JC1GCSPEC = @JC1GCSPEC@
|
||||
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
||||
LIBGCJDEBUG = @LIBGCJDEBUG@
|
||||
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
||||
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
||||
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
||||
|
@ -88,6 +88,7 @@ GCTESTSPEC = @GCTESTSPEC@
|
||||
INCLTDL = @INCLTDL@
|
||||
JC1GCSPEC = @JC1GCSPEC@
|
||||
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
||||
LIBGCJDEBUG = @LIBGCJDEBUG@
|
||||
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
||||
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
||||
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
||||
|
@ -426,4 +426,3 @@ public abstract class ClassLoader {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
153
libjava/java/lang/RuntimePermission.java
Normal file
153
libjava/java/lang/RuntimePermission.java
Normal file
@ -0,0 +1,153 @@
|
||||
/* RuntimePermission.java
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath 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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA.
|
||||
|
||||
As a special exception, if you link this library with other files to
|
||||
produce an executable, this library does not by itself cause the
|
||||
resulting executable to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why the
|
||||
executable file might be covered by the GNU General Public License. */
|
||||
|
||||
|
||||
package java.lang;
|
||||
|
||||
import java.security.*;
|
||||
|
||||
/**
|
||||
* A <code>RuntimePermission</code> contains a permission name, but no
|
||||
* actions list. This means you either have the permission or you don't.
|
||||
*
|
||||
* Permission names have the follow the hierarchial property naming
|
||||
* convention. In addition, an asterisk may appear at the end of a
|
||||
* name if following a period or by itself.
|
||||
*
|
||||
* <table border=1>
|
||||
* <tr><th>Valid names</th><th>Invalid names</th></tr>
|
||||
* <tr><td>"accessClassInPackage.*","*"</td>
|
||||
* <td>"**", "*x", "*.a"</td></tr>
|
||||
* </table>
|
||||
* <br>
|
||||
*
|
||||
* The following table provides a list of all the possible RuntimePermission
|
||||
* permission names with a description of what that permission allows.
|
||||
* <br>
|
||||
* <table border=1>
|
||||
* <tr><th>Permission Name</th><th>Permission Allows</th></tr>
|
||||
* <tr>
|
||||
* <td><code>createClassLoader</code></td>
|
||||
* <td>creation of a class loader</td></tr>
|
||||
* <tr>
|
||||
* <td><code>getClassLoader</code></td>
|
||||
* <td>retrieval of the class loader for the calling class</td></tr>
|
||||
* <tr>
|
||||
* <td><code>setContextClassLoader</code></td>
|
||||
* <td>allows the setting of the context class loader used by a
|
||||
* thread including system threads</td></tr>
|
||||
* <tr>
|
||||
* <td><code>setSecurityManager</code></td>
|
||||
* <td>allows the application to replace the security manager with
|
||||
* another, possibly less restrictive one.</td></tr>
|
||||
* <tr>
|
||||
* <td><code>createSecurityManager</code></td>
|
||||
* <td>allows the application to create a new security manager</td></tr>
|
||||
* <tr>
|
||||
* <td><code>exitVM</code></td>
|
||||
* <td>allows the application to halt the virtual machine</td></tr>
|
||||
* <tr>
|
||||
* <td><code>setFactory</code></td>
|
||||
* <td>allows the application to set the socket factory for socket,
|
||||
* server socket, stream handler, or RMI socket factory.</td></tr>
|
||||
* <tr>
|
||||
* <td><code>setIO</code></td>
|
||||
* <td>allows the application to set System.out, System.in, and
|
||||
* System.err</td></tr>
|
||||
* <tr>
|
||||
* <td><code>modifyThread</code></td>
|
||||
* <td>allows the application to modify any thread in the virtual machine
|
||||
* using any of the methods <code>stop</code>, <code>resume</code>,
|
||||
* <code>suspend</code>, <code>setPriority</code>, and
|
||||
* <code>setName</code> of classs <code>Thread</code></td></tr>
|
||||
* <tr>
|
||||
* <td><code>stopThread</code></td>
|
||||
* <td>allows the application to <code>stop</code> any thread it has
|
||||
* access to in the system</td></tr>
|
||||
* <tr>
|
||||
* <td><code>modifyThreadGroup</td>
|
||||
* <td>allows the application to modify thread groups using any of the
|
||||
* methods <code>destroy</code>, <code>resume</code>,
|
||||
* <code>setDaemon</code>, <code>setMaxPriority</code>,
|
||||
* <code>stop</code>, and <code>suspend</code> of the class
|
||||
* <code>ThreadGroup</code></td></tr>
|
||||
* <tr>
|
||||
* <td><code>getProtectionDomain</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>readFileDescriptor</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>writeFileDescriptor</code</td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>loadLibrary.{library name}</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>accessClassInPackage.{package name}</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>defineClassInPackage.{package name}</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>accessDeclaredMembers</code></td>
|
||||
* <td></td></tr>
|
||||
* <tr>
|
||||
* <td><code>queuePrintJob</code></td>
|
||||
* <td></td></tr>
|
||||
* </table>
|
||||
*
|
||||
* @since JDK 1.2
|
||||
*
|
||||
* @author Brian Jones
|
||||
*/
|
||||
public class RuntimePermission extends java.security.BasicPermission
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @param permissionName the name of the granted permission
|
||||
*
|
||||
* @throws IllegalArgumentException thrown if the name contains an invalid
|
||||
* wildcard character
|
||||
*/
|
||||
public RuntimePermission(String permissionName)
|
||||
{
|
||||
this(permissionName, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param permissionName the name of the granted permission
|
||||
* @param actions this should always be null
|
||||
*
|
||||
* @throws IllegalArgumentException throw if the name contains an invalid
|
||||
* wildcard character
|
||||
*/
|
||||
public RuntimePermission(String permissionName, String actions)
|
||||
{
|
||||
super(permissionName, actions);
|
||||
}
|
||||
}
|
@ -145,21 +145,37 @@ public class Thread implements Runnable
|
||||
daemon_flag = status;
|
||||
}
|
||||
|
||||
public ClassLoader getContextClassLoader()
|
||||
public synchronized ClassLoader getContextClassLoader()
|
||||
{
|
||||
if (context_class_loader == null)
|
||||
context_class_loader = ClassLoader.getSystemClassLoader ();
|
||||
|
||||
SecurityManager s = System.getSecurityManager();
|
||||
// FIXME: we can't currently find the caller's class loader.
|
||||
ClassLoader callers = null;
|
||||
if (s != null && callers != null)
|
||||
{
|
||||
context_class_loader = ClassLoader.getSystemClassLoader ();
|
||||
return context_class_loader;
|
||||
// See if the caller's class loader is the same as or an
|
||||
// ancestor of this thread's class loader.
|
||||
while (callers != null && callers != context_class_loader)
|
||||
{
|
||||
// FIXME: should use some internal version of getParent
|
||||
// that avoids security checks.
|
||||
callers = callers.getParent ();
|
||||
}
|
||||
|
||||
if (callers != context_class_loader)
|
||||
s.checkPermission (new RuntimePermission ("getClassLoader"));
|
||||
}
|
||||
|
||||
// FIXME: Add security manager stuff here.
|
||||
return context_class_loader;
|
||||
}
|
||||
|
||||
public void setContextClassLoader(ClassLoader cl)
|
||||
public synchronized void setContextClassLoader(ClassLoader cl)
|
||||
{
|
||||
// FIXME: Add security manager stuff here.
|
||||
SecurityManager s = System.getSecurityManager ();
|
||||
if (s != null)
|
||||
s.checkPermission (new RuntimePermission ("setContextClassLoader"));
|
||||
context_class_loader = cl;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user