getComponentType works in possitive cases arrays
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 15 Jan 2013 09:23:46 +0100
brancharrays
changeset 45184e6b97c468c
parent 450 f2891b169df3
child 452 086c60adf08e
getComponentType works in possitive cases
emul/src/main/java/java/lang/Class.java
     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" +