# HG changeset patch # User Jaroslav Tulach # Date 1358238226 -3600 # Node ID 84e6b97c468ca649faf55be1e09f621550a0feab # Parent f2891b169df31c6074de6c9edce1333d21dc4429 getComponentType works in possitive cases diff -r f2891b169df3 -r 84e6b97c468c emul/src/main/java/java/lang/Class.java --- a/emul/src/main/java/java/lang/Class.java Tue Jan 15 09:01:19 2013 +0100 +++ b/emul/src/main/java/java/lang/Class.java Tue Jan 15 09:23:46 2013 +0100 @@ -1013,9 +1013,47 @@ * @since JDK1.1 */ public Class getComponentType() { + if (isArray()) { + try { + return getComponentType0(); + } catch (ClassNotFoundException cnfe) { + throw new IllegalStateException(cnfe); + } + } return null; } + private Class getComponentType0() throws ClassNotFoundException { + String n = getName().substring(1); + switch (n.charAt(0)) { + case 'L': + n = n.substring(1, n.length() - 1); + return Class.forName(n); + case 'I': + return Integer.TYPE; + case 'J': + return Long.TYPE; + case 'D': + return Double.TYPE; + case 'F': + return Float.TYPE; + case 'B': + return Byte.TYPE; + case 'Z': + return Boolean.TYPE; + case 'S': + return Short.TYPE; + case 'V': + return Void.TYPE; + case 'C': + return Character.TYPE; + case '[': + return defineArray(n); + default: + throw new ClassNotFoundException("Unknown component type of " + getName()); + } + } + @JavaScriptBody(args = { "sig" }, body = "var c = Array[sig];\n" + "if (c) return c;\n" +