1.1 --- a/emul/src/main/java/java/lang/Class.java Tue Jan 15 09:01:19 2013 +0100
1.2 +++ b/emul/src/main/java/java/lang/Class.java Tue Jan 15 09:23:46 2013 +0100
1.3 @@ -1013,9 +1013,47 @@
1.4 * @since JDK1.1
1.5 */
1.6 public Class<?> getComponentType() {
1.7 + if (isArray()) {
1.8 + try {
1.9 + return getComponentType0();
1.10 + } catch (ClassNotFoundException cnfe) {
1.11 + throw new IllegalStateException(cnfe);
1.12 + }
1.13 + }
1.14 return null;
1.15 }
1.16
1.17 + private Class<?> getComponentType0() throws ClassNotFoundException {
1.18 + String n = getName().substring(1);
1.19 + switch (n.charAt(0)) {
1.20 + case 'L':
1.21 + n = n.substring(1, n.length() - 1);
1.22 + return Class.forName(n);
1.23 + case 'I':
1.24 + return Integer.TYPE;
1.25 + case 'J':
1.26 + return Long.TYPE;
1.27 + case 'D':
1.28 + return Double.TYPE;
1.29 + case 'F':
1.30 + return Float.TYPE;
1.31 + case 'B':
1.32 + return Byte.TYPE;
1.33 + case 'Z':
1.34 + return Boolean.TYPE;
1.35 + case 'S':
1.36 + return Short.TYPE;
1.37 + case 'V':
1.38 + return Void.TYPE;
1.39 + case 'C':
1.40 + return Character.TYPE;
1.41 + case '[':
1.42 + return defineArray(n);
1.43 + default:
1.44 + throw new ClassNotFoundException("Unknown component type of " + getName());
1.45 + }
1.46 + }
1.47 +
1.48 @JavaScriptBody(args = { "sig" }, body =
1.49 "var c = Array[sig];\n" +
1.50 "if (c) return c;\n" +