From 0968905bb792df3a2b5064a22fbc84f890beff87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pejchal?= Date: Tue, 9 Jun 2020 12:19:25 +0200 Subject: [PATCH] DWR-660 retain member order in generated scripts between runs - sort method names inside dwr interfaces so that content doesn't change between application runs - allows consistent content hashing --- .../org/directwebremoting/impl/DefaultRemoter.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/impl/main/java/org/directwebremoting/impl/DefaultRemoter.java b/core/impl/main/java/org/directwebremoting/impl/DefaultRemoter.java index d955a2701..0810beea1 100644 --- a/core/impl/main/java/org/directwebremoting/impl/DefaultRemoter.java +++ b/core/impl/main/java/org/directwebremoting/impl/DefaultRemoter.java @@ -1,6 +1,8 @@ package org.directwebremoting.impl; import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.Comparator; import java.util.Map; import java.util.Map.Entry; @@ -64,6 +66,18 @@ public String generateInterfaceJavaScript(String scriptName, String indent, Stri Module module = moduleManager.getModule(scriptName, false); MethodDeclaration[] methods = module.getMethods(); + Arrays.sort(methods, new Comparator() + { + @Override + public int compare(MethodDeclaration m1, MethodDeclaration m2) + { + int i = m1.getName().compareTo(m2.getName()); + if (i != 0) { + return i; + } + return Integer.compare(m1.getParameterTypes().length, m2.getParameterTypes().length); + } + }); for (MethodDeclaration method : methods) { String methodName = method.getName();