Class.forName can load java.lang.String
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 15 Dec 2012 07:10:58 +0100
changeset 3211848c77df886
parent 320 92224eba98cb
child 322 3884815c0629
Class.forName can load java.lang.String
emul/src/main/java/java/lang/Class.java
vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java
     1.1 --- a/emul/src/main/java/java/lang/Class.java	Sat Dec 15 06:16:43 2012 +0100
     1.2 +++ b/emul/src/main/java/java/lang/Class.java	Sat Dec 15 07:10:58 2012 +0100
     1.3 @@ -144,8 +144,18 @@
     1.4       */
     1.5      public static Class<?> forName(String className)
     1.6                  throws ClassNotFoundException {
     1.7 -        throw new UnsupportedOperationException();
     1.8 +        Class<?> c = loadCls(className.replace('.', '_'));
     1.9 +        if (c == null) {
    1.10 +            throw new ClassNotFoundException();
    1.11 +        }
    1.12 +        return c;
    1.13      }
    1.14 +    
    1.15 +    @JavaScriptBody(args = "c", body =
    1.16 +        "if (vm[c]) return vm[c].$class;"
    1.17 +      + "else return null;"
    1.18 +    )
    1.19 +    private static native Class<?> loadCls(String c);
    1.20  
    1.21  
    1.22      /**
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java	Sat Dec 15 06:16:43 2012 +0100
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java	Sat Dec 15 07:10:58 2012 +0100
     2.3 @@ -36,6 +36,10 @@
     2.4          return sb.toString().toString();
     2.5      }
     2.6      
     2.7 +    @Compare public String nameOfStringClass() throws Exception {
     2.8 +        return Class.forName("java.lang.String").getName();
     2.9 +    }
    2.10 +    
    2.11      @Factory
    2.12      public static Object[] create() {
    2.13          return CompareVMs.create(CompareStringsTest.class);