Allow idempotent setting of system classloader
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 31 Oct 2013 15:16:56 +0100
changeset 14038120793cc756
parent 1402 e896bc687984
child 1404 60ca4f72a70c
Allow idempotent setting of system classloader
rt/emul/compact/src/main/java/java/lang/Thread.java
rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ClassLoaderTest.java
     1.1 --- a/rt/emul/compact/src/main/java/java/lang/Thread.java	Thu Oct 31 15:01:35 2013 +0100
     1.2 +++ b/rt/emul/compact/src/main/java/java/lang/Thread.java	Thu Oct 31 15:16:56 2013 +0100
     1.3 @@ -1165,7 +1165,7 @@
     1.4       * @since 1.2
     1.5       */
     1.6      public ClassLoader getContextClassLoader() {
     1.7 -        return null;
     1.8 +        return ClassLoader.getSystemClassLoader();
     1.9      }
    1.10  
    1.11      /**
    1.12 @@ -1191,6 +1191,9 @@
    1.13       * @since 1.2
    1.14       */
    1.15      public void setContextClassLoader(ClassLoader cl) {
    1.16 +        if (cl == ClassLoader.getSystemClassLoader()) {
    1.17 +            return;
    1.18 +        }
    1.19          throw new SecurityException();
    1.20      }
    1.21  
     2.1 --- a/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ClassLoaderTest.java	Thu Oct 31 15:01:35 2013 +0100
     2.2 +++ b/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ClassLoaderTest.java	Thu Oct 31 15:16:56 2013 +0100
     2.3 @@ -29,6 +29,11 @@
     2.4      @Compare public Object unknownResource() {
     2.5          return ClassLoader.getSystemResource("really/unknown/resource.txt");
     2.6      }
     2.7 +    
     2.8 +    @Compare public boolean indenpotentSetOfClassloaderIsOK() {
     2.9 +        Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader());
    2.10 +        return Thread.currentThread().getContextClassLoader() == ClassLoader.getSystemClassLoader();
    2.11 +    }
    2.12  
    2.13      @Factory public static Object[] create() {
    2.14          return VMTest.create(ClassLoaderTest.class);