From c2a1720972a56a70f0d862c9c1618e9c49d976f4 Mon Sep 17 00:00:00 2001 From: Benjamin Douglas Date: Mon, 1 May 2017 00:26:35 -0700 Subject: [PATCH] Fix hasMore field and order consistency of authMethods (#5516) The hasMore field of the global authMethods was broken due to sorting after setting that field. The sort order for per-operation authMethods was not guaranteed to be consistent across runs because it didn't do sorting. This change fixes those issues by always sorting and setting the hasMore field post-sort. --- .../java/io/swagger/codegen/DefaultCodegen.java | 17 ++++++++++++++++- .../io/swagger/codegen/DefaultGenerator.java | 7 ------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index dee8caaadd3..ef1c45e5e18 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -48,6 +48,7 @@ import io.swagger.models.properties.RefProperty; import io.swagger.models.properties.StringProperty; import io.swagger.models.properties.UUIDProperty; import io.swagger.util.Json; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -2689,9 +2690,23 @@ public class DefaultCodegen { } } - sec.hasMore = it.hasNext(); secs.add(sec); } + + // sort auth methods to maintain the same order + Collections.sort(secs, new Comparator() { + @Override + public int compare(CodegenSecurity one, CodegenSecurity another) { + return ObjectUtils.compare(one.name, another.name); + } + }); + // set 'hasMore' + Iterator it = secs.iterator(); + while (it.hasNext()) { + final CodegenSecurity security = it.next(); + security.hasMore = it.hasNext(); + } + return secs; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 665b6dfd5dd..ea163bee42c 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -625,13 +625,6 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { bundle.put("modelPackage", config.modelPackage()); List authMethods = config.fromSecurity(swagger.getSecurityDefinitions()); if (authMethods != null && !authMethods.isEmpty()) { - // sort auth methods to maintain the same order - Collections.sort(authMethods, new Comparator() { - @Override - public int compare(CodegenSecurity one, CodegenSecurity another) { - return ObjectUtils.compare(one.name, another.name); - } - }); bundle.put("authMethods", authMethods); bundle.put("hasAuthMethods", true); }