Merge pull request #455 from Yilinwang/fix-flaky

sort getMethods for deterministic iteration order
This commit is contained in:
Lukasz Lenart
2020-12-07 13:09:53 +01:00
committed by GitHub
@@ -35,6 +35,7 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.zip.GZIPOutputStream;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -410,7 +411,9 @@ public class JSONUtil {
public static Method[] listSMDMethods(Class clazz, boolean ignoreInterfaces) {
final List<Method> methods = new LinkedList<>();
if (ignoreInterfaces) {
for (Method method : clazz.getMethods()) {
Method[] classMethods = clazz.getMethods();
Arrays.sort(classMethods, (a, b) -> a.toString().compareTo(b.toString()));
for (Method method : classMethods) {
SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
if (smdMethodAnnotation != null) {
methods.add(method);
@@ -421,7 +424,9 @@ public class JSONUtil {
// order encountered
JSONUtil.visitInterfaces(clazz, new JSONUtil.ClassVisitor() {
public boolean visit(Class aClass) {
for (Method method : aClass.getMethods()) {
Method[] classMethods = aClass.getMethods();
Arrays.sort(classMethods, (a, b) -> a.toString().compareTo(b.toString()));
for (Method method : classMethods) {
SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
if ((smdMethodAnnotation != null) && !methods.contains(method)) {
methods.add(method);