From bc5a6105676ec32c2f6db5ed30d446d1281acc66 Mon Sep 17 00:00:00 2001 From: xhh Date: Thu, 15 Oct 2015 15:17:30 +0800 Subject: [PATCH] Use the first security requirement from the array According to swagger spec, "there is a logical OR between the security requirements". The original behavior was to apply the security requirements as the logic AND and skip security requirements that include more that 1 security. --- .../io/swagger/codegen/DefaultGenerator.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 94f57d144c5c..1ec9aeb2c576 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 @@ -483,16 +483,16 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { securities.add(sr.getRequirements()); } } - if (securities == null) { + if (securities == null || securities.isEmpty()) { continue; } Map authMethods = new HashMap(); - for (Map> security : securities) { - if (security.size() != 1) { - //Not sure what to do - continue; - } - String securityName = security.keySet().iterator().next(); + // NOTE: Use only the first security requirement for now. + // See the "security" field of "Swagger Object": + // https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#swagger-object + // "there is a logical OR between the security requirements" + Map> security = securities.get(0); + for (String securityName : security.keySet()) { SecuritySchemeDefinition securityDefinition = fromSecurity(securityName); if (securityDefinition != null) { if(securityDefinition instanceof OAuth2Definition) { @@ -503,7 +503,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { oauth2Operation.setFlow(oauth2Definition.getFlow()); oauth2Operation.setTokenUrl(oauth2Definition.getTokenUrl()); oauth2Operation.setScopes(new HashMap()); - for (String scope : security.values().iterator().next()) { + for (String scope : security.get(securityName)) { if (oauth2Definition.getScopes().containsKey(scope)) { oauth2Operation.addScope(scope, oauth2Definition.getScopes().get(scope)); }