Let Class.getDeclaredMethods filter out methods from Class.getMethods
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 20 Mar 2016 09:25:47 +0100
changeset 19007865a00c30ef
parent 1899 d729cfa77fa7
child 1901 e9be21ce2291
Let Class.getDeclaredMethods filter out methods from Class.getMethods
rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java
rt/emul/mini/src/main/java/java/lang/Class.java
     1.1 --- a/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java	Sun Mar 20 09:05:43 2016 +0100
     1.2 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java	Sun Mar 20 09:25:47 2016 +0100
     1.3 @@ -100,6 +100,24 @@
     1.4          return sb.toString();
     1.5      }
     1.6  
     1.7 +    @Compare
     1.8 +    public String namesOfDeclaredMethods() {
     1.9 +        StringBuilder sb = new StringBuilder();
    1.10 +        String[] arr = new String[20];
    1.11 +        Method[] methods = StaticUse.class.getDeclaredMethods();
    1.12 +        if (methods.length != 2) {
    1.13 +            throw new IllegalStateException("Expecting just two methods, was: " + methods.length);
    1.14 +        }
    1.15 +        int i = 0;
    1.16 +        for (Method m : methods) {
    1.17 +            arr[i++] = m.getName();
    1.18 +        }
    1.19 +        for (String s : sort(arr, i)) {
    1.20 +            sb.append(s).append("\n");
    1.21 +        }
    1.22 +        return sb.toString();
    1.23 +    }
    1.24 +
    1.25      @Compare public String paramsOfConstructors() {
    1.26          StringBuilder sb = new StringBuilder();
    1.27          String[] arr = new String[20];
     2.1 --- a/rt/emul/mini/src/main/java/java/lang/Class.java	Sun Mar 20 09:05:43 2016 +0100
     2.2 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java	Sun Mar 20 09:25:47 2016 +0100
     2.3 @@ -1005,7 +1005,21 @@
     2.4       * @since JDK1.1
     2.5       */
     2.6      public Method[] getDeclaredMethods() throws SecurityException {
     2.7 -        throw new SecurityException();
     2.8 +        Method[] arr = getMethods();
     2.9 +        int cnt = 0;
    2.10 +        for (int i = 0; i < arr.length; i++) {
    2.11 +            if (arr[i].getDeclaringClass() == this) {
    2.12 +                cnt++;
    2.13 +            }
    2.14 +        }
    2.15 +        Method[] ret = new Method[cnt];
    2.16 +        cnt = 0;
    2.17 +        for (int i = 0; i < arr.length; i++) {
    2.18 +            if (arr[i].getDeclaringClass() == this) {
    2.19 +                ret[cnt++] = arr[i];
    2.20 +            }
    2.21 +        }
    2.22 +        return ret;
    2.23      }
    2.24      
    2.25      /**