# HG changeset patch # User Jaroslav Tulach # Date 1458462347 -3600 # Node ID 7865a00c30ef17596050c3be1f0c320a3ce7a2ca # Parent d729cfa77fa77e7885626b43ffa4318f4d3bd26e Let Class.getDeclaredMethods filter out methods from Class.getMethods diff -r d729cfa77fa7 -r 7865a00c30ef rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java --- a/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java Sun Mar 20 09:05:43 2016 +0100 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java Sun Mar 20 09:25:47 2016 +0100 @@ -100,6 +100,24 @@ return sb.toString(); } + @Compare + public String namesOfDeclaredMethods() { + StringBuilder sb = new StringBuilder(); + String[] arr = new String[20]; + Method[] methods = StaticUse.class.getDeclaredMethods(); + if (methods.length != 2) { + throw new IllegalStateException("Expecting just two methods, was: " + methods.length); + } + int i = 0; + for (Method m : methods) { + arr[i++] = m.getName(); + } + for (String s : sort(arr, i)) { + sb.append(s).append("\n"); + } + return sb.toString(); + } + @Compare public String paramsOfConstructors() { StringBuilder sb = new StringBuilder(); String[] arr = new String[20]; diff -r d729cfa77fa7 -r 7865a00c30ef rt/emul/mini/src/main/java/java/lang/Class.java --- a/rt/emul/mini/src/main/java/java/lang/Class.java Sun Mar 20 09:05:43 2016 +0100 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java Sun Mar 20 09:25:47 2016 +0100 @@ -1005,7 +1005,21 @@ * @since JDK1.1 */ public Method[] getDeclaredMethods() throws SecurityException { - throw new SecurityException(); + Method[] arr = getMethods(); + int cnt = 0; + for (int i = 0; i < arr.length; i++) { + if (arr[i].getDeclaringClass() == this) { + cnt++; + } + } + Method[] ret = new Method[cnt]; + cnt = 0; + for (int i = 0; i < arr.length; i++) { + if (arr[i].getDeclaringClass() == this) { + ret[cnt++] = arr[i]; + } + } + return ret; } /**