1.1 --- a/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ResourcesTest.java Thu Oct 03 14:43:00 2013 +0200
1.2 +++ b/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ResourcesTest.java Thu Oct 03 14:45:25 2013 +0200
1.3 @@ -38,6 +38,17 @@
1.4 }
1.5 return sb.toString();
1.6 }
1.7 +
1.8 + @Compare public String readResourceAsStreamFromClassLoader() throws Exception {
1.9 + InputStream is = getClass().getClassLoader().getResourceAsStream("org/apidesign/bck2brwsr/tck/Resources.txt");
1.10 + byte[] b = new byte[30];
1.11 + int len = is.read(b);
1.12 + StringBuilder sb = new StringBuilder();
1.13 + for (int i = 0; i < len; i++) {
1.14 + sb.append((char)b[i]);
1.15 + }
1.16 + return sb.toString();
1.17 + }
1.18
1.19 @Factory public static Object[] create() {
1.20 return VMTest.create(ResourcesTest.class);
2.1 --- a/rt/emul/mini/src/main/java/java/lang/Class.java Thu Oct 03 14:43:00 2013 +0200
2.2 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java Thu Oct 03 14:45:25 2013 +0200
2.3 @@ -1158,7 +1158,7 @@
2.4 * @see java.lang.RuntimePermission
2.5 */
2.6 public ClassLoader getClassLoader() {
2.7 - throw new SecurityException();
2.8 + return ClassLoader.getSystemClassLoader();
2.9 }
2.10
2.11 /**
3.1 --- a/rt/emul/mini/src/main/java/java/lang/ClassLoader.java Thu Oct 03 14:43:00 2013 +0200
3.2 +++ b/rt/emul/mini/src/main/java/java/lang/ClassLoader.java Thu Oct 03 14:45:25 2013 +0200
3.3 @@ -180,7 +180,7 @@
3.4 * @since 1.2
3.5 */
3.6 protected ClassLoader(ClassLoader parent) {
3.7 - throw new SecurityException();
3.8 + this.parent = parent;
3.9 }
3.10
3.11 /**
3.12 @@ -199,7 +199,7 @@
3.13 * of a new class loader.
3.14 */
3.15 protected ClassLoader() {
3.16 - throw new SecurityException();
3.17 + this.parent = null;
3.18 }
3.19
3.20 // -- Class --
3.21 @@ -845,8 +845,27 @@
3.22 * @revised 1.4
3.23 */
3.24 public static ClassLoader getSystemClassLoader() {
3.25 - throw new SecurityException();
3.26 + if (SYSTEM == null) {
3.27 + SYSTEM = new ClassLoader() {
3.28 + @Override
3.29 + protected Enumeration<URL> findResources(String name) throws IOException {
3.30 + return getSystemResources(name);
3.31 + }
3.32 +
3.33 + @Override
3.34 + protected URL findResource(String name) {
3.35 + return getSystemResource(name);
3.36 + }
3.37 +
3.38 + @Override
3.39 + protected Class<?> findClass(String name) throws ClassNotFoundException {
3.40 + return Class.forName(name);
3.41 + }
3.42 + };
3.43 + }
3.44 + return SYSTEM;
3.45 }
3.46 + private static ClassLoader SYSTEM;
3.47
3.48 // Returns true if the specified class loader can be found in this class
3.49 // loader's delegation chain.
3.50 @@ -870,7 +889,7 @@
3.51 }
3.52
3.53 private static URL getBootstrapResource(String name) {
3.54 - throw new UnsupportedOperationException();
3.55 + return Object.class.getResource("/" + name);
3.56 }
3.57
3.58 private static Enumeration<URL> getBootstrapResources(String name) {
3.59 @@ -910,7 +929,7 @@
3.60 }
3.61
3.62 public boolean hasMoreElements() {
3.63 - if (next == null) {
3.64 + if (next == null && index < arr.length) {
3.65 if (arr[index].hasMoreElements()) {
3.66 next = (URL) arr[index].nextElement();
3.67 } else {